LUMEN CHRISTI (2021) for realtime Csound6 (PC and Android versions) Arthur B. Hunkins abhunkin@uncg.edu www.arthunkins.com "In him was life, and the life was the light of men. And the light shines in the darkness, and the darkness grasped it not." John 1:4-5 "The people who walked in darkness have seen a great light; those who lived in a land of deep darkness - on them light has shined." Isaiah 9:2 GENERAL LUMEN CHRISTI is not so much a composition as it is an instrument, or a framework for (solo) improvisation. It exists in two versions. Lumen.csd is the version for PC's (all platforms), Csound 6.01 or higher. It requires a MIDI controller with 8, optionally 9, knobs/sliders. (Sliders, especially long-throw, are best.) It is normally performed from the console (Csound command line). LumenAndroid.csd is for Android devices running either the standard Csound for Android app (free @ play.google.com), or any of the Csound6 "alternative" apps found at: http://arthunkins.com/Android_Csound_Apps.htm. The standard app requires at least OS 5.0 and works on all smartphones and tablets, while the "alternative" apps run on any OS from 4.1.1 up. Note that to download one of the "alternative" apps directly to Android, you may need (in Settings -> Security) to select "Unknown Sources" to install apps from other than play.google.com. After installation, copy/paste the LumenAndroid.csd to any user-accessible folder on your device (suggestion: the Music folder). Then Open that file within the app, and Run Csound. You also have the option to download an alternative app to your computer, then copy it (via USB transfer) to the Download folder on your device and install it from there. NECESSARY EDITS TO THE TWO VERSIONS Several orchestra variables (MACROs) are available for the user to customize. They are found toward the top of both Lumen.csd and LumanAndroid.csd. (You can change these in any text editor.) PITCH is the only MACRO found in both versions; it sets the stable base frequency on which the entire sonority is built. While 125Hz is its default, the user is free to select any frequency from 100 to 280Hz. The remaining edits may be required for the *PC version only*. First, under , you'll need to adapt for Linux if you are on other than a Windows or Mac system. (Recall that an opening semicolon comments out a row of code; removing the semicolon implements the row.) If you have a single MIDI device, the default -M0 is fine. If your console outputs an "unrecognized MIDI device" error, look for the MIDI device list, and substitute your appropriate device number for the zero in -M0; then rerun Csound. (With more than one audio output device, you may need to follow a similar procedure for -odac, appending the appropriate device number - e.g., -odac6. The default is effectively -odac0, the number of your usual stereo device.) The additional PC MACROs that can also require modification are: SR, CHAN, CTRL and CTRL2. The first of these (SR) is Sample Rate. Its default is 48000, but the higher 96000 is an option that allows for a bit more brilliance. Note that the higher rates, 48000 and 96000, are only available in the PC version; Android Csound is fixed at 44100 (which is also a last-resort option for PC). CHAN defines the MIDI Channel your controller is sending on (default is 1, the normal channel). A special code, CHAN "0", indicates that your MIDI device sends Continuous Controller 7 (CC 7) messages on its first 8-9 channels. (The order of controls in this case parallels the slider sequence outlined below.) Otherwise, CTRL (default=20) specifies the beginning controller number of 8 successive controls, while CTRL2 (default=28) designates the optional reverb control. Note that for all these definitions, numeric substitutions must be enclosed by #'s. PERFORMANCE CONSIDERATIONS The MIDI and Android knobs/sliders vary the following parameters: SLIDER 1: overall amplitude control. SLIDERS 2/3 (a pair): amplitude/speed of random *amplitude* variation (all frequencies randomized separately). When slider 2=0, slider 3 has no effect. SLIDERS 4/5 (a pair): amplitude/speed of random *frequency* variation (all frequencies randomized separately).When slider 4=0, slider 5 has no effect. SLIDER 6: varies the distance (in fixed Hz) between each of the stacked frequencies (31 "voices" in all above the base). Responsible for the basic sonority. See the "Sliders 6 and 8 Note" below. SLIDER 7: adds up to the next 5 harmonics in all (or most) of the 31 stacked frequencies (as a group) SLIDER 8: band-reject filter control (see Note below, under item #4, as well as the "Sliders 6 and 8 Note") SLIDER 9 (optional): reverb control Performance is completely improvised; no score is provided (though the performer may choose to follow his/her own specific or more generalized "roadmap"). Simply observe the following: 1) For console Csound, set all controls to 0 before starting Csound. After start, any control except sliders 1 and 8 may be preset to another opening level. 2) Optionally for Android, assuming slider 1 is 0, levels may be freely assigned for these other controls *before* running Csound. 3) The performance starts when slider 1 is raised, and ends when slider 1 returns to 0. 4) Controls are moved gradually, one or more at a time. There should be no jumps in value (important for Android sliders, as when attempting to retrieve a previous value!) Overall pace is slow and fairly consistent - no dramatic events. (Note: Slider 8, which controls filtering, may be somewhat more active than the others, especially as the texture becomes more complex. See further below.) 5) It is not necessary to use all the knobs/sliders. *Sliders 6 and 8 Note*: Performance systems that display console output can take advantage of a particular feature built in to this work: a readout of the current values of sliders 6 and 8. (These systems comprise PCs running from the console, the standard Csound for Android, and "alternative" Android Csound 6c.) Slider 6 controls the basic sonority of this work. It can be preset to any specific value (by sight only) at the beginning, and returned to that precise value at any point during performance, including at the end. It thus offers a stable alternative to either extreme (0 or max) on slider 6. Though Slider 8 is initially set to zero, its later movement (which may be fairly active) can create a substantial variation in timbre. Its current value is displayed let the performer pinpoint and return to specific desired settings, or otherwise limit the filtering. In any case, the display should enable the performer to more finely track this wide-ranging control. There is no suggested duration for performance. Overall level is soft-to-moderate. The demo improvisation/performance that accompanies these materials was made on a PC, with a MIDI controller using the full complement of 9 knobs/sliders and default settings.