CAMPANAE DEI (Bells of the Most High God) for CsoundAV (2003) Arthur B. Hunkins Sanctus, Sanctus, Sanctus Dominus Deus Sabaoth. Pleni sunt caeli et terra gloria tua. Hosanna in excelsis. The Ordinary of the Mass Make pomegranates out of blue, purple, and scarlet yarn, and attach them to the hem of the robe, with gold bells between them. The gold bells and pomegranates are to alternate all the way around the hem. Aaron will wear this robe whenever he enters the Holy Place to minister to the Lord, and the bells will tinkle as he goes in and out of the Lord's presence. If he wears it, he will not die. Exodus 28: 33-35 "See, I am coming soon." The Spirit and the bride say, "Come." Let each one who hears them say, "Come." "Yes, I am coming soon!" Amen! Come, Lord Jesus. Revelation 22: 12, 17, 20 GENERAL CAMPANAE DEI is a meditative solo performance piece for Windows-based computer running CsoundAV. It exists in two basic monaural versions - both indicated by "bells" in their file name and differing only in their performance method: "bells.csd" requires no MIDI hardware, while "bellsma.csd" requires an external MIDI bank of eight sliders or rotary knobs plus an additional ninth controller. There are stereo variants for each of these: "stbells.csd" and "stbellsma.csd." Except for some stereo enhancement (random movement in the stereo field), they are identical to their monaural counterparts. All versions use four pairs of sliders or rotary pots to control four bell sonorities - their amplitude and their frequency. The ninth slider/pot controls the loudness and tone color of a single, base pitch, refered to as "Solo," out of which the other sonorities seem to grow. There is an alternate set of versions identified by "2" in their filenames (e.g., "bells2.csd"). Whereas in the basic versions, each higher bell is pitch- controled by all those below it, here all four bells are pitch-independent. There are no other differences, and each series is equally valid. The computer 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 CAMPANAE lend themselves well to multi-speaker sound diffusion. Diffusion should be slow-to-moderate in pace - even and fairly constant, but unpredictable. To the degree that the "Solo" sonority is present and prominent, diffusion should be focussed front-and-center. (Since the performance starts with this sonority alone, diffusion should begin, motionless, in this position.) As bell sonorities accumulate and predominate, diffusion moves away from this focus and to a consistent level of "random" activity. In essence, you can think of the presence/prominance of the "Solo" sonority as a kind of magnet drawing the diffusion toward a front-and-center position. At the end of performance (see further below), diffusion loses momentum and generally stabilizes in a single location - again, front-and-center if "Solo" is prominent. The stereo versions should not be diffused. Duration is a minimum of 8 minutes. 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 . Please be aware that a *graphics tablet* version of this composition, indicated by a final "G" in the filename, requires the *very latest* v0.0432 CsoundAV. (For more about "G" versions of this piece, see the end of these instructions.) This latest v0.0432 may be available *only* at the URL above. 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 Overall amplitude is moderately soft to fairly loud, and should vary. Total volume is preset by an external master gain control which remains unchanged throughout. Set it to moderately loud with all five performance amplitude controls at maximum (see below). The bank of eight sliders/pots is configured as follows: the first pair represents bell 1, the lowest bell; the following pairs represent bells 2-4, which ascend in frequency. The first pot of each pair determines bell amplitude; the second, its frequency. The separate ninth pot controls the amplitude of the "Solo" note event - a kind of "fundamental" or base tone for the four bells. Opening the various amplitude pots has an effect other than simply getting louder, in some versions. In particular, the "Solo" event gains harmonic richness as it opens. Solo's random panning deviation around its center position also becomes slightly more prominent - in stereo versions. For their part, the bell tones, in stereo, pan (1 and 3) to the left and to the right (2 and 4) as their volume increases. (At minimum volume they are all placed on-center.) Bells 3 and 4 pan a bit more to the sides than do the lower-pitched 1 and 2 at louder volumes. All this occurs alongside random stereo movement that also increases with amplitude for all bell tones. The sensitive performer will be aware of, and incorporate these instrument design subtleties in his/her interpretation. All sliders are initially set to zero. The performance begins by opening the Solo - Amp slider; then in turn, the amplitude pots of bells 1, 2, 3 and 4. All these pots move finally to soft loudness levels, except for the Solo note, which can be somewhat stronger (as it should be prominent in the opening texture, and display some harmonic richness). Take time bringing up each slider, and freely vary the level while doing so. When all the pots are in, take additional time, further varying the relative levels of the five volume controls. This can include fading one or more of them completely out. By the time you are ready to move on, however, all five are back in, and the four bells at relatively the same level. At this point, the bell frequencies may slowly begin to change - very modestly at first. In the "non-2" versions (where higher frequencies are controlled by lower-numbered bells), begin the frequency changes with bell 3 or 4, so that for a short while, only one or two pitches will be affected. Thus, *total* pitch activity will begin somewhat gradually. All controls may be varied during performance. The full range of all (or most) sliders should be employed at some point, though the sonorities need never reach maximum volume at the same time (there is no necessary climactic point). Most of the time, the various amp sliders are *not* full on. Both beginning and end should be relatively soft. In combination with the "Solo" event (whose amplitude is determined by the ninth pot), the initial (zero), and maximum bell frequency settings constitute particularly euphonious sonorities. Other bell combinations emphasized in passing should approach this euphonious quality as much as possible. In particular, fast beating should be avoided. (This is particularly an issue in the "2" versions, with their independent frequency controls for each bell.) If harsh beating or other "ugly" sounds are encountered, move away from them in a manner consistent with overall performance style - that is, deliberately. To maintain a homogeneous texture, a minimum of three bells should be sounding at any given time. On the other hand, the Solo note may come and go freely. (Note that the only time this note is *required* is during the opening sequence.) Pots/sliders are always moved one at a time, and are in fairly constant, even-paced motion. (On external MIDI devices, pot movement may overlap modestly.) The "bells" - once they begin to move - are meant to be in a general state of flux, showing little overall sense of direction (until they stabilize toward the end - see below). The performance concludes with a final fadeout in either of the following two settings: 1) After moving to a low-frequency stabilized bell collection similar to the opening sonority. All bell amp sliders are up partially - none are on full. At least three of the frequency pots are at zero; the fourth is at or near zero. The Solo amp pot is optionally on part way. Pay particular attention to make this final bell "collage" as an especially euphonious one. Fade out the 4 or 5 pots slowly in any desired order. (One of the possibilities is the reverse of the opening sequence.) 2) After moving to a high-frequency stabilized bell collection. All bell amp sliders are up partially - none are on full. All of the frequency pots are at max. The Solo amp pot is optionally on part way. Fade out the 4 or 5 pots slowly in any desired order - except that the Solo pot, if on, must be the first or second to exit. With both options, a short period (minimum of 5 seconds) of no controller movement and minimal perceived activity should precede the final fade sequence. SPECIAL INSTRUCTIONS FOR (ST)BELLSMA(2).CSD These versions require external MIDI controller hardware. The set of 8 + 1 sliders or rotary pots (continuous controllers) needed by these versions are found on a variety of MIDI devices, including keyboards. Most of these devices are dependent on serial MIDI interfaces, usually found on sound cards. Some more recent MIDI controllers incorporate *USB* interfaces, and so are particularly appropriate for use with laptop computers (which normally lack MIDI interfaces). Please note that a device which has *only* eight pots or sliders cannot perform this composition; there must be nine. The ninth, "Solo" pot/slider can be part of the larger bank, or a separate controller, such as a data entry, modulation or volume control. The performance file assumes that all required sliders/pots are set to function as continuous controllers, and to output values 0-127 on channel 1 - all of which is usually true by default. The performer must consult the device documentation to learn the default number of the first controller in the bank (it will probably *not* be the composition default # 10). Multiple numbering sequences are often available as "presets." Controller numbers for banks are often consecutive, in at least some preset option. If no such configuration is available, you'll have to program the controllers manually to be consecutive. (Also be sure that they all transmit on channel 1.) Determine the number of the ninth controller from the documentation, and enter it on the performance window as well. The composition's default value is controller 1, which is the modulation wheel on MIDI keyboards. The keyboard volume control (controller 7 - which sometimes doubles as the data entry slider) or an extra slider/pot in the controller bank may also be appropriated. In the latter case, the controller number can often be determined from that of the first slider/pot in the bank. All MIDI versions 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 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 consecutive, in the order of their default numbering on screen. Note that the Amp Controller is always first. (Any optional controller, default coded to "#128", is placed last. Since 16 pots/sliders are available, optional controllers are always included here.) SPECIAL INSTRUCTIONS FOR (ST)BELLS(2).CSD The nine slider controls in (st)bells(2).csd are on-screen, and operated with the mouse (one at a time) - optionally assisted by the cursor-left and -right keys. (Sliders are spaced to reflect the groupings discussed above.) Controls are selected by clicking on their handles (anywhere - the value won't change). They then can be dragged at the desired speed to a new value, or the cursor-left or -right keys can be held down to move them. There is another option as well: directly clicking the mouse on a new slider value. Upon doing this, the sonority will uniformly glide to its new setting at the rate set by the Glide Time (permitted range: 1-6 "seconds"). The Glide Time represents approximately *half* the number of seconds it takes to go from one value to the next. This rate can be changed during performance, though doing so is not particularly encouraged. (The pace of the work should remain fairly constant.) ADDENDUM: VERSIONS THAT USE A KORG KAOSS PAD (OR X/Y CONTROLLER) AS SECOND MIDI CONTROLLER Bells4maK and bells4ma2K are two additional versions that duplicate bellsma and bellsma2 - except that they use a Korg KAOSS Pad to create quad movement/placement from the originally mono signal. (They thus require an ASIO driver.) Either a KAOSS Pad 1 or 2 will work (and in exactly the same way). The KAOSS Pad is a control surface that consists of two contiguous MIDI controllers, one representing the x coordinate, the other the y. The Pad's default controller numbers 12 and 13 are also default for these versions. (Be sure to configure the Pad to transmit *only* x- and y-axis touch panel messages - on channel 1.) The first controller number is preset in the on- screen window prior to performance. IMPORTANT: As part of initial setup (once the run has started), touch the pad in the *topmost center position*; this will place the initial sound front-and-center. The Pad is performed either by dragging a finger over the surface, or by simply touching the pad in different positions. In the latter case especially, the Pan Lag Factor control is crucial. This control is both preset on-screen to an initial desired value, and varied during performance. Activity on the KAOSS Pad can be intermittent; the only requirement is that perceived spatial movement not be sudden or jerky. Also, the KAOSS Pad can optionally be assigned to a second performer. Since Csound currently only permits a single MIDI input, the two MIDI outputs must be combined into one. Three methods are available: 1) The simplest method is available whenever one of the MIDI devices has a MIDI Thru or MIDI In connector that will accept input from the other device. For this to work, the receiving device must also be capable of *MIDI merge*; some devices have this capability, others don't. Unfortunately, neither of the KAOSS models do, so this feature must be offered by your *other* MIDI device. 2) This method is the most universal, and will work as long as you can get both MIDI signals into your computer. Download (http://www.midiox.com) and install both MidiOx and MidiYoke. These utilities are free, and simple to use. They combine two or more MIDI data streams and present them to Csound as a single MIDI input. (MidiOx does many other fascinating things too - for example, enabling the *computer keyboard* to generate MIDI data.) The key (in MIDI Yoke) is to specify the MIDI devices you wish to combine, as "MIDI *Inputs*," and MIDI Yoke Junction 1 as the "MIDI *Output*." Then, in Csound, select MIDI Yoke Junction 1 as your MIDI *In* device. 3) The third option applies only when both devices use 5-pin DIN (traditional MIDI) connectors and cables: a simple, self-powered MIDI Merge/ Thru box with at least two MIDI inputs and one MIDI output. A few of these diverse boxes even adapt MIDI output to USB. Finally, *any* MIDI device that comprises two continuous controllers (with successive numbers) could substitute for the KAOSS Pad in this version. In particular, a simple X/Y joystick will work well - especially if not spring- loaded. To convert joystick data to MIDI (which is required), run the handy (and free) MIDI Joystick v1.1 utility (by Hubi!) found at: http://members.magnet.at/hubwin/midi.html (MDJSTK11.ZIP). Set the X and Y axes for Channel 1 and Controllers 12 and 13 (or whatever pair of numbers you want to specify under "KAOSS 1st Cont #"). Select MIDI Yoke Junction 1 as "Out". Whatever spatial controller you use, be sure that sound starts in the front- and-center position, and moves smoothly throughout performance. KAOSS PAD SUBSTITUTES - THE "G" VERSIONS Bells4maK and bells4ma2K are basically "poor person's KAOSS Pad substitutes" that duplicate the KAOSS Pad versions described above. They should be selected only when a KAOSS Pad is unavailable and quad panning is desired. Suffice it to say that you will find the KAOSS Pad versions to be far more user-friendly and intuitive. The "G" stands for "graphics," and these versions are performable by any graphics pad, preferably in "pen mode." They will also work, however, in "mouse mode," or indeed (when pressed into service) with *any mouse or touchpad* as spatial controller. (Since none of these controllers involve MIDI, MidiOx and MidiYoke are not required.) The following recommendations/ instructions apply: 1) The "G" versions require CsoundAV v0.0432 (Feb 25 2005) or later. 2) Screen resolution must be set to 640x480 (VGA). 3) In Taskbar Properties, uncheck "Always on top" (and "Auto hide"). (Right-click on taskbar, choose "Properties.") 4) With graphics pad, "Pen mode" is recommended (and full-screen window). 5) All on-screen controls are *preset* in these versions. Only event "Start(/Stop)" boxes/buttons are clicked during actual performance. 6) When using a pen, set the tip feel/response to as firm as possible. This will help avoid unwanted clicks on the numerous controls present in the performance window. For the same reason, use a very soft touch when tapping the window (in contrast to dragging) during performance. 7) Avoid the extreme top and bottom of the performance window: a) the top title bar is inactive (watch out where you enter and leave it), and you can easily drag/reposition the window; b) the bottom edge is likewise (dangerously) draggable, so you can inadvertently either resize the window or minimize it (by clicking on what's below). Any of these occurrences can be fairly disastrous. 7) Before beginning, set the pointer at the top of screen, center (but not in the title bar!) This will produce initial sound front-and-center. 8) In performance, be careful to move only the pointing device (pen, mouse, touchpad) you intend. Remember that all these devices are simultaneously active. 9) In other respects, proceed as for the KAOSS Pad versions.