Symphony By Numbers. Symphony By Numbers is a work of Visual Music. Visual Music can be

Similar documents
Revision 4.1.x /2.x.x [ ] Creating Media for Modulo Player & Kinetic

MEDIA RELATED FILE TYPES

3.Constructors and Destructors. Develop cpp program to implement constructor and destructor.

Digital Audio Basics

Export Audio Mixdown

MUSICAL BEHAVIORS: LAYERED COMPOSITIONAL ALGORITHMS AS PLUGINS FOR THE TRANSFORMATION ENGINE

Chapter X Sampler Instrument

Inserting multimedia objects in Dreamweaver

Memory and C/C++ modules

Fundamental of Digital Media Design. Introduction to Audio

Export a Quicktime movie with 5.1 Surround sound in Premiere Pro

Computing in the Modern World

HTML 5 and CSS 3, Illustrated Complete. Unit K: Incorporating Video and Audio

Basic Editing in Adobe Premiere

QuickTime 4 Reference. For Macintosh and Windows

User's Guide.

VISUAL QUICKSTART GUIDE QUICKTIME PRO 4. Judith Stern Robert Lettieri. Peachpit Press

EXCELLENT ACADEMY OF ENGINEERING. Telephone: /

Computer Science (330)

The AiM Codec for Windows and OSX

Meeting Visuals UCF Toolkit User Guide

Visual Profiler. User Guide

08 Sound. Multimedia Systems. Nature of Sound, Store Audio, Sound Editing, MIDI

CSC 101: Lab #8 Digital Video Lab due date: 5:00pm, day after lab session

Course Text. Course Description. Course Objectives. StraighterLine Introduction to Programming in C++

Adobe Acrobat Family Digital editions

Page 1 of 4. Sound Editing Course Outline Duration: 5 Days

Apple Core Audio Format Specification 1.0

Audio Queue Services. Dave

The Design and Implementation of Multimedia Software

8/19/2018. Web Development & Design Foundations with HTML5. Learning Objectives (1 of 2) Learning Objectives (2 of 2) Helper Applications & Plug-Ins

3 Sound / Audio. CS 5513 Multimedia Systems Spring 2009 LECTURE. Imran Ihsan Principal Design Consultant

Introducing EyeTV 200

Final Cut Studio Workflows

M-570 USB 4-CH Wireless. Sound Box

Media Formats. Sound. Image. Video. WAV (uncompressed, PCM) MIDI. BMP XML dia MPEG

Preparing Video Files for the Aja Ki Pro

Principles of Audio Coding

SI M Audio, Navigation, Monitors, Alarms, SRS

Memory and C/C++ modules

Compilation/linking revisited. Memory and C/C++ modules. Layout of C/C++ programs. A sample C program demo.c. A possible structure of demo.

Requirements. Left To Implement. Design. Extended Plugin Interface

Operating Instructions

SoundCode Exchange MXF Users Guide

Program a Game Engine from Scratch. Development Checkpoint #8. Sprite & Resource Manager

A project is the basic file type in Cubase, in the same way that a document is the basic file type in Microsoft Word.

Trees, Part 1: Unbalanced Trees

Editor s toolkit pro U s e r s G u i d e

Embedding and linking to media

Cut Film and video editing term that defines the immediate and complete change (or transition) from one image to another

MPEG-4 Structured Audio Systems

ASSIGNMENT 5 Objects, Files, and a Music Player

TrainingCentre Getting Started with the Universal

DigiPen Institute of Technology

3.01C Multimedia Elements and Guidelines Explore multimedia systems, elements and presentations.

Compressor 3.5 Review Questions

Reminder: compiling & linking

Reference8 Pro music player Fast Operation Guide

Version x June 2016

SOFTWARE AND MULTIMEDIA. Chapter 6 Created by S. Cox

Problem Set 6 Audio Programming Out of 40 points. All parts due at 8pm on Thursday, November 29, 2012

Digital Documentaries. Students as directors of their own learning

The RANCH RenderFarm User Guide Part II the RANCH for Lightwave 3D

Lecture 16 Perceptual Audio Coding

Podcasting With GarageBand 09

Table of Contents. iii

Covering the Basics. Lesson 1

New Features in Digital Performer 5.13

National Aeronautics and Space Admin. - FTP Site Statistics. Top 20 Directories Sorted by Disk Space

GUIDELINES FOR THE CREATION OF DIGITAL COLLECTIONS

AVC-Intra QT v1.0 Manual

8/31/2015 BITS BYTES AND FILES. What is a bit. Representing a number. Technically, it s a change of voltage

the gamedesigninitiative at cornell university Lecture 15 Game Audio

