auditory streaming: hw3

Due 11:59pm on Wednesday, October 20 in the Homework Factory

Turn in a binaural sound file which demonstrates the auditory streaming illusion. Here's a visual analogy to the illusion you'll be dealing with:

(shapes = timbres) (colors = pitches)


Fire up the example 220a/ck/hw/ (using jack and miniAudicle) and study how it selects musical attributes (pitches, pitch register, timings, loudness, location, instrument). It plays an accelerating cycle of four pitches with everything else held constant.

(the spectogram shows each note's attack and its first three harmonics)


The example loops through 3 instruments while playing a cycle of 4 pitches. But out-of-the-box, the example plays 3 instruments which are absolutely identical and sound as if played with a single instrument (monophonic). There is no sense of breaking into multiple streams (polyphonic) because the streaming illusion requires different sounds which can be “grouped by similarity.” As shipped, there is only one group of sounds and therefore only one stream. Modify your copy of the file to slightly disturb the similarity of the 3 instruments. At a faster speed in the accelerating tempo, you will begin to hear a descending pitch line as your changed sound, if distinct enough, aliases against the ascending pitch cycle. Try modifications to individual parameters and listen to whether your modifications are sufficiently salient to cause grouping:


Subtle parameters beyond those above are also available in the instruments and will have streaming potential. E.g., switch the instrument to BlowHole and vary it's reed stiffness parameter which you can test by adding the following snippets of code (in the appropriate places).

[ 0.7, 0.7, 0.7 ] @=> loud; // set to this loudness

[ 10.0, 30.0, 100.0 ] @=> float reed[]; // per-instrument amount, 0.0 – 127.0

50::ms => dur minIoi; // accelerate to this ioi

inst[i].controlChange( 2, reed[i] ); // reed stiffness

The use of controlChange in the line above is an example of how to set parameters in Stk instruments which are intended for MIDI controllers. That format falls apart when instruments also incorporate non-MIDI parameters. BlowHole can vary it's hole “vent size” parameter but does it directly rather than through a controlChange message. The parameter “vent” is special to BlowHole and you'll need to message the BlowHole class itself by making that your array type rather than StkInstrument. Also note the parameter range which is 0.0 – 1.0 rather than the MIDI-style range above.

BlowHole inst[nInsts];

[ 0.2, 0.2, 0.2 ] @=> loud;

[ 0.0, 0.1, 1.0 ] @=> float vent[]; // per-instrument amount, 0.0 – 1.0

inst[i].vent( vent[i] ); // tonehole

Turn in

A physical model synthesis study which demonstrates auditory streaming of any kind. Use four channels and reduce them to binaural stereo as in hw2. We'll be listening to hear the effect of monophonic alternation which blossoms into polyphonic voices. In addition, make it a musical study in which the illusion is present but it's not the only interest. Concoct at least one big musical change (your choice of what that is, but it should be obvious to the listener) and shoot for a total duration of under 1 minute. The chuck code that signals the change can be borrowed from 220a/ck/hw/

By now, you've inferred the file names: Library/Web/220a/hw3.html, which has links to Library/Web/220a/hw3.wav and Library/Web/220a/