GLORIOSA (2023) for realtime Csound (PC and Android versions) Arthur B. Hunkins abhunkin@uncg.edu www.arthunkins.com GENERAL GLORIOSA is another in a long line of creations in praise of the Deity, expressed in the feminine gender. It is not so much a composition as it is an instrument, or a framework for (solo) improvisation. The work exists in two versions: one for console PC's (all platforms) requiring MIDI controllers, and one for Android devices. Output for both versions is stereo. The single harmonic sonority of GLORIOSA consists of a cluster of 8 odd-numbered, high harmonics of a base frequency within a 50-200Hz range. Due to CPU limitations, the Android versions are limited to the first 4 of these harmonics. A second cluster consists of a slightly detuned duplicate of the first, to create a slow beating effect when sounding together. All versions require a set of 5 - 9 knobs/sliders (sliders preferred), and MIDI keyboard (5 - 12 keys) or the same number of buttons, pads or ASCII keys. The knobs/sliders basically control the dual harmonic sonorities, while the others manage the up to 6 vocal samples as well as certain pitch aspects of the harmonic sonorities. The Console Versions Console versions are for desktop and laptop computers, all platforms (PC, Mac, Linux), and are normally performed from an ASCII keyboard with MIDI controller. The number of MIDI knobs/sliders required is specified by the number 8 or 9 in the version's title. (Note that MIDI controllers with a bank of 8 knobs/sliders often have an additional slider such as a master volume control or modulation wheel that can be pressed into service.) The last control (#8 or 9) is the one that optionally determines the volume of the vocal samples. The 9-slider versions simply insert an additional control into the 8th position. While for 8-channels the 7th slider creates a common timbral effect (described below), the interpolated control allows for individual treatment of the clusters. (Each cluster is featured on a separate channel.) "Simp" in the title indicates a modestly Simplified modification of the above versions. Here the final set of 6 buttons/MIDI or ASCII keys is limited to 3, reducing the complexity of the set's pitch control of the harmonic sonorities. (This makes performance less intense!) "ASC" versions position the required 9 - 12 buttons/pad/key controls on the ASCII keyboard. The six sample triggers are assigned to number keys 1 - 6. The full versions locate the 6 pitch controls to numbers 7 - 9, 0, "-", and "=" (alternative: "Enter"). Simp versions use the first 3 of these. The final slider (either #8 or 9) determines the level for the samples. For "Keys", these controls are assigned to a MIDI keyboard, pads, or buttons. As seen above for ASC versions, the sample levels can be handled by the final slider; however, for controls with velocity sensitivity, there is a velocity/volume option (see MACROs below) to use the pad/key itself. (Note: pad velocity is notably imprecise.) The Android Versions GLORIOSA places a heavy real-time burden on processors, especially those less powerful, such as found in Android devices. As a result, the Android versions feature a reduced set of features, requiring only 5 sliders, the last of which is the designated volume control for samples. In addition, the number of pitch controls for samples is limited to 3. Even with this smaller footprint, Android Csound is prone to crash. In such cases, the Sample Rate (sr) may be reduced successively from the default 32000, to 22050, 16000, and 11025. (This substitution can be made by any text editor toward the top of your .csd - which is a simple text file.) GloriosaAndr is for the standard Csound for Android app downloadable from play.google.com. (This app requires OS 5.0 or above.) As the standard app includes only 5 buttons, this version is limited to 2 vocal samples, rather than the usual 6. These are triggered by buttons 1 and 2. (The 3 sample pitch controls cover the remaining buttons.) GloriosaAndrAlt is designed for the "alternative" Android apps (except for Csound5a), and requires Android OS 4.1.1+. Since these apps offer more buttons, the full complement of 6 samples is accommodated, followed by the same 3 pitch controls. Note that all the Android apps allow for dragging only a single slider at a time. (Only the Csound for Android app on *Chromebooks* permit multiple dragging.) Downloading an "Alternative" Android App: These "alternative" apps are located at: http://www.arthunkins.com/Android_Csound_Apps.htm To download an alternative app directly to Android, you may need (in Settings -> Security) to select "Unknown Sources". (This allows you to install apps from other than play.google.com.) After installation, copy/paste one of the Android csd's 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. (Note: while this is not feasible on Chromebooks, it is on Android tablets.) NECESSARY EDITS TO THE CONSOLE VERSIONS You will likely need to make the following edits to perform a console version. These changes can be made in any text editor (e.g., Notepad), and are found toward the beginning of each .csd. 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.) MACROs You'll also probably need to modify the MACROs found a little further down the .csd. These are MIDI-related settings, and allow your MIDI controller to communicate properly with Csound. When making changes to these values, beware of creating duplicates! Also, be sure your new values are enclosed in the required quotation marks. CTRL (default=20) specifies the beginning controller number of 7 or 8 successive MIDI knobs/sliders. (Note that all controller messages (continuous controllers or note numbers) are implicitly send on *channel 1*.) A separate controller number is set by VELCTRL, the volume controller for all vocal samples (default=27 or 28, depending on the number of successive sliders). GloriosaKeys versions, where pads and MIDI keys are usually velocity-sensitive, include an option as to how sample velocity is determined. A value of -1 for VELCTRL indicates that the specific button/pad/key sets velocity, not the VELCTRL slider. These versions use numbered MIDI notes, buttons or pads to trigger the 6 samples. The NOTE1 macro indicates the first of 6 successive note numbers that, in order, trigger these samples. NOTE2 specifies the first note number of a second series of successive notes - either 6 for full versions or 3 for "Simp". (The number of notes in this series is the only difference between "Simp" and full versions.) Performer preference should determine the physical layout of these controls. The specific function of each of these "second series" notes/buttons/pads is given under "The Controls" below. GloriosaASC uses ASCII keyboard keys to trigger samples and the second series of "notes" (relating to harmonic cluster pitch). Details of these distributions are outlined below. A MIDI controller with only (8 - 9) knobs or sliders can run these versions. THE CONTROLS Console Versions Note that 9-slider versions simply insert a slider 8, which divides the two-cluster control of slider 7 into separate controls for each cluster The MIDI knobs/sliders vary the following parameters: KNOB/SLIDER 1: volume for harmonic cluster 1 KNOB/SLIDER 2: volume for harmonic cluster 2 (detuned copy of cluster 1 KNOB/SLIDER 3: random micro-variation of frequency for both harmonic clusters (= random beating) KNOB/SLIDER 4: amplitude control for knob/slider 5; with slider 4 at zero, #5 has no effect KNOB/SLIDER 5: increasingly faster random variation of frequency for both harmonic clusters (= random beating) KNOB/SLIDER 6: independent random variation of amplitude for each harmonic in both harmonic clusters (= random timbral variation and activity) KNOB/SLIDER 7: timbral variation of both clusters, increasingly emphasizing the higher harmonics *For 9-slider versions*: KNOB/SLIDER (8): timbral variation of cluster 2, increasingly emphasizing the higher harmonics; slider 7 controls cluster 1 only KNOB/SLIDER 8(9): when VELCTRL != -1, determines amplitude of next-occurring sample; note that this slider is not needed when VELCTRL = -1 BUTTON/MIDIKEY/PAD/ASCII "1" and "2" (Simp versions): trigger samples 1 and 2; and when VELCTRL = -1, velocity determines sample level BUTTON/MIDIKEY/PAD/ASCII "1" through "6" (full versions): trigger samples 1 through 6; and when VELCTRL = -1, velocity determines sample level Important note: ASCII keypresses must be instantaneous, not held. All other active buttons/pads/MIDIkeys/ASCII keys affect the pitch of the two harmonic clusters, but *only when the keys are clicked while one or both clusters (sliders 1 and 2) are at zero*. Both clusters default to a base frequency of 50Hz, and when no keypresses intervene, the pitches that follow are randomly selected within the 50-200Hz (or other specified) range. For "Simp" versions: 1st NOTE2/ASCII "7": sets the following cluster to a base frequency of 50Hz (the lowest pitch) 2nd NOTE2/ASCII "8": sets the following cluster to a base frequency of 200Hz (the highest pitch) 3d NOTE2/ASCII "9": sets the following cluster to the frequency of the already sounding cluster (or the last previously sounding) For full versions: 1st NOTE2/ASCII "7": sets the following cluster to a base frequency of 50Hz, and further random selection to within the 50-200Hz range 2nd NOTE2/ASCII "8": sets the following cluster to a base frequency of 75Hz, and further random selection to within the 75-200Hz range 3rd NOTE2/ASCII "9": sets the following cluster to a base frequency of 100Hz, and further random selection to within the 100-200Hz range 4th NOTE2/ASCII "0": sets the following cluster to a base frequency of 150Hz, and further random selection to within the 150-200Hz range 5th NOTE2/ASCII "-": sets the following cluster to a base frequency of 200Hz, and further random selection to within the 185-200Hz range 6th NOTE2/ASCII "=" or ENTER: sets the following cluster to the frequency of the already sounding cluster (or the last previously sounding), and further random selection to within the range of that cluster Android Versions SLIDER 1: volume for harmonic cluster 1 SLIDER 2: volume for harmonic cluster 2 (detuned copy of cluster 1 SLIDER 3: random variation of frequency for both harmonic clusters (= random beating) SLIDER 4: independent random variation of amplitude for each harmonic in both harmonic clusters (= random timbral variation and activity) SLIDER 5: determines amplitude of next-occurring sample For GloriosaAndr - Buttons 1-2 trigger samples 1 and 2. Buttons 3-5 trigger the "Simp" 3-"note" series of pitch parameters detailed for Console Versions above For GloriosaAndrAlt - Buttons 1-6 trigger samples 1 through 6. Buttons 7-9 also trigger the "Simp" 3-"note" series of pitch parameters detailed for the Console Versions PERFORMANCE Performance is completely improvised; no score is provided. (Performers are free, however, to pre-plan anything they like.) Simply observe the following: 1) Set all controllers to 0 prior to running Csound. After start, optionally set sliders other than 1 and 2 to any higher values. Then begin actual performance by raising either slider 1 or 2, or triggering a sample. 2) Move knobs/sliders slowly and evenly. On Android, be sure that, if you stop a slider midway, you pick up close to the same spot; otherwise a "skip" will occur, which should not happen. (No skips or sudden movements anywhere please!) 3) It is not necessary to use all available controls - sliders, samples or pitch controls. 4) Finally note that, on Android, only one control can be moved at a time. On console versions, with MIDI, there is no such limitation. Feel free to manipulate several controls simultaneously, keeping in mind that controllers 1 and 2 are both "masters". Overall level should be soft. There is no suggested duration for performance. The .csd itself will continue to run until you stop Csound. The demo performance posted on the website is of a console version, Gloriosa8ASCSimp. It uses all 8 sliders, and the 6 vocal samples are triggered by ASCII keypress. SUBSTITUTING VOCAL SAMPLES It is possible to substitute one or more of your own vocal samples for those included here. Do this by placing them in the same folder as the original samples and your .csd's (presumably the Music folder). Then edit the sample names(s) - with any text editor - toward the top of your .csd. These are the WAV file names included in quotation marks, and can be any names you wish, ending with ".wav". (Do not forget the quotes!) There is no limitation as to sample length or sample rate. The only requirement is that they be mono. The samples should all be vocal, and may feature a single voice, or several varied voices. They should all express a similar sentiment to the originals. ["O how beautiful ahd glorious You are."] Different languages and contrasting styles of expression are appropriate, as long as they are reasonably reverent. The samples should be recorded or edited (Audacity is suggested) to be at or near maximum undistorted level. They will then balance the original samples, which were also edited this way. For sonic homogeneity, it is recommended that recordings be made in the same or similar acoustic environment. Sample playback level, as determined by the sample volume slider, ranges from a minimum "whisper" to quite loud - matching the range of the harmonic clusters (assuming the samples are all "full range".) It is not necessary that all available sample slots be filled or used. The button assignments, however, are specified in the .csd. You can place new samples in any "slot" you wish, as well as freely rearrange existing assignments.