WHAT'S IN A NAME? for realtime Csound5 (2006) Arthur B. Hunkins A belated 20th anniversary tribute to the Society for Electro-Acoustic Music in the United States GENERAL WHAT'S IN A NAME? is a short, entertaining, performance piece for computer running Csound5. It exists in three versions - Name.csd, Name2.csd and Name3.csd. Name.csd requires a MIDI device with 16 velocity-sensitive keys, buttons or pads. (Actually, only the lower 12 keys/pads need to be velocity- sensitive; see further below.) Name2.csd does not require velocity- sensitivity (though this is not excluded), but an additional MIDI controller is needed - a slider or rotary pot (preferably slider). In this version, the slider specifies velocity for all samples where velocity varies, and may represent a more dependable way of controlling volume. (The slider defaults to controller 7, the overall volume control on many MIDI keyboards.) Name3.csd calls for neither velocity sensitivity nor additional controller; it is performable on *any* MIDI device comprising 16 keys, buttons or pads. Here, variable amplitudes are either randomized or preset by the performer (see additional information below). Name3 is recommended only for situations in which active control of velocity is not feasible. A special version of Name3, called Name3ASC.csd, uses only the ASCII keyboard as controller (no MIDI); another, Name3Keypad.csd, utilizes an external numeric keypad. Both are described at the very end of these instructions. Drum machines with 16 or more pads may also perform Name.csd and Name3.csd, though you'll find setup to be somewhat more difficult. (Such machines usually lack MIDI controllers; thus Name2 is usually not appropriate.) Also, since the sensitivity of drum machine pads is often problematic, mixed results can be expected with Name.csd. Name3, not requiring velocity sensitivity, is the safer choice. (Bear in mind too that drum machines normally transmit on MIDI channel *10* - not the default channel 1 of this composition.) Name2 and Name3 are also performable on a variety of MIDI foot controllers. Doing so is only possible in Windows, in conjunction with MIDIYoke and MIDIOx utilities (free downloads from http://www.midiox.com; install both). The basic foot controller requirement is that its Program Change messages must be organized into, and easily available as *banks of 10*. NameFootController127/128.txm contains operational details for this "version"; view them in any text editor (where the imbedded "map" can also be modified). NameFootController127/128.oxm is the same file (non-editable) without the comments. The "127" variant is for foot controllers that number program changes from 0-127; the "128" variant for a range of 1-128. All four maps are included with this distribution. Click on one of them to open MIDIOx, which must run (but not be highlighted) during performance. (Other pointers: open MIDIOx before Csound; select MIDI input/output devices in MIDIOx, with MIDIYoke 1 as output; enable MAP in the MIDIOx status bar; choose MIDIYoke 1 as MIDI input in Name2/Name3.) Finally, there are two special versions of Name3: Name3ASC.csd uses only the ASCII keyboard (no MIDI), and Name3Keypad.csd only an external numeric keypad (also no MIDI). Csound5 is a software sound synthesis program available for all major computer platforms. WHAT'S IN A NAME? specifically requires the latest incarnation of Csound: Csound5.02.1 (or above). Free downloads for various systems are found at: http://csound.sourceforge.net. For Windows, standalone .exe's are also available - LName.exe, LName2.exe, LName3.exe, LName3ASC.exe and LName3Keypad.exe. (These are included in the zip downloads.) They were generated by Rory Walsh's Lettuce frontend for Csound5 (http://www.ear.ie/Lettuce.htm). Ease of use in setup and performance is their chief advantage. IMPORTANT: Csound 5.02.1 must be already installed to run the files in Name.zip; it must *not* be installed to run those in NameSA.zip. Note that Name.csd, Name2.csd, Name3.csd, Name3ASC.csd and Name3Keypad.csd are not part of NameSA.zip; on platforms other than Windows, download Name.zip and run only the .csd files. See the run-time "Instructions" windows for details unique to .exe versions. In standalone versions, make all on-screen selections prior to running Csound. (One possible exception to this rule is for the amplitude factors of the last three events - keys/pads 10-12 - in Name3.) WHAT'S IN A NAME? is composed solely of edited sound clips posted to the seamusonline.org website, in the Members Only section. The 13 clips found there were gathered by Paul Rudy at the 2002 SEAMUS conference in Iowa City, particularly in anticipation of the organization's 20th anniversary. The 16 samples of this work derive from posted clips #'s 1, 2, 3, 6, 12 and 13. All editings are readily identifiable as to their sources. Likely, only a member of SEAMUS will fully appreciate this composition. The composer apologizes in advance to Jon Appleton. It is essential that these 16 samples, identified as soundin.1 through soundin.16, remain in the same folder as the performance .csd or .exe. (The zip downloads [Name.zip and NameSA.zip], which include all performance files, samples, and these instructions, will unzip to a single location.) WHAT'S IN A NAME? is a simple stereo composition that does not make significant use of space. Thus, the work does not lend itself to multi- speaker sound diffusion. Minimum duration is under 2 minutes. (There is no specified maximum; the performance file can run for a total of 60 minutes.) Anyone who attempts a performance much longer than 3 minutes, probably ought to have his/her head examined. GENERAL SETUP In Name(2, 3).csd, you will probably need to edit several flags near the beginning of the file. (Do this in any text editor, such as Windows' Notepad.) You must insure that the values of -M0 (your MIDI input device #) and -odac0 (your audio output device #) match your system. Simply substitute a high number, such as -M99 and -odac99, for the zeros and run the file. (You will need to determine the values one at a time.) The performance will immediately abort and display a list of valid device numbers on your system. Once you identify the appropriate numbers, insert them in place of the zeros. Note that this composition should work well with any driver type; latency is not an issue. If you are having a problem with audio stuttering or clicks, be sure to close as many programs running in the background as you can. As a last resort, you can try reducing the sample rate (see below; note that not all soundcards and native ASIO drivers in Windows allow lower rates). SPECIFIC SETUP AND PERFORMANCE Again in Name(2, 3).csd, several important variables are defined early in the file, and may require modification. (Look for the lines beginning "#define".) CHAN specifies the number of the MIDI input channel - the one on which your performance device is sending messages. The default value, which will rarely need changing, is 1. More important is MIDI1, which specifies the first of 16 consecutive, ascending MIDI note numbers on your MIDI keyboard, keypad or other device. The default value is 60, "middle C", which should work fine for all MIDI keyboards. On other devices, you may find another series of 16 "notes" that will make a good performance setup; alternately, you may need to program MIDI note values into your device to create a performer-friendly setup. When doing so, bear in mind that only the following keys of the 16 *must* be velocity-sensitive: 1, 2, 3, 6, 7, 8, 10, 11 and 12 (or in the keypad alternative described below: 1, 2, 3, 5, 6, 7, 10, 11 and 12). Note that this list includes only values *within an octave range*; this limitation permits devices like the Emu LaunchPad, with its single-octave, velocity -sensitive "keyboard" - but other button "triggers" as well - to perform this piece in velocity-sensitive mode (Name.csd). SRATE equals SampleRATE, for which four options are listed - with higher values generally producing better quality. Select a high rate at which you get click-free, uninterrupted sound. (Default = 44100 SR, the next-to-highest option and the recording rate of the source samples.) Name2 also specifies CTRL, the number of the MIDI pot or slider that controls velocity. Default is 7 (a typical synth's overall volume control), but this value can be changed to accommodate any readily available controller (hopefully a slider). Name1-3 performance files define LAYOUT, which can take either 0 or 1 as values (0 is default). 0 is intended primarily for KEYBOARDs, 1 for drum- style KEYPADs in a 4x4 matrix. Only the samples played by keys/pads 5-8 differ in the two layouts. Whereas samples 5-8 are assigned keys 5-8 in layout 0, samples 6-8 are moved to pads 5-7, and sample 5 to pad 8 in layout 1. The practical rationale behind the two layouts will be obvious once you try them. (The samples, their groupings and relationships, are described in the paragraphs that follow.) Finally, in Name3 (and variants), AMP10, AMP11 and AMP12 are defined; they represent preset amplitude factors, on a scale of 1-10, for keys/pads 10-12 - the last three events/samples in the composition. Though they default to 2, 8 and 5 respectively, determination of these numbers is a significant interpretative decision. (In the standalone version of Name3, these values are selected on-screen; if necessary, they may be adjusted at any time prior to triggering their respective samples - unlike any other on-screen parameters.) REGARDING THE SPECIFIC SAMPLES Soundin.1-3 are velocity-sensitive, "one-shot" samples assigned to the lowest three keys/buttons. They are closely related to one another. Soundin.4-6 is a similar, related grouping (for keys 6-8 in layout 0, pads 5-7 in layout 1). In layout 0, the first group is intended to be performed by the left hand, the second by the right on a typical keyboard. These six samples are responsible for the bulk of the performance activity, as described below. In Name.csd, when you hit a key/pad harder, the sound is somewhat louder, and slightly higher-pitched. In Name2, volume (and pitch) does not depend on how hard you hit a key/pad, but rather on the current slider (pot) level. In this version, you will likely play all the keys/pads with one hand, while manipulating the slider with the other. With Name3, the program selects *random* amplitudes for each event. Soundin.10-11, played by keys 4 and 5 (sample 11 is played by pad 8 in layout 1), are fixed level. (It doesn't matter how hard you play them). They are unique, and each is played only once. Soundin.12, 7 and 8 all derive from the same source and are variants of one another. They are played by keys/pads 9-11. However, the longer soundin.12 (the first performed) is fixed level, while the other two - which follow #12 immediately in order - are variable. (In Name3, preset levels for the two samples are determined *by the performer*, as mentioned above.) Each of these is played only once as well. Soundin.9 is related in passing to soundin.4, and is played (following 7 and 8) at the very end. Its assignment is to key/pad 12; level is variable (except in Name3, where the volume is fixed too by the performer). Selection of its trigger point and volume, as with keys/pads 10-11, are among the most important decisions the performer will make. Keys/buttons 13-16 perform the four loop samples (soundin.13-16). They turn on in order at the beginning, and exit in reverse order at the end. They provide a constant background ambiance for all the "single-shot" foreground events. Performance consists exclusively of two activities: 1) determining the precise moment for triggering the above samples, and in the case of loops, when to stop them (again via triggering); 2) deciding how hard to hit the velocity-sensitive keys/pads (or alternately, setting the controller or predetermined levels). Performing the composition *well* requires considerable familiarity with the samples (especially those that are volume- sensitive), and working with them in context. Overall volume should be set beforehand to reach a moderate level at whatever point the performer intends to play volume-sensitive keys the loudest. There is no "climax" - just good-hearted "discussion." Lastly, in Name2, the initial controller level defaults to minimum (and to be safe, the controller should be preset to zero). If a different first- usage level is desired, the control is moved to this position once Csound is started. THE SEQUENCE OF EVENTS All performances follow the following sequence of events (keys/buttons/pads will be referred to as key 1-16): 1) Trigger key 13 (on). 2) At end of first iteration of key 13 loop, key 14 (on). 3) At end of first iteration of key 14 loop, key 15 (on). 4) At end of one or more iterations of key 15 loop, key16 (on). (These loops remain sounding for the complete performance.) 5) Following a brief pause, trigger key 4. 6) Following a very brief pause, randomly trigger keys 1, 2, and 6, 7 (layout 0; 5, 6 in layout 1) - multiple times. Both velocity/volume and timing, as well as order, are random. 7) Eventually add keys 3 and 8 (layout 0; key 7 in layout 1) to the on-going activity. There is a general buildup of event density. The length of the composition depends on the amount of time taken developing steps six and seven. Minimum combined duration for these two steps is 30 seconds. 8) Suddenly the triggering stops, there is a short pause, then a single trigger key 5 (layout 0; key 8, layout 1). This sample is in two parts separated by silence; be sure to wait for the second segment. 9) After a slightly longer pause, trigger key 9. 10) After a short pause, trigger 10 (volume is user-determined). 11) After a slightly longer pause, trigger 11 (volume is user-determined). 12) After a fairly substantial pause, trigger 12 (again, user-determined volume). Considerable thought and planning about timing and levels should go into steps 9-12. 13) After a brief pause, trigger key 13 (off), followed shortly by key 14 (off). 14) At the end of an additional iteration or more of the key 15 loop, key 15 (off). 15) After another iteration or more of the key 16 loop, key16 (off). Off may occur after either the first or second word of the loop - performer's choice. SPECIAL INSTRUCTIONS FOR ASCII KEYBOARD (INCLUDING WIIMOTE) VERSION A special version, Name3ASC.csd (and its standalone counterpart, LName3ASC.exe), requires only the ASCII keyboard for its performance. The only unique requirements are that Name3ASC.csd be run from the command line, and that LName3ASC.exe have its main performance window selected. The following ASCII keys correspond to key designations in the performance sequence above: numeric keys 1-4 to loop samples 13-16; number 5 to key 4, Q/W/E/R to keys 1, 2, 6 and 7 (layout 0); T/Y to keys 3 and 8; U to key 5 (layout 0); I/O/P and [ to keys 9-12. (This layout is particularly user- friendly and easily remembered.) On Windows 2000 and above, both Name3ASC.csd and LNameASC.exe may also be performed with the Nintendo WiiMote as controller. Here, only the Wiimote's buttons are used. Buttons corresponding to ASCII keypresses are: Arrow Left, Up, Right and Down with Button B held down = numeric keys 1-4; Button A = numeric key 5; Arrow Left, Up, Right and Down (no button held down) = Q/W/E/R; Minus and Plus Buttons = T/Y; Home = U; Buttons 1 and 2 = I/O; Buttons 1 and 2 with Button B held down = P and [. Follow this procedure to perform with the WiiMote: Establish a connection between WiiMote and your chosen Bluetooth stack (e.g., BlueSoleil 2.3), then minimize the stack's window; open GlovePIE (a free download from: http://carl.kenner.googlepages.com/glovepie), load the accompanying file Name.PIE, run it, then minimize GlovePIE; finally, run Name3ASC.csd (from the command line) or LName3ASC.exe. SPECIAL INSTRUCTIONS FOR EXTERNAL NUMERIC KEYPAD VERSION Both Name3Keypad.csd and LName3Keypad.exe are performable with any external numeric keypad. The KEYBOARD layout of buttons is followed; keys 1-9 are buttons 1-9, keys 10-12 = buttons 0, dot and Enter, and keys 13-16 are /, *, - and +. (Follow layout 0 in the sequence of events above.) Keep Num Lock enabled on the keypad. In the standalone .exe, while running Csound, be sure that the main performance window is selected. Also, Name3Keypad.csd must be run from the command line.