PERFORMANCE NOTES for DRIFT DHIKR INTERACTIVE by Dave Seidel (2005) - live performance realizations by Art Hunkins. Drift Dhikr Interactive is a live-performance rendition of Dave Seidel's Drift Dhikr (Combination Study 2) for Csound. The original scorefile, along with recording and commentary, can be found at http://www.mysterybear.net/article/12/drift-dhikr. Study of these source materials is highly recommended, as live performance of Drift Dhikr Interactive is intended to model after the original work. Drift Dhikr was composed in Csound, a software sound synthesis program; and Drift Dhikr Interactive is performable in several current incarnations of Csound4. These versions, all free downloads, are: Maldonado's CsoundAV (http: www.csounds.com/CsoundAV), Lazzarini's MyCsound4 (http://www.nuim.ie/academic/music/musictec/csound) and Ramsdell's csoundgbs/flCsound (http://sourceforge.net/project/showfiles.php?group_id=81968) - both console and simple GUI (flCsound) mode. All three Csounds are prebuilt for Windows systems. The new Csound-5beta (Windows - same URL as Ramsdell above, but part of Gogins' CsoundVST package) is also capable of performing these realizations, though only with ASIO soundcard drivers. (Normally ASIO drivers are found only with multi-channel soundcards; however, stereo cards can use the free, handy ASIO4ALL driver 2.6 or later, located at http://www.asio4all.com.) Various Csound binaries are also built for Linux and various Mac OS's; they can be found at http://www.csounds.com (under Execs). Some of these have known issues with FLTK display and/or real-time audio and MIDI; but they may well work with some or all versions of Drift Dhikr Interactive. The performer must enable his/her chosen (Windows) Csound "variety" under CsOptions in the selected performance (.csd) file (default is CsoundAV); any other versions must be commented out by inserting a semicolon at the beginning of their line. CsOptions flags for Linux are similar to those for MyCsound4 and csoundgbs/flcsound ("other Csound4's"), except that the audio output device flag (-o) must be specified in a way unique to Linux. The performance model - following the original Drift Dhikr - can be described as follows: A sonority, comprised of combination and difference tones related to two sine waves in a simple frequency ratio (originally 3/2), fades in. This sonority soon begins to glide slowly and inexorably to a final pitch ratio of 2/1 (with reference to the same base frequency). The sonority then fades out. To this basic progression and framework, the interactive version adds two *options*: 1) a delicate "harmonic glissando" effect which fades in prior to the principal sonority, sustaining throughout and dissolving a) once the 2/1 pitch ratio is reached (and prior to its fade), b) together with the principal sonority, or c) only after the principal sonority dissipates; 2) one or two "stop points" along the glide, representing points of relative consonance, where the glide pauses before continuing further in the same direction (no "doubling back" allowed). In addition to dwelling on these "stop points," the performer may also prolong the areas of initial and final pitch ratio. All movement is evenly paced and gradual. Play time of the original Glide Dhikr is 9 minutes, though longer lengths are highly desirable. As a result, 9 minutes should be regarded as an appropriate *minimum* length for an interactive rendition. (The principal challenge, particularly in the MIDI versions, is to move the controls at a slow and steady rate without jerking. Longer-travel pots and sliders will facilitate this.) There are twelve different versions of Glide Dhikr Interactive. All are in stereo. Four basic versions use on-screen windows and mouse only, no MIDI controllers. The other eight require two to four (optionally five) controllers; these bear the "m" suffix (e.g., dhikrm.csd). The "+" suffix indicates a *choice* of initial frequency ratios other than the basic 3/2, while "3" in association with "m" allows pitch glide to be handled by up to three controls instead of one. (Besides giving longer potential travel to the controls, these versions allow for one or two brief "stop points" to be specified by the performer.) The fact that MIDI versions of Drift Dhikr Interactive can be performed with *only two controllers* - one an amplitude fader, the other a frequency "glider" - presents interesting performance options: 1) Use of a basic MIDI keyboard with only an overall (channel) volume controller (controller 7) and modulation wheel (controller 1); 2) a Korg KAOSS Pad (X/Y MIDI controller); or 3) any simple X/Y joystick (the simplest ones are best). For this last option, and to convert joystick data to MIDI (which is required), you need the handy, free MIDI Joystick v1.1 utility found at: http://members.magnet.at/hubwin/midi.html (MDJSTK11.ZIP). In addition, you must install the (free) MIDIYoke MIDI "patch cable" driver found at http://www.midiox.com. (Note that for this application you do *not* need to install MIDIOx.) In MIDI Joystick, set the X and Y axes to Channel 1, the Y axis Value to "reverse," and the controller numbers to whatever you intend to choose on the .csd performance screen (controller 1 for X and 7 for Y will match the defaults). Select MIDI Yoke Junction 1 as "Out" and also as MIDI Input port in your performance file. (See the Addendum below for a further performance option that permits control of the harmonic glissandi with joystick buttons. For a very basic, if awkward, press-and-hold joystick Button A for harmonic glissandi in dhikrmh.csd and dhikrm+h.csd, set MIDI Joystick Button A to Note, Channel 1, Value Down = 1 and Value Up = 0.) All versions include an adjustable Base Frequency reference between 200 and 600Hz (default = 240Hz). All versions also include an on-screen display of the *percentage* distance travelled between the opening and closing frequency ratios. This view is particularly helpful in identifying and anticipating the relatively consonant "stop points" along the way. In the multiple frequency slider versions ("3" suffix), these selected "stop points" may be preset as slider endpoints (they too are expressed as a percentage). Be sure that the second "stop point" percentage is higher than the first, in order to continue with the following control in the same direction. Unused stop points are set to 100%. It is probably best to divide the glide pitch range into fairly equal percentages; otherwise, the control pot/slider rate of change may not be consistent. In the MIDI "h" versions (optional harmonic glissandi), you have the option of assigning the harmonics a MIDI slider, or using the ALT(ernate) Start/ Stop Harmonics checkbox along with a preset (ALT) On/Off Time (necessarily the same value for both On and Off). The Off Time cannot be changed once the sound has begun. There are two additional methods for starting and stopping the harmonic glissandi as well. Instead of clicking the on-screen checkbox, one can press any available MIDI button that can send a MIDI on and off message on channel 1. (This is the equivalent of holding down any key on a MIDI keyboard - which, if desired, can also function as a Start/Stop Harmonics control.) This may be a more convenient way for the performer to control the harmonics as there would then be no necessity actually to "perform" on the *computer*. Programmed buttons also permit the basic harmonic glissandi versions to be performed on an X/Y joystick, in conjunction with MIDIYoke (see above). When multiple buttons are available, program one with the "Start" message, another with "Stop." Using a single button for "Start/Stop Fundamental" (Note On/Off) will require holding the button down during much of the performance, unless the button can be set to "toggle" between On and Off (which is preferable). The appropriate SysEx MIDI data string for Note On, channel one is (in hex) "90 00 01"; for Note Off, "90 (or 80) 00 00". (Buttons on the Peavey PC 1600[x] can be programmed with these MIDI messages, for example.) Otherwise, "NoteOn" event type can be selected, along with any note name or number with a positive velocity value - channel 1. (If required, "NoteOff" with same note name/number, or "NoteOn" with same note name/number *and velocity equals zero* - also channel 1 - terminates the event. "Press/release" buttons do this automatically.) Unfortunately, the limitations of MIDIYoke may require a single button to be used with an *X/Y joystick* - held down for the duration of the harmonics, as mentioned above. (However, see the Addendum below.) Non-MIDI "h" versions allow for independent selection of On and Off Times for harmonics, and Off Time may be changed after the sound has started. In the MIDI versions, be sure to turn all pots/sliders to zero before running the performance file. (Otherwise tones may initialize as "on" - which is not desirable.) Zero position for a joystick is in the lower left corner (see further below on joystick performance). Specifics of the various versions follow. DHIKR.CSD, DHIKR+.CSD, DHIKRH.CSD, DHIKR+H.CSD -- No MIDI controllers required; all performance is from an on-screen window with mouse click (and/or CRSR movement). Glide Time (approximately in seconds) indicates any lag time from one *pitch* slider value to another (variable during performance). "+" versions give option of 11 initial frequency ratios. (These ratios represent semitones of Wendy Carlos' "Super Just" just intonation scale; see http://www.microtonal-synthesis.com/scale_carlos_super_just.html.) "H" versions add optional harmonic glissando effect. Dhikr.csd most closely parallels the original Glide Dhikr, using a 3/2 initial frequency ratio. DHIKRM.CSD, DHIKRM+.CSD, DHIKRMH.CSD, DHIKRM+H.CSD -- Require two external MIDI controllers (pots or sliders). Additional controller for "h" suffix versions (on-screen control of harmonic glissandi also an option - ALT Stop/Start, ALT On/Off Time). Controller numbers are specified on-screen. (Make sure that all MIDI controllers transmit on channel 1.) Otherwise same as basic series above. NOTE: All MIDI versions of Drift Dhikr Interactive provide for two additional controller configurations that may be rarely encountered. 1) ALL CONTROLLERS USE THE SAME CHANNEL, BUT NOT #1: Locate the line toward the beginning of the performance file - "#define CHAN #1#", and change the channel number to the one you need (from 2-16) with any text editor, such as Notepad. (This revision is active until you change it again.) Note that the "#" characters around the channel number must remain. 2) EACH CONTROL (of a hardware bank of 4-16) USES A UNIQUE CHANNEL, BUT WITH (channel volume) CONTROLLER #7: For this situation, either the overall Amplitude Controller # box (when applicable) or the Bank 1 1st Controller box on the performance screen includes a special, coded controller number. To enable this layout: For the Amp Controller #, select 128; for Bank 1 1st Controller #, select -1. All controllers will now be on consecutive channels, starting with the Banks, then the Amp Controller, and lastly any other individual controllers. DHIKRM3.CSD, DHIKRM+3.CSD, DHIKRM3H.CSD, DHIKRM+3H.CSD -- Require two to four external MIDI controllers (pots or sliders). One to three of these controllers cover (divide up) the frequency glide range. Specify the *1st* Frequency Controller # of up to three contiguous glide controllers you intend to use, on-screen. "Stop points" select the percentage of range covered by each pot/slider. (Each successive slider begins where the last ended.) Additional controller optional for "h" suffix versions (on-screen control of harmonic glissandi also possible). Otherwise same as previous MIDI series. ADDENDUM: PERFORMING DHIKRMH.CSD AND DHIKRM+H.CSD WITH JOYSTICK CONTROLLERS A special setup makes it possible to perform dhikrmh.csd and dhikrm+h.csd with only an X/Y joystick - while turning the harmonic glissandi on and off with the two joystick buttons. This produces a full-featured performance entirely using a simple joystick. (The original, basic IBM style works best - with spring action defeated.) Here are the essential steps (these instructions are an expansion of the joystick info above): 1) The MIDIYoke driver must be enabled for a minimum of two ports. (Do/check this in Control Panel/Sounds and Multimedia/Devices/MIDI Devices and Instruments/MIDI Yoke Junction/Properties/Settings). 2) In MIDI Joystick (Settings), set the X axis to Controller, Channel 1 and Data to 7. Set the Y axis to Controller, Channel 1 and Data to 1 (this will match on-screen defaults). Also, set the Y axis Value to "Reverse." 3) In MIDI Joystick, set Button A to Note, Channel 1, Data to 0, Value Down to 1 and Value Up to 2. Set Button B to Note, Channel 1, Data to 0, Value Down to 0 and Value Up to 0. (Note: Do *not* set Button B Value Up to 2.) 4) In MIDI Joystick, select "Out" as MIDI Yoke Junction: 1. Assuming your 2-axis, 2-button joystick is correctly installed under Control Panal/Gaming Options, press "Start." Moving the joystick, you should observe the MIDI output of X and Y axes. 5) Install and run MIDIOx. Under Options/Data Mapping, load the file called dhikrmhJoy.oxm included in this distribution. After making sure "Turn Map On" is checked, click OK. 6) In MIDIOx, under Options/MIDI Devices, select MIDI Yoke Junction: 1 as MIDI Input, and MIDI Yoke Junction: 2 as MIDI Output. 7) When running dhikrmh.csd or dhikrm+h.csd, select MIDI Yoke Junction: 2 as MIDI In Device. 8) Finally, make sure your joystick is well calibrated (check this in Control Panel/Gaming Options/Properties). Observe in MIDI Joystick whether both X and Y axes output values *all the way* from 0 to 127 (starting at 0 is important for the X axis, and both 0 and 127 values are crucial for Y). Do not use any joystick to perform Dhikr that fails to meet these criteria. 9) In performance, the joystick starts in the lower left corner, moves to the lower right, then all the way up, and lastly to the far left. All beginning and end points are extreme (0 and 127 MIDI values). The joystick should be moved to the lower left corner before the performance file is opened. Joystick button A should now turn on harmonic glissandi, and button B turn them off. The on-screen ALT On/Off Time continues to determine fade in and out durations as discussed above. Dave Seidel - dave at mysterybear dot com http://www.mysterybear.net/ Art Hunkins - abhunkin at uncg dot edu http://www31.brinkster.com/abhunkins July/August 2005