PEACE BE WITH YOU for Csound5/6 (2014) and
PEACE BE WITH YOU 2 for Csound5/6 (2014)
Arthur B. Hunkins - -


PEACE BE WITH YOU and PEACE BE WITH YOU 2 are solo performance environments for Csound5/6. Suitable for any computer platform that runs Csound, these environments are essentially a set identical instruments with a suggested improvizational structure. It is not a composition, and only a few general performance instructions are given. Performance *may* express itself as a composition (though perhaps more properly, as structured improvization), but this is not necessary. (The move from one sonority to the next does require advance planning however.)

The only significant difference between the two works is their number of "voices": PEACE BE WITH YOU has 3 voices, PEACE BE WITH YOU 2 has 4.   Both require a MIDI device, though with different numbers of knobs/sliders: the former 9-12, the latter 12-16. Each "voice" or "tone" is controlled by 3 knobs/sliders, or if panning is determined manually, by 4. "Voices" or "tones" refer to steady pitches (400Hz up to two octaves higher) with added inharmonic partials. These basic pitches (indentified by their "Frequency Factor" or multiplier) are intended to beat against one another (including already sounding inharmonics). In addition, you select one of five Modulation frequencies for a given performance. These Modulation frequencies create differing sets of inharmonic partials around the basic pitch.

