DOC PREVIEW
Columbia COMS W4115 - SPINNER White Paper

This preview shows page 1-2 out of 7 pages.

Save
View full document
View full document
Premium Document
Do you want full access? Go Premium and unlock all 7 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 7 pages.
Access to all documents
Download any document
Ad free experience
Premium Document
Do you want full access? Go Premium and unlock all 7 pages.
Access to all documents
Download any document
Ad free experience

Unformatted text preview:

CS 4115 - SPINNER White PaperWilliam [email protected] [email protected] [email protected] [email protected] 23, 20031team leaderChapter 1Introduction1.1 BackgroundSPINNER is a general motion control language designed to control SPIN: a performance artinstallation. Slowly revolving orange wheels are projected onto a hanging grid of translucentPlexiglas circles. The wheels act individually and in groups, joining forces and breakingaway in an evolving dance of whole and parts, synchrony and disorder. In SPIN, sounds areproduced as if each disc were a phonograph record. As each disc spins fast or slow, backwardsor forwards, speeding up or slowing down, its sound follows accordingly. SPIN was created bysound designer and multimedia artist Ben Rubin and presented at the Bumbershoot VisualArts Exhibition in Seattle, Washington from August 26th to September 1st, 2003.SPIN is built in the MAX/MSP programming environment; a graphical environment formusic, audio, and multimedia. The basic environment that includes MIDI, control, userinterface, and timing objects is called Max. Built on top of Max are MSP, a set of audioprocessing objects that do everything from interactive filter design to hard disk recording,and Jitter, a set of matrix data processing objects optimized for video and 3-D graphics.To originally control and coordinate the movement of each of SPIN’s six discs, a simple,asynchronous, linear scripting language - SPINscript - was created. This language is com-prised of a number of initialization parameters and three simple primitive functions: wait,line and speed. The initialization parameters setup audio (gain, assign sound samples to eachdisc, etc) and define the physics of the system (for example, disc acceleration and decelera-tion). The primitives are used in concert to control and coordinate the motion of each disc.Line tells a particular disc to rotate to a particular angle within a specific timeframe. Speedchanges the linear acceleration of a disc. By using the wait command, a programmer canset discs in motion and then wait a specific time period before issuing the next set of com-1Figure 1.1: SPIN component diagram. SPINNER program read by SPINNER compiler.SPINNER compiler outputs SPINscript which is read by SPIN to control projection of discs.2mands; allowing the discs to move in space according to the direction of the line and speedcommands. SPINscript is asynchronous. Without the wait command, a script attemptingto coordinate disc movement by issuing a series of specific motions would in actuality set adisc into one motion which is exactly the additive result of all the commands issued in thescript for a disc.SPINNER is a new language for SPIN. SPINNER is intended to replace SPINscript asthe primary interface for expressiveness in SPIN and to solve many of the problems thatare inherent in the existing language (see below). SPINNER will generate a file that iscompatible with the existing SPINscript language and is subsequently used to control SPIN.1.2 The ProblemThe original SPINscript language has a number of deficiencies that inevitably limit theexpressiveness of individual disc motion and the potential complexity of disc interaction.1.2.1 Primitive programming modelSPINscript has a strictly sequential control flow. It does not support looping, function callsor jumps. If the user wants to gradually increase the speed of a disc or play the samesequence several times they have to laboriously duplicate the scripting code by hand.Another problem is that SPINscript does not support variables or constants. This leadsto a proliferation of “magic numbers” throughout the script whose intent is impossible todiscern. If the artist wants to increase the speed of an entire sequence by a factor of two,she has to calculate and modify each number by hand. This is one area which makes thelanguage very brittle.1.2.2 Syntax is non-intuitiveSPINscript lines follow the following format:<number>, [disc-]<cmd> <args>;<number>, --wait-- <ms>;<number>, --[comment];Here are some examples:1, 6-speed .50 10000;1, --wait-- 14000;1, ---------------straight up now;3There are several problems with this syntax:1. The first value (1,) is unnecessary. The script language designer has indicated that the<number>, portion isn’t used.2. The disc number that a command operates on is prefixed to the command’s name (eg.6-speed). This syntax is limiting; it does not allow actions on multiple discs, and it isunintuitive.3. Arguments to functions are not bound to the function name.4. The wait command does not have the same syntax as other SPINscript commands. Italmost looks like a comment.5. Comments implicitly indicated by the lack of a keyword after “- -” rather than explicitlystated through their own syntax.1.2.3 Modeling limitationsSPINscript models changing the angles of six independent discs over time. However, thisonly models part of what the artist is trying to achieve. In many of the “scenes” the artistrequires that the behavior of the discs be dependent on each other. For example, a scenemight start out with all discs rotating at different speeds. This goes on for several seconds.Then when two discs happen to both be at 0 degrees rotation, the artist wants both discs tosynchronize their rotation speed.Unfortunately, SPINscript does not have a built-in mechanism to perform this synchro-nization. The artist has to do this calculation manually which is tedious and prone to error.Because of the manual labor involved, scripts must be kept small and simple. This ultimatelylimits the artist’s expressiveness.1.3 Our Goals1.3.1 Improved programming modelWe will support various methods for control flow; loops, iteration, non-recursive functioncalls. We will support integer and floating point variables. Additionally, SPINNER providessome built-in functions and operations and the ability to define new functions and proceduresusing these primitives. For example, we are considering supporting sine, cosine, and tangent4functions in addition to the basic math operations of addition, subtraction, multiplication,and division. Here is an example1:; Start all the discs spinning at different speeds based on sine functionfor i := 1 to 6revolve(i 1 sine(i * 1000));In addition to the for-loop, function call, and variable use, this example also shows howthe disc number will become an argument to the function instead of being part of the


View Full Document

Columbia COMS W4115 - SPINNER White Paper

Documents in this Course
YOLT

YOLT

13 pages

Lattakia

Lattakia

15 pages

EasyQL

EasyQL

14 pages

Photogram

Photogram

163 pages

Espresso

Espresso

27 pages

NumLang

NumLang

6 pages

EMPATH

EMPATH

14 pages

La Mesa

La Mesa

9 pages

JTemplate

JTemplate

238 pages

MATVEC

MATVEC

4 pages

TONEDEF

TONEDEF

14 pages

SASSi

SASSi

16 pages

JTemplate

JTemplate

39 pages

BATS

BATS

10 pages

Synapse

Synapse

11 pages

c.def

c.def

116 pages

TweaXML

TweaXML

108 pages

Load more
Download SPINNER White Paper
Our administrator received your request to download this document. We will send you the file to your email shortly.
Loading Unlocking...
Login

Join to view SPINNER White Paper and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view SPINNER White Paper 2 2 and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?