YVWH (Bearer of Hope) for realtime Csound5 (2008) Arthur B. Hunkins Moses was looking after the flock of Jethro, his father-in- law, priest of Midian. He led his flock to the far side of the wilderness and came to Horeb, the mountain of God. There the angel of Yahweh appeared to him in the shape of a flame of fire, coming from the middle of a bush. Moses looked; there was the bush blazing but it was not being burnt up. "I must go and look at this strange sight," Moses said "and see why the bush is not burnt." Now Yahweh saw him go forward to look, and God called to him from the middle of the bush. "Moses, Moses!" he said. "Here I am" he answered. "Come no nearer" he said. "Take off your shoes, for the place on which you stand is holy ground. I am the God of your father," he said "the God of Abraham, the God of Isaac and the God of Jacob." At this Moses covered his face, afraid to look at God. And Yahweh said, "I have seen the miserable state of my people in Egypt. I have heard their appeal to be free of their slave-drivers. Yes, I am well aware of their sufferings." Then Moses said to God, "I am to go, then, to the sons of Israel and say to them, 'The God of your fathers has sent me to you'. But if they ask me what his name is, what am I to tell them?" And God said to Moses, "I Am who I Am. This" he added "is what you must say to the sons of Israel: 'I Am has sent me to you'." And God also said to Moses, "You are to say to the sons of Israel: 'Yahweh, the God of your fathers, the God of Abraham, the God of Isaac, and the God of Jacob, has sent me to you'. This is my name for all time; by that name I shall be invoked for all generations to come." Exodus 3:1-7, 13-15 To the great I Am - shrouded in mystery, beyond utterance; and in homage to Sir Edward Elgar's Nimrod GENERAL YVWH is a meditative, solo performance piece for computer running Csound5. It exists in multiple versions, all described in detail below. The versions differ from one another largely in the number and types of performance controllers they require. The basic set (YVWH16C and 27C) calls for 16 or 27 sliders/rotary pots (sliders are preferred). Others are designed for keyboard controllers (16-18 keys), keypads (16 pads), or foot controllers. (The latter, for Windows only, use the keyboard versions with custom MIDIOX maps that convert Program Change messages to MIDI Notes on/off. See further below.) There is also a version for ASCII keyboard alone (YVWH16ASC). All variants, except the ASCII, require at least one continuous controller. The basic set (16 or more sliders/pots) is the preferred performance vehicle; it should be selected whenever possible. Sliders, in particular, offer more intimate and varied control; they are simpler and more intuitive for the performer as well. Unfortunately, most drum machines cannot perform YVWH. Though key velocity is not an issue, at least one continuous controller *is* required. (As is true of foot controllers that lack a built-in expression pedal, an external controller could be daisy-chained or otherwise merged to the computer's MIDI in. However, at that point, a basic keyboard with modulation control would probably be a more viable performance medium.) Keyboard/keypad versions (designated by a "K" in their suffix) have alternate variants ending in "F". This stands for visual Feedback. There is a problem with keyboard versions: it is difficult to remember (and often hear) whether one or more of the first 10 notes is on or off, especially when it is at Low Level. Visual feedback, in the form of a single line of numbers, shows the current level of these 10 pitches, including whether they are totally off or at the low level. Though these versions are somewhat more likely to "pop" (see below), they are highly recommended when a keyboard/keypad is required. Please note that all keyboard/keypad versions require keys/pads in *momentary-contact*, rather than latch/toggle mode. (This is normal for keyboards, but may need to be checked for buttons and pads.) All versions can be performed in 2-, 4-, and 8-channel (circular) speaker configurations. Multichannel realizations simply add a "surround" dimension to their stereo counterparts. The quad and 8-channel versions require a *multi-channel* sound card or interface. The 8-speaker/channel placement is as follows: stereo pairs (first pair identified as 1 and 2) beginning on the front plane and progressing to the rear. A parallel set of standalone .exe's is also available - currently (5/08) for Windows only. They were generated by Rory Walsh's Lettuce frontend for Csound5 (http://www.ear.ie/Lettuce.htm). Available along with the .csd versions in a single, large YVWH.zip download (which includes this file), their filenames begin with "L" and end with ".exe" instead of ".csd". (For platforms other than Windows, download YVWH.zip and run only the .csd files.) Whereas Csound5 must be installed to use the YVWH.zip package, another collection, YVWHSA.zip, is intended for use *when Csound5 is not installed*. (YVWHSA.zip lacks the .csd versions, but includes necessary Csound files.) Ease of use in setup and performance is the chief advantage of the standalone .exe's. See run-time "Instructions" windows for further details. Csound5 is a software sound synthesis program available for all major computer platforms. YVWH specifically requires Csound5.02 or above. Free downloads for various systems are found at: http://csound.sourceforge.net. YVWH does not lend itself to multi-speaker sound diffusion. Minimum duration is 5 minutes. The more expansive YVWH27C should last longer than do 16-voice versions (suffixes including 16, 17 and 18). There is no specified maximum; the performance file can run for a total of 60 minutes. GENERAL SETUP You will probably need to edit several flags near the beginning of your performance file. (Do this in any text editor; your .csd is a simple text file. In standalone .exe versions, this all is accomplished in the performance window: open CsOptions, edit the designated values, and observe the output under View Output.) 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. The performance will immediately abort and display a list of valid device numbers on your system. Once you identify the appropriate numbers, go back and insert them in place of the zeros. This composition should work well with any audio driver type; latency is not an issue. If you are having a problem with stuttering or clicks, be sure to close as many programs running in the background as you can. Versions featuring keys/pads/buttons (including ASCII) may produce pops; those with *visual feedback* are particularly likely to do so (the basic set will not have a problem). As a last resort, you can try reducing the sample rate (note that not all soundcards and native ASIO drivers in Windows allow lower rates). SPECIFIC SETUP AND PERFORMANCE Performance consists exclusively of manipulating MIDI pots/sliders, and/or keys/buttons/pads. YVWH uses two sets of pitches; both ascend, and are based on the same harmonic series. The first set comprises 10 (16, 17 or 18- suffix versions) or 16 (27-suffix) pitches; the second, 6 or ll. Consisting of mostly the same approximate frequencies, the sets richly beat with each other and essentially form a major triad with the third on top. The longer (and lower) pitch set is handled by the lower controls, the shorter set by the higher ones. The one amplitude specified by the performer is that of the lowest pitch (pitch 1), which is 38.91Hz. It should predominate, but its actual (preset) amplitude depends on the characteristics of the particular sound system and listening environment. In a nutshell: set BASSAMP fairly high, but below than the point at which distortion may occur. The performer fades the tones in and out, varying the timings of events, the lengths of the fades and their levels. The general sequence of events is outlined below. With regard to setup: two special controller configurations may be encountered occasionally. (These require adjustment to the defaults either in the performance file itself, or with standalone .exe's, similarly in the performance window.) 1) ALL CONTROLLERS USE THE SAME CHANNEL, BUT NOT #1: Locate the line toward the beginning of the performance file - "#define CHAN #1#" (channel 1 is the default). Change the channel number to the one you need (from 2-16) with a text editor. (This revision is active until you change it again, in .csd versions.) Note that the "#" characters around the channel number must remain. 2) Applies to YVWH16C(F) only: EACH CONTROL USES A UNIQUE CHANNEL, BUT WITH (channel volume) CONTROLLER #7: To enable this layout, define CHAN as #0#. All controllers will now be on consecutive channels, starting with channel 1. (In the standalone .exe, simply select a channel number of 0.) A number of other variables are also defined toward the beginning of the performance file (or in the performance window of a standalone .exe). SRATE equals SampleRATE, for which four options are listed - with the highest value (48000) both recommended and default. Select the highest rate at which you get click-free, uninterrupted sound. In standalone .exe's, SRATE is chosen in the CsOptions window. NCHNLS (default = 2) specifies a 2-, 4- or 8-channel/speaker realization. In standalone versions, this value is again selected in the CsOptions window. Depending on the version, the following variables are also active, and must be preset (variables in standalone executables have similar names): CTRL1 (2, 3, 4) specifies the first controller of an 8-controller bank, except that CTRL4 is a bank of only 3. The first controller in 16-controller versions defaults to CC20, while that in the 27-controller variant defaults to CC0. All higher banks default to the next higher available CC#. MIDI1 (2) indicates the first MIDI Note # of a pitch set in keyboard/keypad versions. Note #'s are consecutive. The initial notes of the two series are specified separately, though by default the two sets adjoin each other. The lowest pitch defaults to 48 so that the range naturally fits two-octave keyboards. MIN is a preset decimal percentage between 0 and 1, for keyboard/pad and ASCII versions, that represents the low point for fades/glides when the fade level is not set to full off. (Either LVCTRL or LOW determines whether a fadeout is to off or this level.) The high point of such fades is always 1. The MIN setting is active when fades are fast (see segments 2 and 4 in the performance sequence below). In keyboard versions, LOW is the MIDI Note # of a key that toggles the low point of fades/glides between 0 and MIN. (The default toggle value is MIN.) The default note # for LOW is the first above the highest pitch. In keyboard versions, RESET is the MIDI Note # of a key that, when pressed, returns all controls to their original settings in one second. (Only LVCTRL retains its current value.) The default note # is either the note above LOW or the first note above the highest pitch. LVCTRL is a CC# of a controller that determines the Low (bottom) Level for all fades/glides. The range is 0-1. RECTRL is the number of a Reset controller that returns all controls to their original settings. (Only LVCTRL retains its current value.) Reset works by turning the control to zero or to substantially above zero - in either direction. GLCTRL is a CC# of a controller that sets the duration of fades/glides. Zero = 1 second, max = 10 seconds. In YVWH16K1C (only), setting the fade duration to zero toggles on MIN, while turning duration higher reverts Low Level to zero. BASSAMP sets the level for the lowest (38.91Hz) pitch. Values range from 2000-5000, with default = 4000. Prior to running a performance file, be sure to turn all pots/sliders to zero. Only once Csound is started, turn up any pots/sliders to a higher initial level. In keyboard versions, this statement particularly applies to GLCTRL (the Glide time controller) for which the default is 1 second, but the initial setting should be fairly high. *Overall* level should be set beforehand (in the sound system) to achieve moderate volume (mf - no louder) with all pots/sliders (keys/pads) fully on. Performance follows the following general sequence of events (note that these instructions are quite flexible): 1) The first set of pitches (either 10 or 16) fades in slowly - one at a time from the bottom up. They all fade in to max. 2) Levels of these pitches are varied, at a fairly fast rate. In versions with a Low Level Toggle switch, the toggle may be in either position (or alternated at will; note that the initial state of the switch is Low Level ON.) The low fade points in this segment may be zero or any chosen intermediate level or a combination of the two. At any given time, the majority of pitch controls are at, or near, their maximum. Several amplitudes may vary simultaneously. At the end of the segment all 10 notes are at maximum volume. 3) The second set of pitches (5 or 11) is introduced at a moderate to fairly slow pace - the last pitch entering somewhat belatedly. They too fade in to max. In versions with a Low Level Toggle, the toggle is turned ON (if it is not already on) by the end of this segment. 4) Similar to segment 2; the first set of pitches is varied at a fast rate, generally with a low level above zero. Again, most levels for this set are fairly high, and multiple controls can be varied simultaneously. The segment ends with all controls at max. Immediately prior to segment 5, any Low Level Toggle must be set to OFF (low level of zero). 5) From the bottom up, pitches in set one are faded out at moderate to somewhat slow speed. At the end there is a short pause before continuing. 6) From the bottom up, pitches in set two are faded out at moderate to slow speed. There is a pause before the next to last fade, and a brief pause before the final fade. The last two fades are fairly slow. Note that simultaneous level changes are greatly facilitated by sliders (in contrast to rotary pots). In general, sliders are substantially more performer-friendly to this work. THE VARIOUS VERSIONS NOTE: all "F"-suffix versions are keyboard/keypad based, and offer visual Feedback of the state (on/off) and amplitude level of the first 10 pitches. Also, "F" versions *in .csd format* must be performed *from the command line*. (L)YVWH16C - 16 sliders/pots (sliders preferred) specified as two "banks" of 8. (L)YVWH27C - 27 sliders/pots specified as three banks of 8 and one of 3. Could be realized by several daisy-chained 8- or 16-slider control surfaces. (L)YVWH16K1C(F) - 16 keys/pads/buttons and one continuous controller. Designed for keyboards, touchpads and foot controllers, especially foot controllers with at least one expression pedal. (Foot controllers must be organized in banks of ten presets.) The controller regulates glide time. One continuous set of 10 MIDI notes, and one of 6. (L)YVWH16K2C(F) - 16 keys/pads/buttons and two continuous controllers. Designed for keyboards, touchpads and foot controllers, especially foot controllers with two expression pedals. The controllers regulate glide time and Low Level (low point of glides/fades). One continuous set of 10 MIDI notes and one of 6. (L)YVWH16K3C(F) - 16 keys/pads/buttons and three continuous controllers. Designed for keyboards and touchpads; also for foot controllers with expression pedals and to which further pedals (or other controllers) can be added - via MIDI Thru or expression pedal inputs. Two controllers regulate glide time and Low Level; the third is a Reset toggle (moving the control either to or from zero turns off all pitches). One continuous set of 10 MIDI notes and one of 6. (L)YVWH17K2C(F) - 17 keys and two continuous controllers. Designed for keyboards. One continuous set of 10 MIDI notes, and one of 6. The first controller regulates glide time; the second, Low Level. The extra key is a Reset toggle (pressing the key turns off all pitches). (L)YVWH18K1C(F) - 18 keys and one continuous controller. Designed for keyboards. One continuous set of 10 MIDI notes and one of 6. The controller regulates glide time. The first additional key toggles Low Level on/off (to minimum level/zero); the second is a Reset toggle (pressing it turns off all pitches). (L)YVWH16ASC(F) - ASCII keyboard only (no MIDI). Regular .csd must be performed from the command line; also, duration timings (1-10 seconds) are determined by F1-10 keys. In the standalone executable, these timings are specified by SHIFTED NUMERIC (1-[1]0) keys. A NOTE ON FOOT CONTROLLERS All the "K"-suffix versions of YVWH are performable on a variety of MIDI foot controllers, as long as the device includes one or more expression pedals, or some type of continuous controller can be added to the MIDI data stream. Such realizations are 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*. YVWHFootController127/127Alt/128.txm contains operational details for these "versions"; view them in any text editor (where the imbedded "map" can also be modified). YVWHFootController127/127Alt/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 (most fall into this category); the "128" variant for a range of 1-128. "127Alt" is for the few foot controllers that number from 0-127 but contain only 9 program changes in their lowest bank. All six 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 YVWH.)