BEATA VISIONE for realtime Csound5 (2006) Arthur B. Hunkins Jesus took Peter, James and his brother John, and led them up a high mountain by themselves, and was transfigured before them. And his face shone as the sun, and his garments became white as snow. And behold, there appeared to them Moses and Elias talking together with him. Matthew 17: 1-3, 14 Now while they were talking of these things, Jesus stood in their midst and said to them, "Peace to you! It is I, do not be afraid." But they were startled and panic-stricken, and thought they saw a spirit. Now he led them out toward Bethany, and he lifted up his hands and blessed them. And it came to pass as he blessed them, that he parted from them and was carried up into heaven. Luke 24: 36-37, 50-51 To the One who pursues us and keeps breaking into our lives In celebration of apparitions everywhere; may our hearts and minds be open to their Divine message. GENERAL BEATA VISIONE is a short, meditative, solo performance piece for computer running Csound5. It exists in 13 versions - all indicated by "Vision" in their file name. The versions differ from one another largely in the specific type of performance controller they require. Those with the letter "K" toward the end of their name require one or more MIDI keyboard Keys, or buttons programmed to send MIDI note messages; with "C", one or more rotary Controllers or sliders; with "ASC", only an ASCII keyboard (no MIDI controller); with "Keypad", only an external 18- or 19-key keypad (also non- MIDI). "R" indicates a Reduced version, featuring 12 tones (in 4 "sets") rather than the usual 15 tones (5 "sets" - see further below). Specific performance requirements for each version are listed at the end of this text. All versions can be performed in 2-, 4-, and 8-channel (circular) speaker configurations. A parallel set of standalone .exe's is also available - currently (7/07) 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 Vision.zip download (which includes this file), their filenames begin with "L" and end with ".exe" instead of ".csd". (For platforms other than Windows, download Vision.zip and run only the .csd files.) Whereas Csound5 must be installed to use the Vision.zip package, another collection, VisionSA.zip, is intended for use *when Csound5 is not installed*. (VisionSA.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 individual run-time Help | About files for details. Csound5 is a software sound synthesis program available for all major computer platforms. BEATA VISIONE specifically requires Csound5.02 or above. Free downloads for various systems are found at: http://csound.sourceforge.net. BEATA VISIONE does not lend itself to multi-speaker sound diffusion. Minimum duration is 5 minutes. (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. 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 of manipulating MIDI pots/sliders, and/or pressing buttons or keys. In general, the different versions vary the amplitudes of either 4 or 5 "sets" of three tones. Each threesome consists of a basic pitch, and an upper and lower "sideband" which adds and subtracts a given percentage of the source frequency. (This process is akin to "amplitude modulation.") The percentage is the same for all sets. The basic pitch of each higher set is the upper "sideband" of the one below. Some versions include a frequency glide feature. This fixed and very small frequency component is added equally to all pitches either within single sets, or in simpler versions, to *all* tones. (This inharmonic inflection process is akin to "frequency shifting.") As notes fade in, they begin with heavy reverb, and emerge to light-to-no reverberation. (The amount of "peak reverb" is a performance preset variable between 0 and .2, or 20% max.) As tones fade out, the process is reversed. Finally, while amplitudes may be simultaneously adjusted in any combination desired, they are usually varied individually, or by full or partial "sets." 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) EACH CONTROL (of a set of 13 or 16) 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. This option is implemented (and may be useful) *only* in (L)Vision13CR and (L)Vision16C. (In the standalone .exe's, 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 higher values producing increasingly better quality. Select the highest rate at which you get click-free, uninterrupted sound. (Default = 44100 SR.) 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. PORT is the frequency glide speed in versions where the feature is both present, and preset. RVB is the percentage of reverberation (0-20%) added to tones at their full amplitude. Default = .05, or 5%. In standalone .exe's, the same range is expressed on-screen as 0-4, with 1 as default. VERSION = A or B (0 or 1; default is 0). Version A starts with a base frequency of 800Hz, while Version B's fundamental is 300Hz. FRATIO is the ratio of "sideband" frequencies to the basic pitch. These simple-number ratios are below .5 for Version A, above .5 for Version B. They are the same for all "sets." The 6 choices for Version A are: 2/7, 1/3, 3/8, 2/5, 3/7 and 4/9 (0-5). Version B features 7 options: 4/7, 3/5, 5/8, 2/3, 7/10, 5/7 and 3/4 (0-6). The first choice (0) is default for both versions. (In the preset selection for Freq Ratio in standalone .exe's, the last two options for Version A are duplicates.) GLIDE represents the (identical) preset attack and release times for individual tones or sets of tones - in versions without continuous controllers for these features. GLMAST(ER) is a master version of GLIDE, for use primarily as a group fadein (at the beginning) and fadeout (at the end). In "K" versions, NOTE(1) and NOTE2 specify MIDI note numbers for keys or buttons. Though the default values are 60 (C4) and 62 (D4), any desired values may be substituted - especially when MIDI controllers have other "notes" more readily available. For versions using more than two keys/ buttons, NOTE is the first of a bank of 12 or more contiguous note numbers. LATCH selects whether MIDI keys, and buttons programmed as notes, are in latch/toggle mode, or the more usual "momentary" mode. (Either works.) Default = 0 (momentary); latch/toggle = 1. CTRL(1) specifies the CC number of one controller, the first of several single controllers, or the first controller of an 8- or 16-controller bank. CTRL2 (even CTRL3) indicates the second (or third) separate controller, or the first controller of a second bank. (Defaults: CTRL[1] = 20; others follow continuously, or if the 17th controller, #7.) Prior to running a performance file, be sure to turn all pots/sliders to zero, and any buttons/keys off. Only then turn up any pots/sliders to a higher initial level. Overall volume should be set beforehand to achieve a moderate level with all tones fully on. Once this level is set, it remains untouched throughout. All performances follow the following sequence of events (note that these instructions are quite "open," especially after the initial series): 1) Members of "set 1" fade in first. The set may fade in as a group, by single members, or as 2 + 1 or 1 + 2 tones. In all cases, *the basic pitch is the first* (or part of the first group) to fade in. Note that before there is any sound, the master level control (glide) must be turned up. 2) The other "sets" (2-5) enter, in order, following the same procedure as set 1. At the end of this process, all tones are sounding. 3) Immediately following this initial sequence, individual tones and sets of tones begin to exit freely and reenter. The texture remains relatively full at all times, with at least the equivalent of two sets (6 tones) sounding. 4) Once this process is well under way, the frequency glides may optionally be introduced. The glides should be nearly imperceptible, with no more than a quarter of the available range being traversed at a time. The glide is always in an upward direction, and it is not necessary to use the entire range. Only toward the end may it gradually return, fully or part way, to its original setting. Wherever the glide ultimately comes to rest, it must remain there for a minimum of 30 seconds before the piece concludes. 5) Optionally, the texture may thin gradually in preparation for the ending. Prior to the final fadeout, a minimum of three voices must still sound. These may be members of the same set or not. The fadeout of these extant voices occurs nearly simultaneously; they may well exit together via a master amp glide or controller. SPECIAL INSTRUCTIONS FOR ON-SCREEN, ASCII KEYBOARD (INCLUDING WIIMOTE) AND KEYPAD VERSIONS LVision.exe (on-screen mouse-click control) and VisionASC.csd/LVisionASC.exe (ASCII keyboard only) share a common characteristic: their control mechanism is a set of non-MIDI buttons or computer keys. The same is true for VisionKeypadR.csd/LVisionKeypadR.exe, which are controlled by an external 18- or 19-key (ASCII) keypad. Note that the Keypad versions handle only *four* sets of tones (the lower four) rather than five. In the case of LVision.exe, the buttons are on-screen, and are numbered 1- 15, corresponding to the five sets of three tones each. The first number of set #1 is the main pitch, the second number the upper "sideband," the third the lower sideband. Set #2, tones 4-6, repeats the pattern, and so on. Five additional buttons, A through E, trigger each of the five *sets* off and on. The "set" buttons interact with the individual ones: if all three individual buttons are either on or off, the "set" button is forced to the same setting. Also, the "set" button forces any of its own members that do not already correspond, to its state. All on/off conditions are visually indicated on the buttons. Freq Glide/Incr is handled by two increment/decrement buttons (+1 and -1). The total glide range is divided into four parts: 0 (the initial setting) to +4. The Freq Glide *speed* is determined via preset slider. The ASCII keyboard versions parallel LVision.exe's layout. The "1" through "5" keys correspond to LVision's on-screen A through E, and the five sets of three keys/tones are aligned below their respective "set" numbers. Thus, the "Z" key is the main pitch for set #1, "A" is the upper "sideband" and "Q" the lower. Correspondingly, "X," "S," and "W" pair with set #2, and so on. The Enter key is master on and off. (Without pressing Enter toward the beginning, there will be no sound!) Here, Freq Glide/Incr is handled by (any of) the + and - keys, again in increments/decrements of quarters of the total range. A feedback box, displaying 0-4, keeps track of the current value. On Windows 2000 and above, both VisionASC.csd and LVisionASC.exe may also be performed with the Nintendo WiiMote as controller. Here, only the 5 "sets" of tones are implemented - not individual "sidebands"; and only the Wiimote's buttons are used. Sets 1-5 are assigned the WiiMote's Up, Down, A, 1 and 2, respectively; the - and + buttons correspond, and B functions as Enter (Stop/Start). 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 Vision.PIE, run it, then minimize GlovePIE; finally, run VisionASC.csd (from the command line) or LVisionASC.exe. External Keypad versions work with ASCII keypads that include a Backspace key (and for the 19-key option, a double- or triple-zero key). With these versions, the Num Lock must always be kept engaged. Both are Reduced (R) versions, featuring only 4 sets of tones. The layout of keys generally parallels the ASCII keyboard versions. The performer has an on-screen or internal choice of KEYPAD option, with an 18-key pad as the default. (If a 19-or-more-key keypad performs the 18-key version, the 0 and 00/0 keys are simply duplicates.) The first tone set comprises the numbers 7-9; the second set, 4-6; the third, 1-3; and the fourth, either 0, dot, and Backspace (18-key version) - or 0, 00/0, and dot (19-key version). The order for each set is main pitch, upper sideband, lower sideband. The mechanism for turning sets on and off as a unit is different: the asterisk and forward slash keys determine whether the main pitch key (7, 4, 1, or 0) acts as a single tone button or a set on/ off button. If the *asterisk* is last pressed, the main pitch keys control a single tone (this is the default setting). When *slash* is last pressed, the 7, 4, 1, and 0 keys behave as group on/off for their respective sets. (It is anticipated that asterisk and slash may alternate freely in performance.) Enter is again master on and off, and + and - keys handle Freq Glide. The physical arrangement makes the most sense when the pad is positioned with its left side toward the performer. Please note that VisionASC.csd and VisionKeypadR.csd should be performed *only from the command line*. (The key-sensing routine will not work otherwise.) In these versions, the performance window offers visual feedback on the "sets" that are currently on/off, as well as the Frequency Increment level. Also, LVisionASC.exe and LVisionKeypadR.exe must have their performance windows selected, not "View Output" (for a similar reason involving the key-sensing routine). THE INDIVIDUAL VERSIONS AND THEIR REQUIREMENTS LVision.exe (no comparable .csd version) - On-screen performance via mouse clicks. 15 tones (5 sets of 3; individual on/off controls plus a combined control for each set). No frequency glide. VisionASC.csd (LVisionASC.exe) - ASCII keyboard only. VisionASC.csd (only) must be run from the command line. 15 tones (5 sets of 3). Very limited frequency glide (4 steps; single control for all tones). VisionKeypad.csd (LVisionKeypad.exe) - External 18- or 19- (or more) key keypad only. (KEYPAD type selected by user.) VisionKeypad.csd (only) must be run from the command line. 12 tones (4 sets of 3). Very limited frequency glide (4 steps; single control for all tones). Vision1K12CR.csd (LVision1K12CR.exe) - MIDI controller: one key, or button sending note messages; 12 Continuous Controllers - rotary pots or sliders, with consecutive numbering in groups of 8 and 4. 12 tones (4 sets of 3). No frequency glide. Vision1K16CR.csd (LVision1K16CR.exe) - MIDI controller: one key, or button sending note messages; 16 Continuous Controllers - rotary pots or sliders, all consecutively numbered. 12 tones (4 sets of 3). Full frequency glide. Vision12K5CR.csd (LVision12K5CR.exe) - MIDI controller: 12 keys, or buttons sending note messages - consecutively numbered; 5 Continuous Controllers - rotary pots, sliders and/or other, 4 consecutively numbered. 12 tones (4 sets of 3). Full frequency glide. Vision15K6C.csd (LVision15K6C.exe) - MIDI controller: 15 keys, or buttons sending note messages - consecutively numbered; 6 Continuous Controllers - rotary pots, sliders and/or other, 4 consecutively numbered. 15 tones (5 sets of 3). Full frequency glide. Vision16K.csd (LVision16K.exe) - MIDI controller: 16 keys, or buttons sending note messages - consecutively numbered. 15 tones (5 sets of 3). No frequency glide. Vision16K1C.csd (LVision16K1C.exe) - MIDI controller: 16 keys, or buttons sending note messages - consecutively numbered; 1 Continuous Controller - rotary pot, slider or other. 15 tones (5 sets of 3). Limited frequency glide (single control for all tones). Vision16K5C.csd (LVision16K5C.exe) - MIDI controller: 12 keys, or buttons sending note messages - consecutively numbered; 5 Continuous Controllers - rotary pots, sliders and/or other, 4 consecutively numbered. 12 tones (4 sets of 3). Full frequency glide. Vision13CR.csd (LVision13CR.exe) - MIDI controller: 13 Continuous Controllers - rotary pots, sliders and/or other, 12 consecutively numbered. 12 tones (4 sets of 3). No frequency glide. Multichannel controller option (CC7). Vision16C.csd (LVision16C.exe) - MIDI controller: 16 Continuous Controllers - rotary pots or sliders, all consecutively numbered. 15 tones (5 sets of 3). No frequency glide. Multichannel controller option (CC7). Vision17C.csd (LVision17C.exe) - MIDI controller: 17 Continuous Controllers - rotary pots, sliders and/or other, 16 consecutively numbered. 15 tones (5 sets of 3). Limited frequency glide (single control for all tones). Vision17CR.csd (LVision17CR.exe) - MIDI controller: 17 Continuous Controllers - rotary pots, sliders and/or other, 16 consecutively numbered. 12 tones (4 sets of 3). Full frequency glide. Vision21C.csd (LVision21C.exe) - MIDI controller: 21 Continuous Controllers - rotary pots, sliders and/or other, with consecutive numbering in 2 groups of 16 and 4. 15 tones (5 sets of 3). Full frequency glide.