Graphical User Interfaces. QuickTime for Java. Presentation of the Semester Thesis' Toolkit within the Context of Graphical User Interfaces (MSc.

Matrox Mojito MAX. Release Notes (Mac OS version) April 22, 2015 USO RESTRITO Y

heise Online - FTP Site Statistics Top 20 Directories Sorted by Disk Space

Detailed Installation Guide. Version 1.0

Multimedia. File formats. Image file formats. CSE 190 M (Web Programming) Spring 2008 University of Washington

QuickTime Pro an inexpensive (but clunky) solution

Batch Renderer for DAZ Studio

The field of video-editing software is getting pretty crowded these days.

The AbleDiskTool Utility

HTML5: MULTIMEDIA. Multimedia. Multimedia Formats. Common Video Formats

Bits, bytes, binary numbers, and the representation of information

Streaming Technologies Glossary

Video Modeling & Video Self-Modeling: Research to Practice

Introduction to Linked Lists

Computer Audio Setup Guide

Autodafe. WaveNation for Kontakt V1.0

AVID 2K Digital Cinema Package - DCP Creation Workflow Using OpenDCP

ABook Reader Instruction Manual

ANDROID APPS DEVELOPMENT FOR MOBILE AND TABLET DEVICE (LEVEL II)

freetunes Engelmann Media GmbH

COMP : Practical 11 Video

by Nettrice R. Gaskins

Quicktime Player Error Codec For Avi Per

Jim Lambers ENERGY 211 / CME 211 Autumn Quarter Programming Project 2

Additional Information about Finale 2007 for Macintosh Finale 2007 Read Me, July 2006 Copyright 2006, MakeMusic, Inc.

Pro Tools LE 7.1.2r2 on Mac for Pro Tools LE Systems on Mac OS X 10.4 ( Tiger ) Only

Frequency Tutor Users Guide

Transcription:

Symphony By Numbers Visual Music Symphony By Numbers is a work of Visual Music. Visual Music can be defined in a number of different ways: The use of musical structures in visual imagery. Translating sound or music into a visual representation. Translation of music to painting, as in the work of Kandinsky or Klee. A form of intermedia, an interdisciplinary art, combining music and cinema. Symphony By Numbers is an example of the last above, an intermedia work. It uses abstract animation combined with computer music to create an art that is neither music nor visual art alone but an alloy of both, where neither can be considered to be accompaniment to the other. The intention is to create a work that fails if it cannot be both seen and heard. The compositional technique owes much to compositional practices of music: rhythm, motivic development, counterpoint, cadential resolution, dissonance, consonance, hocketing, and isorhythm. It is in a number of movements that are fairly independent and distinct but contribute to the integrity of the whole, much like a symphony. Each movement has its own visual and sonic material with the occasional reference to other movements.

The Software Two applications were developed to create Symphony By Numbers. They are both command-line applications written in the C language. As they currently exist, they are not cross-platform. They can only be compiled on Mac OS X. csynth performs audio synthesis and outputs audio files in the aiff format. The file can 16bit integer or 32bit float, any number of channels. cdraw renders abstract animation into a Quicktime movie, using either the Apple animation codec (lossles), or the H264 codec. The movie can be of any arbitrary size. cdraw uses the Mac OS Quartz 2D framework. They both require the use of a plugin that the user creates. They generate an output file that is a rendering, or performance, of the event list that is passed to them. Both read the same event list, an xml file that lists the time-ordered processes to be performed. IntermediaXML The xml schema used for the event lists has this basic form: <score> <event> <audio> <name></name> <start></start> <duration></duration>

</audio> <video> <name></name> <start></start> <duration></duration> </video> </event> </score> The outer structure, the <score> level, can encompass one or more <event> structures. An event can have one or more <audio> or <video> structures. The <event> is not required to have both <audio> and <video> entries; it can have just one of them. Any <audio> or <video> entry will have at least the three entries shown in the above layout. As the schema is designed timebased art forms, any event will have a start time and a duration, defined by the <start> and <duration> tags. The <name> tag is necessary to uniquely identify the instrument, process, or function that is used for that specific event. Specific <audio> or <video> entries may have more sub-entries than just these three; they may have as many are necessary to fully specify the parameters of a process. The tags in an <audio> (or <video>) tag all have a type attribute to specify the data type of the value associated with that tag. The five types are character string, integer, float (a decimal number), array, a 2D array. Below is an example of a simple score. <score> <event> <video> <name type= string >Circle</name> <start type= float >0.0</start> <duration type= float >1.0</duration>

