IMAGO DEI (2023) for realtime Csound (PC and Android versions) Arthur B. Hunkins abhunkin@uncg.edu www.arthunkins.com GENERAL IMAGO DEI 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 two versions: Imago.csd and Imago2.csd - the latter an enhanced version of the former. These are the titles of the console editions (for PC, Mac and Linux), which require a MIDI controller with 12 sliders or knobs. The enhanced versions require the addition of 4 keys/buttons. Several 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 Csound for Android app downloadable from play.google.com (requires Android OS 5 or higher), the *most recent* Csound for Android app residing at https://github.com/gogins/csound-android/releases (under Assets), and "alternative" Android apps Csound6b and Csound6c, 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 with appropriate OS, and - for Chromebooks - access to the Google Play Store app. To install any app from other than play.google.com, you must enable an "Unknown or Third-Party sources" option somewhere within Settings on your 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.) VERSION SPECIFICS Imago Dei is an instrument of 4 "voices," each consisting of a single frequency. (Frequencies are selected by the user, and specified in the CPS1-4 macros) These four voices play either short notes, usually with independent rhythm , or a single sustained "chord". The former are controlled by sliders 1-5, the latter by sliders 7-12. Slider 6 crossfades the two textures. All versions, except two, require 12 knobs/sliders (sliders preferred). The two exceptions are ImagoAndroidA and Imago2AndroidA, which are specifically designed for the Csound for Android Play Store app. This app's GUI contains only 9 sliders, but does include a trackpad, whose x and y axes function here as sliders 10 and 11. (Slider 12, the least important control, is absent.) Versions that have "2" in their titles are enhanced editions that require 4 buttons/keys in addition to the knobs/sliders. One button is assigned to each of the 4 "voices", and a button/key press alternately toggles a voice off or on (voices are all initially "on"). These versions can freely vary the number of participating voices, as well as limit performances to fewer voices. ("Chordal" sonorities can likewise consist of fewer pitches.) 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.) There are no recommendations for performance duration. 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 require editing. First, there are 4 macros, CPS1-4, each representing the frequency of one of the 4 "voices" within the 400-2000Hz allowable range. (The ImagoFreqSelect and ImagoFreqSelectAndroid .csd's can aid the user in frequency selection. These utilities are detailed at the end of this article.) For Imago2, there is an additional macro, NOTE, which specifies the first MIDI note number for the 4 successive buttons/keys. (The default initial note is 60.) For console editions, there are two more macros. CTRL defaults to 20, the number of the first of 8 contiguous CC's your MIDI device is sending on. (Channel 1 is the preset channel for all messages.) CTRL2 (default = 28) refers to a further set of 4 contiguous controllers, completing the required total of 12. In the above macros, substitute the CC (and note) numbers appropriate to your MIDI device. Note that any substitutions you make must be enclosed by #'s. Editing for Android Both the Csound for Android app from play.google.com and the one from github.com, actually include their own editors. (Your selected .csd automatically opens in the app's Edit mode.) Additionally, the "alternative" Csound6b and Csound6c apps 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. THE CONTROLLERS The specific function (and order) of the 8-9 controls is the same for all IMAGO DEI editions. Controller 1: master volume control Controller 2: basic repeat rate for "notes" (all voices). Preset this control to the initial rate desired, and beware of moving it too fast. If controller 3 = 0 at the beginning, all voices will be in sync rhythmically. Also, as the rate increases, any randomness introduced by controller 3 gradually dissipates Controller 3: random variation of repeat rate - on a per-voice basis. Once this control is raised, voices become rhythmically independent and will not return to "unison". However, if/when the control is returned to zero, the last random rhythmic pattern will be repeated indefinitely. Controller 4: notes turn from clicks to pitches as durations lengthen slightly. When sliders 4 and 2 approach maximum, the sonority becomes semi-sustained, as well as increasingly active Controller 5: random variation of tone color - on a per-note basis, further activating texture. Range of variation corresponds to that of slider 8 Controller 6: cross-fade between previous texture and sustained chord (same pitches). Chord exhibits slight random volume change on per-voice basis. Fuller sound, less active Controller 7:increasing random volume change (on per-voice basis). Modest increase in activity Controller 8: tone color varies - range corresponds to (random) span of slider 5; same change in all voices Controller 9: fast, periodic frequency change on a chordal basis (move this control slowly!); immediate change in intensity. Note: controller 10 will have no effect until slider 9 is raised Controller 10: faster, random change (approaching noise) to chordal texture Controller 11: moderate band-pass filtering of chordal texture. Move slider as fast as desired Controller 12: further blurring (uncolored reverb) of chordal texture THE IMAGO2 BUTTONS The enhancement of the Imago2 .csd's consists of the inclusion of 4 buttons, which turn on and off their respective "voices." All voices are by default "on" (= 1). Their initial state, however, can be changed before slider 1 is raised, and thus accomodate performances with fewer voices. Voices can be turned off and on *only when slider 6 is at 0*, which initially is prior to any sustained sound. Any button presses made with slider 6 above 0 are ignored. This guarantees that sustained sounds will only follow the voicing of the immediately previous "discrete event" texture. As a result, the crossfade introduced by slider 6 will be smoother and more homogenous. (The same is true when crossfading in the opposite direction.) Needless to say, toggles only take effect when the next "note" is triggered (silent or not!) The One-Line Console Output (Imago2 buttons) All editions of the enhanced versions feature a single-line console output. This output consists of the on/off status of each of the 4 "voices" (CPS1-4). Without this line, there is no way to visually determine which voices are sounding. This can be problemmatic when your are frequently switching voices in and out. (Note: the "alternative" Csound6b for Android cannot display this output, though the app is completely capable otherwise.) PERFORMANCE TIPS AND SUGGESTIONS Performance is completely improvised; no score is provided. (Performers are free, however, 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 controller other than #1, to a higher value. Performance begins by raising controller 1, and ends when it returns to 0. 2) Move knobs/sliders fairly slowly and evenly, especially for sliders 2 and 9. (Exception: slider 11, which can be moved faster.) 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. 4) In general, the level of textural complexity and activity increases as performance activates ever higher sliders. While this is generally true regarding sliders 2-5, it is especially the case for sliders 7 through 12. 5) It is not necessary to use all sliders. 6) Finally, bear in mind that, on Android, 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 FREQUENCY SELECT UTILITIES Accompanying this distribution are two utilities designed to help users select specific frequencies for the CPS1-4 macros. ImagoFrequencySelect is designed for the Imago and Imago2 .csd's, ImagoFrequencySelectAndroid for Android versions. (All require 8, optionally 9, controllers.) Each "voice" is assigned a pair of controls, the first for amplitude, the second for pitch. The optional 9th control varies tone color brightness, duplicating the effect of controller 8 in the Imago .csd's. (Such coloration may factor significantly into pitch selection.) There is a "gross" selection mode and a "fine-tune" mode. Using a negative frequency value enters "fine-tune" mode for a particular voice (CPS1-4). This procedure is further explained at the top of each utility. Finally, both utilities include a single-line console printout of all CPS values, for eventual copying into the Imago .csd's. (Note, however, that it is inappropriate to run the Android version of this utility on "alternative" Csound6b, as this app does not support the one-line printout.)