ASCENSION for CsoundAV (2003) Arthur B. Hunkins "And it came to pass as he blessed them that he parted from them and was carried up into heaven." Luke 24:51 "And when he had said this, he was lifted up before their eyes, and a cloud took him out of their sight. And while they were gazing up at heaven as he went, behold, two men stood by them in white garments, and said to them, 'Men of Galilee, why do you stand looking up at heaven? This Jesus who has been taken up from you into heaven, shall come in the same way as you have seen him going up to heaven.'" Acts 1:9-11 "'Jesus,' he said 'remember me when you come into your kingdom.' 'Indeed, I promise you,' he said 'today you will be with me in paradise.'" Luke 23:42-43 To the memory of the great Catholic mystic, Olivier Messiaen GENERAL Ascension is a meditative solo performance piece for Windows-based computer running CsoundAV. It exists in three basic monaural versions - all indicated by "ascension" in their file name and differing only in their performance method: "ascension.csd" requires no MIDI hardware; "ascensionm.csd" requires an external MIDI bank of eight sliders or rotary knobs; "ascensionma.csd" necessitates a ninth controller to manipulate manually the amplitude of the initial "fundamental tone." There are stereo variants for each of these: "stascension.csd," "stascensionm.csd" and "stascensionma.csd." They add a random, independent and circulating pan to the ascending inharmonic partials, but otherwise are identical to their monaural counterparts. All versions use a bank of sliders or rotary pots to create slowly moving inharmonic partials over a "fundamental tone" which starts the piece and continues for a time, then disappears. (This tone may optionally reappear briefly and softly near the end, prior to the final fade.) Indeed, the piece can be said to issue from a single "note" that generates ever-upward spiraling multiple inharmonic partials. 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 Ascension lend themselves well to multi-speaker sound diffusion. (In diffusion, whenever the "fundamental tone" is present, position it front and center.) The stereo versions should not be diffused. Duration is a minimum of 7 1/2 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. Be aware that many ASIO drivers do not permit sr (sample rate) to be less than 44100 (here it is 22050). If this is your situation, try editing the values of sr and kr (they too are at the top of your .csd file) to 44100 and 4410 respectively - knowing that this will increase the load on your system. 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). PERFORMANCE All sliders are initially set to zero. Except for (st)ascensionma.csd, performance is begun by clicking on the Start/Stop Fundamental button, after making certain initial performance choices available in the window. (The fundamental is silenced by clicking on the same button.) With (st)ascensionma.csd, opening the "fundamental tone" amplitude fader starts the performance. The durations of these fades are set on the counters named Fund Start and Stop Secs (1-12 seconds each), and they may be varied in performance (in the case of a second, optional appearence of the "fundamental tone" - see below). In (st)ascensionma.csd, however, since the MIDI amplitude slider or pot performs the "fundamental tone" fades, these versions do not have preset fader timings. All controls may be varied during performance. Overall amplitude is soft to moderate. Level is primarily regulated by the amplitude pots/sliders for the four sets of inharmonic partials. Except for (st)ascensionma.csd, which has a "fundamental tone" volume control, balance between fundamental and inharmonic partials is determined by the amplitude controls on the latter, and general loudness by an external (probably preset) master gain control. At the opening, the "fundamental tone" should *slightly* predominate over accompanying partials. The bank of eight sliders/pots consists of four pairs; each pair controls a dual inharmonic partial sonority. The first slider of the pair, named Amp Mod 1-4, determines amplitude; the second, Mod 1-4, frequency of the "dual partial." The four frequency sliders are all set to zero initially; this tunes them in unison. In each case, the first time a pair is used, its frequency pot is at zero while its amplitude control is opened. An important feature of the slider pairs is that each frequency pot controls all frequency pots above it - that is, the pots are cumulative. Thus, for example, the frequencies of Mod 2 will always be as high as, or higher than Mod 1; Mod 3 as high as, or higher than Mod 2, and so forth. In particular, when Mod 1 is moved higher, Mods 2-4 also will move higher, even if their volume controls are off. The performance begins with the "fundamental tone" only - no inharmonic sliders/pots are open. Following this, one or more Amp Mod pots are turned up. Once an Amp Mod pot is opened, its associated Mod control may be turned on. In other words, the *first time* a Mod control is opened, it must be preceded by its Amp Mod control. In addition, before a Mod control is first used, the Mod control immediately below it must either already be sounding, or - if silent - it must be at zero. This guarantees that each new set of dual inharmonic partials starts at unison with already sounding pitches. (Mod 1's lower partial matches the fundamental tone. Note that Mod 1 *must* be opened before the "fundamental tone" fades out; of course, the fundamental would normally last much longer - see further below.) Pots/sliders are moved one at a time, and the performance gradually and generally moves from the Mod sliders at zero to at or near maximum. For the most part, 3 or 4 sets of partials are open simultaneously; after they have all entered, two sets sounding is a minimum. Their amplitudes and relative strengths are varied, as well as their frequencies. Pitch change is primarily but not exclusively higher, and speed of change should be relatively unchanging. Pitches need *not* be in constant motion; indeed, they often rest for short periods of time on particularly euphonious combinations of partials before moving on. Slider/pot volumes should change at a slow-to-moderate, and fairly consistent rate. Except for the brief "pitch pauses" mentioned above, the combinations of inharmonic partials should seem to be in a slowly moving state of flux, up until the final segment discussed below. The "fundamental tone," present from the start, is faded out part way through the performance, as a point determined by the performer - somewhere in the middle of the composition. It does not appear again, except optionally - briefly and softly - toward the end, when the inharmonic partials have climbed to their highest points, but prior to the fadeout of the Mod 4 partials (see below). This option mainly pertains to (st)ascensionma.csd, where there is manual control of the fundamental's amplitude. In other versions, the low volume of a second appearance of the fundamental must be created by a gradual reduction in the external master gain control - an adjustment that suggests a performance assistant. In summary, the initial fundamental is moderate in volume; the second, optional appearance, soft. The "fundamental tone" (initial appearance) has long since disappeared when the Mod frequency controls reach their maximum toward the end - a final, stabilizing "plateau." During this concluding passage, all four Amp Mod controls are on, at a less than moderate volume (settings may vary among the controls). By this time, Mod levels have decreased to this level (if they were previously higher). It is during this final passage that the optional second appearance of the "fundamental tone" occurs. The performance concludes with the Amp Mod pots fading out one at a time. During this last segment, no frequencies change. Amp Mod 4 is the last (and highest pitched) set of partials to remain. The other three sets make their exit in any order the performer wishes, but *not* 1-4 in ascending order (2, 3, 1, 4 - or 3, 2, 1, 4 are good possibilities). SPECIAL INSTRUCTIONS FOR (ST)ASCENSIONM.CSD AND (ST)ASCENSIONMA.CSD These versions require external MIDI controller hardware. The set of 8 (or more) 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). (St)ascensionma.csd requires one additional slider or pot on the external MIDI device - to work as a volume fader for the "fundamental tone." This 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. In some cases, nothing will have to be programmed into the MIDI device; the default configuration will work when the number of the first controller of the bank of eight is entered on the performance screen. (The performer must consult the device documentation to learn the default number of the first controller in the bank. 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.) 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 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. For (st)ascensionma.csd, 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. Finally, for (st)ascensionm.csd (as well as 4mG and 4mK), there are additional options for starting and stopping the "fundamental tone." 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 substitute as a Start/Stop Fundamental control.) This may be a more convenient way for the performer to control the "fundamental tone," as there would then be no necessity actually to "perform" on the *computer*. (Note that the extra MIDI slider used in (st)ascensionma.csd - and related versions - also provides for a "computer-independent" performance.) 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.) SPECIAL INSTRUCTIONS FOR (ST)ASCENSION.CSD The eight inharmonic partial sliders in (st)ascension.csd are on-screen, and operated with the mouse (one at a time) - optionally assisted by the cursor- left and -right keys. (Amp Mod amplitude sliders are narrower than Mod frequency sliders, to better distinguish between the two types.) 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-10 "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 Ascension4mK and ascension4maK are two additional versions that duplicate ascensionm and ascensionma - except that they use a Korg KAOSS Pad to create quad movement/placement from the originally mono signal. (They thus require an ASIO driver - see possible problem above.) 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 Ascension4mG and ascension4maG 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. 10) The KAOSS Pad and its "substitutes" *always* operate on channel one.