<alpha type= array >0.0, 1.0, 1.0, 0.0</alpha> </video> <audio> <name type= string >NoiseFilter</name> <start type= float >0.0</start> <duration type= float >1.0</duration> <size type= int >1024</size> <spectrum type= array2d > 0.0 0.0, 0.0, 800.0, 1.0, 22050.0, 0.0 1.0 0.0, 0.0, 1800.0, 1.0, 22050.0, 0.0 </spectrum> </audio> </event> </score> Plugin Design and Use The absolute minimum necessary for a functioning plugin for either csynth or cdraw are a c struct to define the data and three associated functions. A plugin initialization function would also be required. As an example, the following describes a simple sine wave generator (or oscillator). The only bit of data that is needed from one output sample to the next is the phase of the sine wave. A struct to maintain that data could be done like this: typedef struct { float theta; SinOsc; The three functions necessary are a constructor, a destructor, and a runner. csynth, when looking for the functions to call, takes the name from the xmal score file and appends _ctor, _dtor, and _run to get the proper function names. The functions therefore need to be named correctly. It is best to name

the struct exactly as you want to name the instrument and then name the functions accordingly. Below are the appropriate function definitions. SinOsc* SinOsc_ctor(CFMutableDictionaryRef args) { SinOsc* unit; unit = (SinOsc*) malloc(sizeof(sinosc)); unit->theta = 0.0; return unit; void SinOsc_dtor(SinOsc* unit) { free(unit); return; void SinOsc_run(SinOsc* unit, float* data, float percentage, CFMutableDictionaryRef args, int chans) { int i; float factor = 65536.0/44100.0; float out, freq; Arg arg; arg = *((Arg*)CFDictionaryGetValue(args, CFSTR("freq"))); freq = arg.arg_float; out = wavetable[(int)(unit->theta+0.5)]; unit->theta += freq*factor; for(i = 0; i < chans; i++) data[i] = out; return; The plugin initialization function follows. It is only needed here to fill the wavetable that SinOsc uses for its sine values. This function will be called when the plugin is first loaded. This is exactly what it needs to be named. void initplugin() { int i; for(i = 0; i <= 65536; i++) { wavetable[i] = sin(((float)i/65536.0)*2.0*pi);

return; A note entry in a score for this instrument would resemble this: <audio> <name type= string >SinOsc</name> <start type= float >0.0</start> <duration type= float ></duration> <freq type= float >440.0</freq> </audio> The plugin shown here is very minimal and not very interesting, but it does illustrate the essentials. It needs to be a shared object file, or a dynamic library. What csynth and cdraw do csynth and cdraw are both command-line applications. The basic arguments are essentially the same. In a Terminal window, if csynth is typed and followed by the return key, this is printed: usage: csynth out.aiff eventlist.txt options options: -p plugin file (.so) -s sound samprate (44100, 48000) -f sound format (int16, float32) -b begin time (defaults to 0.0) -e endtime (defaults to score endtime) -a amplitude scaler (defaults to 1.0) -c number of channels (defaults to 2)

For cdraw: usage: cdraw movie.mov eventlist.txt options options: -p plugin file (.so) -h movie height -w movie width -f movie framerate (10, 15, 24, 25, 30) -c movie codec (raw, h264, mpg4, anim) -b movie begin time (defaults to 0.0) -e movie endtime (defaults to score endtime) This shows what the command looks like and the available options, which are specific to the needs of the application. The eventlist.txt refers to the xml file shown earlier. It is also necessary to specify the plugin shared object file (.so extension). When csynth (or cdraw) are run, they parse the xml file and create a data structure consisting of a Core Foundation Dictionary for each <audio> or <video> entry in the xml file. csynth will ignore <video> structures and cdraw will ignore any <audio> tags. These are time-sorted and placed in a queue so that csynth (or cdraw) can perform them in the appropriate order and juncture. Using the value of the <name> tag, at the proper place in the performance, the relevant instrument, or function is called. The first time, the constructor function is called followed by the run function. The constructor allocates the required memory and sets any values needed. The run function renders the current frame. On succeeding frames, the run function function is used. On the last frame of a given instrument, the destructor is also called.

Contents of the DVDs There are two DVDs included. One of them is a standard NTSC, region-free disk that should play in virtually any dvd player. It has a stereo version of Symphony By Numbers. The other DVD is an archive disk. It has a high resolution copy of the Quicktime movie of Symphony By Numbers. 1280 by 720, 25 frames per second, H264 compression, quadraphonic (4-channel) sound, 16 bit, 44.1kHz sample rate. The archive disk also has the source code for csynth, cdraw, and the plugins for both. Make files are included in the folders. The lisp source for the algorithmic score generation is included as well.