received from chris brown on aug 16 1995 copyright 743w

From Wed Feb 2 12:04:18 1994 From: "Phil STONE"

Date:2/2/94 Doodz, check this out...I apologize if the formatting sucks; I'll bring nice neat printouts on Thursday, but I wanted you all to get a chance to review this before then...

Hertz Donut

(for n Hubsters, where n is at least 3)

Synopsis: n-note chords will be chosen by group processes, and smooth or quantized curves of MIDI note and pitch bend data will be computed by me and sent to each player to accomplish coordinated movement between the chosen chords.

To play in this piece, you must have a sound-producing device capable of responding to MIDI note and pitch bend commands, and the sensitivity of its pitch bend must be able to be calibrated to +/- one semitone.

At varying intervals of time, I will send out a request, in the form of a MIDI Start. When that request is seen, each Hubster should promptly choose and send me the following information:

- a vote for the next tonic (MIDI note-on in the range of 1-127)

- an interval from whatever tonic gets chosen; Send this as the velocity byte of the tonic note-on message, and pick from the following list; i.e., send me a number between 1 and 18: (notice that lower numbers tend toward consonance)

1) 1/1 2) 2/1 3) 9/5 4) 7/4 5) 5/3 6) 8/5 7) 3/2 8) 10/7 9) 7/5 10) 4/3 11) 5/4 12) 6/5 13) 7/6 14) 8/7 15) 9/8 16) 10/9 17) 17/16 18) 25/24

- a glissando quantization value; (0 = smooth, 1-100 represent divisors of total transition-to-next-chord time) Send this as the data byte of a Program Change message (e.g. C0 33).

After I have received this information from each player, I will compute note and pitch bend data to send back to each player so that we will all converge on a new chord, the intervals of which have been specified by each of you. The path of travel between each player's current note and his target note in the chords is a function of the total travel period (set by me for now) divided by the quantization. If you send me 0 for quantization, I will compute the smoothest path (in note-ons and pitch bends) from your current pitch to the target pitch in the next chord, and send out those note-ons and pitch bends to you at the appropriate time.

Other quantization values will cause more stepwise changes in your pitch - a value of 1 will cause an instantaneous jump to the target pitch; a value of 2 will cause you to spend half of the period at the current pitch, and half at the target; 5 will cause a 5-step change, each step taking 1/20 of the total period, and so on.

You may not play any notes or make any pitch bends directly to your own sound-producing pile of gear. However, program changes or timber modifications are ok. Tasteful post-processing is acceptable if not done so as to destroy the pitch content of the notes played. Generally, timbre should be chosen so as not to disguise pitch content. Each Hubster should control his volume so as to blend with the whole (ulp!) - if you can hear yourself clearly, you're too loud.

We will have to make sure we are in tune. I am deeply sorry about this.

Chord freezing: if, at any time, you hear a chord you like, send MIDI STOP, and the chord will be held if, at any time, you wish a chord to be unfrozen, send MIDI CONTINUE, and the transition to the next chord will begin immediately. in absence of any freeze or unfreeze requests, chords will be held for a (relatively short) sustain period chosen by me.

One requirement for freezing/unfreezing: these events should only be generated by discretionary action (e.g. a button push, a penile strain-gauge interface, whatever) NOT as a result of stochastic processes. In other words, freeze a chord because you like it, not because the Tao says it is time for the chord to be frozen.

If our various sound-producing gear does not respond linearly to pitch bend, pretend I didn't write any of the above.