SANCTUS (2025) for realtime Csound (PC and Android versions) Arthur B. Hunkins abhunkin@uncg.edu www.arthunkins.com Sanctus, Sanctus, Sanctus Dominus Deus Sabaoth. Pleni sunt coeli et terra gloria tua. Hosanna in excelsis. GENERAL SANCTUS is a live-performance Csound instrument rather than a traditional composition. It is a framework for improvisation - either totally free, or structured (to whatever degree) by the performer. It is presented in three versions: Sanctus8.csd, Sanctus9.csd, and Sanctus12.csd. These are the titles of the console editions (for PC, Mac and Linux), which require a MIDI controller with 8, 8-9 or 8-12 sliders or knobs respectively. Three Android editions parallel those for console, with suffixes of "Android" appended to their titles. Android editions are self-contained, requiring no external controller. The Android editions are variously performable on the following Android Csound apps: the "canonical" Csound for Android app residing at https://github.com/gogins/csound-android/releases (and requiring Android OS 5 or higher), and any of the "alternative" Android apps found at http://www.arthunkins.com/Android_Csound_Apps.htm (Android OS 4.1.1 or higher). The Android editions should run on all Android smartphones, tablets and Chromebooks (the latter with the ability to sideload Android apps). As these apps are not available from the Google Play store, you must enable an "Unknown or Third-Party sources" option somewhere within Settings on your Android device, and perhaps also a comparable Install option. After app installation, copy/paste your selected .csd to any user-accessible folder on your device (suggestion: the Music folder). Then Open that file within the app, and Run Csound. (Note that, for Chromebooks, third-party apps can only be installed in Developer Mode, and cannot be installed at all within Chrome OS Flex.) VERSION SPECIFICS SANCTUS is an instrument of 4 "voices," each consisting of an 8-note chord. Notes of a given chord are all the same interval apart. Base (lowest) notes of the chords, in ascending order, are also the same interval apart. Amplitudes of the voices are determined by the first four controllers, while the interval between pitches within a chord is controlled, on a per voice basis, by controllers 5 through 8. The simplest version, Sanctus8(Android), comprises only these 8 controllers. The remaining controllers apply to the voices as a group. Slider 9 governs overall tone quality, which becomes brighter as the control is raised. Sanctus9(Android) includes only this single additional controller. Controller 10 introduces random amplitude modulation (a kind of tremolo), with each voice randomized differently. Slider 11 adds fast and random frequency modulation - an expanding noisey quality to the chords, with each note taking on an identical proportional range of noise to its pitch. The final slider (and the least important one) is a basic reverb control that thickens and intensifies the overall sound. SanctusAndroid12 implements all of these additional controllers in numerical order. In contrast, Sanctus12 (the MIDI version) can incorporate any or all, placing them in any desired order. GENERAL PERFORMANCE CONSIDERATIONS Audio output is stereo (or, in reality, two-channel mono). With Android, if you get any "glitching" in performance (or alternatively, a complete crash), disable WiFi, Bluetooth and any other connections to your device. (This includes power.) Turning off the one-line printout (DISPLAY) feature may also help a bit. There is no recommendation for performance duration. (The demo performance included in this distribution lasts nearly 8 minutes. It realizes Sanctus12, using all controllers and the default settings. No specific frequencies were determined in advance.) NECESSARY EDITS All editions of this work, especially those for console computers, will likely require minor text editing - primarily to accommodate a particular platform and/or MIDI device. These edits are made in any editor, as the .csd's are simple text documents. For the console versions: under , near the top of the .csd, 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 output includes 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. (If you have 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.) For both console and Android versions, a number of orchestra macros (likewise listed toward the top of the .csd) may well require editing. Note that any substitutions you make must be enclosed by #'s. First, there are three macros common to all SANCTUS versions: DISPLAY, PITCH and PITCHMULT. DISPLAY is valued at either 1 or 0, depending on whether or not you want to show a one-line screen printout of PITCHMULT values (default=1). (Note that screen printout is only available on the "canonical" app and the "alternative" Csound6c.) Suggestion: if you don't need to see these values, turn DISPLAY off. PITCH specifies the base frequency of voice 1 (default=200Hz). PITCHMULT indicates a multiplication factor applied to the lowest pitch of each voice (2-4) in ascending order. (In other words, the pitch interval between the low notes of all the chords, in order, is the same. It is sliders 5-8 that independently govern the constant interval ratio between *chord members* in their particular voice.) The SanctusFreqSelect and SanctusFreqSelectAndroid .csd's included in this distribution can aid the user in frequency selection. These files will be particularly helpful to performers wanting more precise control of pitch. These utilities are detailed at the end of this article, and will further elucidate the above macros. For console versions of SANCTUS, there are 6 additional macros. CHAN specifies the MIDI channel number for all messages (default=1). A value of 0 indicates a unique MIDI setup consisting of ascending channel (CHAN) values - from 1 up, with a constant controller (CTRL) value of 7. The CTRL macro defaults to 20, the number of the first of 8 contiguous CC's (Continuous Controllers) your MIDI device is sending on. (Channel 1 is the usual channel for these messages, as indicated above.) The remaining 4 (optional) macros specify the CC number for specific MIDI controllers: TONECTRL (default = 28), RAMPCTRL (default=29), RFRQCTRL (default=30) and RVBCTRL (default=31). These functions are implemented by sliders 9-12, also described previously. Editing for Android The "canonical" Csound for Android app from github.com, includes its own editor. (Your .csd automatically opens in the app's Edit mode.) Additionally, all the "alternative" Csound6 apps (not Csound5a) include an Edit button which will access any text editor installed on your device, once a .csd is loaded. When finished editing, be sure to Save; your revision is immediately available to Run without reloading. PERFORMANCE TIPS AND SUGGESTIONS Performance is completely improvised; no score is provided. (Performers are free to pre-plan anything they like.) Simply note the following: 1) Set all controllers to 0 prior to running Csound. After start, optionally adjust any controllers other than the first four, to a higher value. Performance begins by raising one or more of the first four controllers, and ends when all of them first return to 0. 2) Move knobs/sliders fairly slowly and evenly, with the possible exception of sliders 5-8. (These controls have no effect until their partner slider [1-4] returns to zero, thereby initiating a new "note".) Movement is not necessarily constant, though it may be. The overall sonority should seem to evolve and transform, all in an relatively unhurried, relaxed fashion. 3) On Android, be sure that, if you stop moving a sustaining slider at an intermediate point, you resume as close as possible to the same spot. Otherwise a "skip" will occur, which should not happen in such a context. 5) It is not necessary to use all sliders. 6) Finally, bear in mind that, on some Android devices or apps, only one control can be moved at a time. On PC's, with MIDI, there is no such limitation; feel free to manipulate several controls simultaneously. THE PITCH SELECT UTILITIES Accompanying this distribution are two utilities designed to help users select specific frequencies for the four SANCTUS "voices". SanctusPitchSelect is designed for console .csd's, SanctusPitchSelectAndroid for Android versions. They are intended for use with the performance "DISPLAY" macro set to 1, i.e., whenever specific frequencies are considered to be particularly important. The optional 9th control, which varies tone brightness, is included here because such coloration can significantly affect pitch selection. These first 8-9 controls parallel those found in the SANCTUS and SANCTUSAndroid .csd's. The only difference is that here sliders 5-8 take effect immediately, allowing for immediate tuning of various voice combinations. Desireable values and combinations for sliders 5-8 can be replicated in performance by setting these controls to the same values previously displayed in the single-line printouts. As for the remaining controllers of the utilities: Slider 10 adjusts the base frequency of voice 1 (within the 200-400Hz range), while slider 11 determines the multiplication factor for ascending voices 2-4 (the factor ranges from 1.08 to 1.47). These values are printed to the screen as "P=xxx" and "PM=x.xx" respectively, and are intended to be substituted into the PITCH and PITCHMULT macros of the performance .csd's. f