Music 256b | Music, Computing, and Design II: Mobile Music | Winter 2010

Homework #3: Design Your Own Instrument - Stimmung




homework requirement

described in course wiki


design documents :

old_idea : (1) (2) (3)

new_idea : (1)


source code:

early prototype of old_idea:

final prototype of new_idea:

*improved* final prototype of new_idea (colored markers):



- download the zip files, and run on Xcode with provisioned iPhone connected

- should be used with earphones with mic input or speaker gloves to prevent feedback



readme (new_idea) (rtf) :


key concepts

Implements Karlheinz Stockhausen's Stimmung (1968):

- The original piece is intended for six singers, who sit around a circle and perform overtone-singing on precisely-tuned fundamentals.

- Overtone-singing requires months of practice, but this iPhone instrument helps bring out the desired overtones by:

(1) using a biquad filter (resonator) with a peak placed at the specified overtone frequency

(2) shows real-time frequency spectrum of the output to guide the singer to have the proper vowel shape

Main View Interface:

(1) Specify overtone by aiming the compass. The image is the original drawing of the vowel-square by Stockhausen

(2) "set top": press the button to set the current aim to be the "top" (i.e. vowel "i", the highest overtone specification)

(3) Specify the fundamental note. As in the original composition, a sinusoid (tuned using just intonation) is played at low volume to guide the singers.

Flipside View Interface:

(1) Voice Range: female uses overtones written below the vowels in black, male uses overtones written above teh vowels in color

(2) Overtone Emphasis: the radius used in BiQuad filter

(3) Guide Tone Volume: Adjusts volume on the sine tone

(4) Frequency Spectrum: magnitude vs. frequency plot. Blue marker denotes the fundamental, Red marker denotes emphasized overtone.



(1) At first tried to use the accelerometer to control the filter radius, but tilting the phone affects compass readings so the two were incompatible

(2) The framsize used in the audioCallback is less than the framesize specified when initializing the audio, adversely affecting the rfft function which expects a power-of-2 N.

(3) Using multiple OpenGL views. Tried to understand using multiple contexts or framebuffers, but ended up using a boolean that tracks my current view.

(4) Compass reading seems unreliable and discontinuous...






related work :

- final paper for Music 301c: Analysis on Stimmung by Karlheinz Stockhausen



Jieun's homepage | Jieun's Music 256b page