Each of the works is available in command-line formats (including FLTK) as well as with a GUI (Cabbage) front end. (For information on Rory Walsh's Cabbage, and to download Cabbage for platforms other than Windows, see Except for the special Windows/Cabbage distribution, all cases require that Cound be installed - Csound5.14 or higher for the command-line versions, Csound 6 for the Cabbage versions. Preparations for all formats are discussed below.

INITIAL SETUP - Command-line Versions

[Note: though run from the command line, an "FLTK version" displays a performance GUI very much like that of Cabbage.]

You will probably need to edit several <CsOptions> flags near the beginning of your .csd performance file. (Do this in any text editor; your .csd is a text file.) You must insure that the values of -M0 (your MIDI input device #) and -odac[0] (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. Alternately, you can simply insert these flags/values on the command line.

Also in <CsOptions> - if working on Linux, you'll want to take out the semicolon in front of the Linux line beginning -odac, and insert a semicolon at the start of the corresponding Windows/Mac line.

Additionally, depending on the version, several variables (MACROs) must be preset. (Variables in the Cabbage versions have similar names, but are displayed on the GUI and associated with sliders; much the same is true of the FLTK versions):

CHAN specifies the output channel of your MIDI device. Default = 1. A value of "0" indicates that all controllers are set to 7 and use successive channel numbers from 1 up (to maximum of 16). In this case other actual controller numbers do not apply.

CTRL indicates the 1st controller number of the "basic" (consecutive) set of 8. Default = 20.

CTRL9 gives the 9th controller that completes the set of 8 above (giving 3 controllers for each tone in the 3-voice version). Default = 28.

CTRL2 gives the 1st controller for a (consecutive) set of 4 that completes the 8 controllers above (total of 12) for the 4-voice version. Default = 28.

MOD specifies the modulating frequency responsible for the inharmonic spectrum associated with the fundamental frequency. The only valid values are 121, 140, 148, 174 and 184Hz. Default = 121.

PAN determines how pan position for the various tones is regulated, if at all. 0 = a fixed position (the voices equally spaced from extreme left to right); 1 = manual control via knob/slider (on a note-by-note basis); 2 = random automatic position (also note-by-note); 3 = random ongoing "wandering" of tones. In FLTK and Cabbage versions, PAN is the only option that can be changed while the performance is running; all other GUI option changes take effect only at a restart. Default = 0.

PANCTRL only applies when the manual control option is chosen for PAN; indicates the first of 3 or 4 consecutive controllers to manually specify the position of a given voice. A change takes place only at the beginning of the next note in that voice.

The precise function of the 3 basic knobs/sliders per tone is listed below.

Be sure to attach your MIDI device before running Csound.

INITIAL SETUP - Cabbage Versions

The following files should be placed in the same directory: CabbagePeace.exe, PeaceCabbage.csd, Peace2Cabbage, and PeaceCabbage.htm. If Windows Csound files are included in your distribution, place *all* files in the same directory. Unless you have this special Windows download, Csound 6 must also be installed.

Linux and Mac systems must have *their own* binary of Cabbage installed (Cabbage.exe). On these two platforms, copy the current files to your Cabbage folder, delete PeaceCabbage.exe, and run them with your system's Cabbage.exe. (Retain all your Cabbage defaults/Preferences; just be sure that "Always on Top" is unchecked under Options | Preferences.) In Windows, with all these included files in the same directory, simply run CabbagePeace.exe.

In Windows, click on CabbagePeace.exe (on other systems, Cabbage.exe). A File Selector displays all the .csd files in the directory; click the one you want to perform (in Linux and Mac, select your .csd under Options | Open Cabbage Instruments). Also in the GUI, click Options, then Audio Settings. Select your Active MIDI Input device (check it), and if necessary, your output device. Finally, close the Audio Settings window.

If you get audio glitches or experience "slider/knob delay" (latency), experiment with a different audio buffer size (in Audio Settings). A smaller size will decrease latency; a larger size will eliminate glitches. Use of the Test button in Audio Settings will readily get you to low-latency performance with no glitching.

Return all MIDI knobs/sliders to zero, and set the GUI options to your particular MIDI configuration (channels and various controller #'s). (Note that there is an option that allows for CC7 on consecutive channels; it is enabled by selecting MIDI channel zero.) Optionally select Pan mode and Modulation frequency. Then move any MIDI knobs/sliders to their initial positions (if other than zero); except for Pan mode, they only take effect when you press Re/START. (Unless you reset them, knobs/sliders retain their values.)

WHAT THE BASIC KNOBS/SLIDERS DO - Cabbage and Command-line Versions

As mentioned above, each tone is identical. (This includes the set of inharmonic partials that determines tone quality.) It is the set of three controllers that independently vary their pitch, volume and tone color (spread of inharmonic partials). The first controller per set determines volume; the second, frequency (through an approximately 2-octave range from 400Hz up); the third, inharmonic content/spread. At zero, this third control adds no inharmonics; when raised, it adds increasing varied inharmonic content over an expanding range of partials. Due to filtering, this content lies primarily above the basic pitch. Also, since random variation is added to this setting, the inharmonics present, and their emphasis, constantly change within the overall spectrum. The *total* spectrum, however, is constant, and is always relative to the current basic pitch as determined by the second controller.


1) Sliders are preferable to knobs. Long-throw sliders are the best. The second slider for each tone requires very precise adjustment, indeed to a precise MIDI integer. (This means that 128 specific values must be located on the given knob/slider!) Frequency factors for all tones are printed to the GUI (or commandline output). In this way, very specific frequencies and beat patterns can be chosen (for the second slider) - both during pre-planning and actual performance.

2) Except at the beginning and end of a performance at least two voices should be simultaneously sounding in both three- and four-voice versions. In the latter, three- and four-voice textures should predominate.

3) Each new note should be introduced as pure basic frequency with its third slider set to zero, so as to beat prominently with some partial of an already sounding note. This may well entail raising its level initially higher (to emphasize the beating), then lowering volume when you start adding inharmonics. Beat speed should be fairly slow to moderate - not to exceed 2-3Hz.

4) The two prime criteria for selecting a new frequency (freq fac) are: a) as stated above, that the new frequency should beat appropriately with an already sounding partial; and b) that the new sonority (with inharmonics) be euphonious with other sounding notes. (The "euphoniousness" can be adjusted somewhat by the inharmonic spread that the third controller determines.) This requires careful preplanning of the note/tone sequence. In the final analysis, overall "euphiousness" is a more important factor than beating.

5) The above criteria can be met by testing various combinations of frequency factors and inharmonic spreads, and performing in sequence those that "work" together. Note that frequency is only changed while the tone's volume is zero. (When a tone is exiting, volume can be reduced before or after inharmonics are zeroed.) Care should be taken not to allow *any* frequency factor changes while a tone is sounding.

7) Tones set to the same frequency factor will always sound euphonious. (This is of course true of both minimum (1) and maximum (3.8) factors. Since these values are easily set/tuned, they are excellent choices for beginnings and endings.) In general, "euphiousness" is enhanced when two or more tones are set to the same frequency factor. This is because small random frequency fluctuations that cause beating are built into the basic tones themselves.