LAMENTATIO (Lament) for CsoundAV (2003) Arthur B. Hunkins He then spoke this parable addressed to those who believed in their own self-righteousness while holding everyone else in contempt: "Two men went up to the temple to pray; one was a Pharisee, the other a tax collector. The Pharisee with head unbowed prayed in this fashion: 'I give you thanks, O God, that I am not like the rest of men - or even like this tax collector.'" Luke 18:9-11 "Why look at the speck in your brother's eye when you miss the plank in your own? How can you say to your brother, 'Let me take that speck out of your eye,' while all the time the plank remains in your own? You hypocrite! Remove the plank from your own eye first." Matthew 7:3-5 Heth. Through the sin of which she is guilty, Jerusalem is defiled; All who esteemed her think her vile now that they see her nakedness; She herself groans and turns away. Lamentations 1:8 For the self-righteous of the world - that we be not judged. GENERAL LAMENTATIO is an intensely sombre and meditative solo performance piece for Windows-based computer running CsoundAV. It exists in four basic monaural versions - all indicated by "lament" in their file name and differing only in their performance method: "lament.csd" requires no MIDI hardware; "lamentv.csd" requires an external bank of eight MIDI controllers (sliders or rotary knobs); "lamentk.csd" necessitates a MIDI keyboard (even the most rudimentary will do) with or without velocity sensitivity; and "lamentkv.csd," such a keyboard that includes a set of eight controllers (sliders or knobs). The keyboard need have only the eight white keys from C4-C5 - MIDI notes 60-72. (It is also possible to substitute a set of eight *buttons or keypads* for the keyboard - see "Programmable Buttons" below.) There are stereo variants for each of these versions: "stlament.csd," "stlamentv.csd," "stlamentk.csd" and "stlamentkv.csd." They add random stereo placement to the bell sequences, but otherwise are identical to their monaural counterparts. The performance instrument is a set of eight tolling bells. The performer selects the specific bell sonority, its tempo (repetition rate), its volume and when a series of bell strikes starts and stops. Any number from two to all eight bells may take part in the realization. The computer required for performance must be running a version of Windows - 95B or higher. (With Windows 95 you must be sure that OpenGL has been installed.) The program that executes the selected .csd file is Gabriel Maldonado's CsoundAV, v0.043 or higher. Prior to performance, be sure to close as many programs running in your Windows taskbar as possible. This will minimize any chance of audio breakup. (Depending on your system, there is a good possibility of disaster otherwise.) The monaural versions of Lamentatio lend themselves well to multi-speaker sound diffusion. The stereo versions do not. In diffused performances, sound placement begins front and center, and remains there at least until the beginning of the third bell sequence (key- button-press). After that, the sound can begin to move slowly and evenly through space. It continues like this throughout, never settling in one spot - and concluding wherever it finds itself. Any duration from less than a minute (for two bells) on up is possible, depending on the circumstances. SETUP The performer downloads and installs the current version of Maldonado's CsoundAV from http://www.csounds.com/csoundav . The file to download is named CsoundAV_Win.exe . To run CsoundAV (and this composition), click on the program icon, and on the popup window that appears, type the name of the desired .csd performance file into the Orc field. Alternately, drag the .csd file onto the window. Click OK, and the performance window for the piece will appear. When you run any performance file, you will be queried (via pop-up window) to specify a Portaudio OUT Device number (-+P#), and if MIDI controllers are involved, a MIDI In Device number (-+K#). Once you determine appropriate device ID's for your setup, you may add them to your CsOptions flags (as, for example, -+K0 and -+P8). (These flags are located toward the beginning of the .csd text file. You can edit them in any text editor, including Windows' Notepad.) Doing so will thereafter happily bypass the device selection process. For any problems, please consult Maldonado's CsoundAV Manual, also downloadable at http://www.csounds.com. This HTML manual comes as a zipped archive named CsoundAV_Manual.zip. See particularly its sections entitled Special Command Line Flags and Command Line Hints. (Command line flags are the same as CsOptions flags.) DIRECTSOUND If your system software includes *DirectSound*, slider/pot response time (latency) will improve substantially. DirectSound is present by default in systems running Windows 98SE and above. You also need a DirectSound driver for your soundcard. Any recently-manufactured stereo soundcard will install DirectSound drivers; "legacy" (ISA) soundcards will not. DirectSound drivers (or multichannel ASIO drivers - see below) may be available on your system. On the Portaudio OUT Device Select popup window, you'll see any and all DirectSound and ASIO (in addition to MME) drivers listed. Specify one of the DirectSound (or ASIO) numbers; if it works, add this number to your -+P flag (as, for example, -+P5). DirectSound and ASIO are *particularly* sensitive to any programs running in the background, including those in the taskbar; be sure to close as many as possible. Please note that a native *ASIO* driver is required for quad versions. Hint: If you are still having a problem getting clean, click-free sound, run a *MIDI* version of this work (it is less demanding on system resources). Also, at the slight sacrifice of some high frequency content, you can try halving the values for sr and ksmps (also at the top of your .csd file) to 22050 and 10 respectively. (You cannot use ASIO drivers at these rates.) Otherwise, you may need a faster computer. PERFORMANCE This composition is a particularly "open" one, with few specific instructions for realization. These few are: 1) Each key- or button-press, which initiates and later terminates a series of bell strikes, is separate from all others. When a sequence enters, it is given time to be "heard" before another is introduced. Likewise, when the sequence stops, time is taken so that the bell's absence registers. 2) It is not necessary to use *all* the bells (keys/buttons). A minimum of two are required. 3) As a *general rule*, no more than 4 bells should be sounding simultaneously. 4) Toward the beginning there is a textural buildup that gradually introduces the bells that will be heard. At the end, the texture trails off, ending with a single bell - perhaps including a gradual reduction in volume over the final sequence (a kind of "final fade"). 5) The overall texture evolves slowly and evenly without notable climax. (Any climax is optional.) Other than the evolving texture itself, a primary element of variation may be volume/velocity levels or contours. Other possible, though less likely, structural elements are tempo (per individual bell sequence) and carrier (timbre). These latter elements are more frequently preset, however. 6) The performance begins when, according to version, the first bell stop/start key is pressed, the first keyboard note is pressed, or the first external slider is raised. It ends when no bells remain sounding. During performance at least one bell is always tolling. 7) The on-screen performance window sets defaults for all variables. Prior to performance you may want to specify a different Fundamental Frequency variable (which is not to change during performance), Volume, Tempo and Carrier frequency (timbre). These last three parameters may remain constant during performance, but tempo and carrier may also vary from sequence to sequence (any change is effective with the start of the next sequence). Volume, on the other hand, may also change *per individual bell strike*, and so can become an active performance variable. (When varying volume on a strike-by-strike basis, avoid sudden changes and anything that would seem "unnatural.") Overall amplitude is user-determined and preset; the external master level remains unchanged throughout the composition. Each bell has the same potential maximum level; it will be loudest with volume set to maximum and (if applicable) maximum keyboard velocity. TEST MODE The Test Start/Stop checkbox speeds up the timbre (Carrier) selection process. Normally, timbre changes only per bell sequence. With this box checked, tone color can change per individual strike. When you are finished selecting bell tones, it is recommended that you uncheck Test mode. This way, if you wish to change Carrier during performance, it will change correctly at the next *sequence*. It also allows you to set up timbre changes safely in advance, while the same bell may be currently sounding a different tone color. SPECIAL FEATURES OF THE VARIOUS VERSIONS (ST)LAMENT.CSD-- This version requires no extra hardware; performance consists entirely of clicking with a mouse on the on-screen performance window. This limited mode of interaction works well in this composition; mouse clicks largely begin and end bell sequences and vary their volume, occasionally even on a strike-by-strike basis. For *extensive* and more intuitive control of volume, one of the other versions may be preferable. Depending on which parameters are varied during performance (rather than being preset), the versions below may permit largely "computer-independent" performance. (This may be advantageous to both performer and audience, as it permits concentration on the live performer/manual controller interface.) (ST)LAMENTK.CSD-- This version uses an external MIDI keyboard as primary controller. *Any* keyboard is satisfactory, velocity-sensitive or not - even those with as few as 25 keys (or less). Only an octave of white keys from C4-C5 (MIDI notes 60, 62, 64, 65, 67, 69, 71 and 72) is needed; these keys control bells 1 through 8. (They are the keys from middle C upward.) Here the on-screen Volume controls interact with keyboard velocity; with Volume control at maximum, keyboard velocity will have a full-range effect. Non velocity-sensitive keyboards put out a maximum velocity message with each keypress; as a result, the on-screen Volume control will deliver a full range of amplitude values - if wanted, on a strike-by-strike basis. PROGRAMMABLE BUTTONS OR PADS AS KEYBOARD SUBSTITUTE IN "K" VERSIONS Any set of eight programmable buttons or keypads may take the place of a MIDI keyboard in "k" versions of Lamentatio. The buttons/pads can be coded to perform the MIDI notes listed above. Buttons/pads may either be in momentary contact (press/release) or toggle (latch) mode. (The latter is recommended only when companion LED's indicate whether a button is on or off; otherwise confusion may result during performance.) The appropriate SysEx MIDI string for "Button One On" is (in hex): "90 3C 7F". For buttons 2-7 (in ascending order), the second numbers become: 3E, 40, 41, 43, 45, 47 and 48 (other values remain the same). For "Button One Off", the sequence is "90 3C 00" (or "80 3C 00"). The other "off" messages also duplicate their "on" settings except for their third value being zero (and optionally the first value, 80). Alternately, if the buttons are programable as simple "NoteOn" events, each can be assigned (decimal) numbers in the range of 60-72 (C4-C5) and velocity values of 127, *on channel 1*. If "NoteOff" coding is required (it's often not), only the note number (or name) is needed - along with the channel 1 designation. Buttons on the *E-mu Launch Pad* are fortunately hard-coded to these precise note names/numbers (the eight buttons of the bottom row only). These press/ release buttons are unique in that they are velocity sensitive. Thus velocity-sensitive "keyboard" renditions of Lamentatio ("k" and "kv" versions) are possible on the E-mu Launch Pad. Finally, in case you are working with a set of buttons that are hard-coded for notes, but not the *right* notes, it is possible in any keyboard version to modify the MIDI note values for any or all of NOTEs 1-8. (This applies to either keyboard and button performance mode.) You might also simply *prefer* to have different keys or buttons play the tones. To make this change, open your selected .csd in any text editor (such as Notepad), and look toward the beginning of the file for a series of lines beginning "#define NOTE1 #60#". Simply substitute your desired MIDI note number(s) within the paired #'s (e.g., replace #60# with #48#) and resave the file. Needless to say, the MIDI note numbers have nothing to do with the *pitches* produced by the bells; they are simply a means of associating a particular key or button with a particular bell tone (1-8). (ST)LAMENTV.CSD-- This version uses a set of eight external MIDI pots/sliders as a primary performance control. It is particularly appropriate for changing volume of the various bells on a strike-by-strike basis, and a simple, direct way of shaping bell phrases and textures. Preset all the sliders to zero prior to beginning the actual performance. Though these 8-pot/slider MIDI versions normally require all controllers to transmit on channel 1, they also 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 8-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. Bells are started by bringing a pot up above zero. Since changes of pot setting only take place with the next bell strike, they can easily be made in advance, while the current strike is sounding (this includes returning to zero to turn the bell off). For this version there is an on-screen ".5 sec Bell Onset Delay" button. Check this box if you need a bit more time when turning on a bell tone, to reach the desired amplitude level. Slower systems, with lagging system response to MIDI control devices, will probably not need the extra time; low-latency DirectSound drivers, on the other hand, may well require it. (ST)LAMENTKV.CSD-- This version requires a basic MIDI keyboard that *includes* a set of eight pots or sliders. Although such keyboards will be velocity-sensitive, there is a checkbox on the performance panel to defeat this sensitivity - interpreting all keypresses as maximum value. This allows volume to be controlled exclusively, if desired, by the pots/sliders, including on a strike-by-strike basis. One preparation requirement is essential here: *After bringing up the performance window, you must manually move all pots/sliders to their initial positions*. Note that the controls should *literally be moved* before performance begins; if they are not, there will be very little sound when keys are pressed. (The pots output their lowest value - as though they were turned all the way down - until they are changed!) With velocity- sensitive performance, you will probably want to set the pots at or near maximum. THE STEREO VERSIONS - CENTER POSITION BUTTON As mentioned above, the only difference between monaural and stereo versions is the latter's random placement of bells in the stereo field. This random placement occurs by *bell sequence* rather than individual bell toll. The opening sequence is automatically in the front and center position when the performance file is run. If the performance begins after a period of audio testing, however, press the on-screen Center Pos button to insure that the performance begins in the center position. The button may also be pressed anywhere during the performance when the following sequence is desired to issue from center position. Note that this button, like the Tempo and Carrier controls, only takes effect with the *next bell sequence* - unlike the Volume control (which varies on an individual strike basis). Thus, the Center Pos button can be pressed at any convenient time prior to the next bell sequence - even while the same bell is currently playing. In particular, pressing this button is a way to make the *final* sequence of the piece return to center position, if desired.