EmissionControl2 Manual
EmissionControl2 Manual
EmissionControl2 Manual
Curtis Roads, Jack Kilgore, and Rodney Duplessis
18 September 2021
Corresponds to version 1.1 of EC2
1
Background
The original EmissionControl was written in 2004 and updated in 2008. It was coded by
David Thall as part of his masters project in Media Arts and Technology at UCSB in
consultation with Curtis Roads. The program code ran in SuperCollider 3 using a custom
library for granulation written in the C++ language. A limitation of this version was that
the custom library was compiled for a PowerMac G5 processor only. Apple changed to
Intel processors shortly thereafter.
The EC2 project began in early 2019 with an initial goal of rewriting EC to run on
modern computers. Over time, EC2 has evolved far beyond the original EC app.
Jack Kilgore, a computer science student at UCSB has been the principle coder. Rodney
Duplessis, a PhD student in Music and a masters student in Media Arts and Technology
made major contributions to the graphical user interface (GUI). As we were concluding
this project, Apple announced a shift from Intel processors to ARM processors. EC2
currently runs in Rosetta 2 emulation on new ARM processors.
Quick-Start Theory
According to a 1946 theory of the physicist Dennis Gabor, any sound can be
represented as a combination of elementary sonic grains. The composer Iannis Xenakis
was the first to formulate a theory around a granular approach to music composition.
For more information about granular synthesis, see the references below.
EC2 takes one or more sound files as input and emits a series of grains. A grain is a
segment of sound (a short sound clip), often less than 1/10th of a second (100
milliseconds or ms). In EC2 we allow for longer-duration grains (up to 10 seconds). This
provides granular-style processing of short phrases of music or other audio.
The waveform of the file is shown in the Scan Display. The user can set what portion of
the file to granulate, whether to scan it forwards or backwards, and how fast to scan
through it. Grains will be emitted at the rate set by the Grain Rate parameter.
Any of the Granulation Controls on the top left part of the screen can be modulated
using one of the six low frequency oscillators (LFOs) shown in the LFO Controls at the
middle right. The Modulation Controls at the top right set the amount of modulation to
be applied to the corresponding Granulation Control parameter on the left.
EC2 has a MIDI Learn feature, which makes it easy to map a physical controller such as a
MIDI fader box to the Granulation Controls.
2
Warning
We made a decision to allow extreme ranges for certain parameters. Their interaction
creates a vast parameter space. Given that the input can be any sound file, users should
be aware that at certain settings, the sonic output may be unpredictable, including
zones of silence.
Start
Press the red Engine Start button at the top to commence grain emission.
Synthesis parameters
Figure 1.
The fifteen granulation control faders are on the top left side of the console (figure 1).
Figure 2.
As figure 2 shows, the default parameter ranges are displayed to the left and right of the
fader. Pan, for example, ranges from -1 (left) to +1 (right).
A powerful feature is the ability to adjust the ranges. This can be used in either of two
ways:
3
1. Extend the default range to an extreme range (see the default versus absolute
range limits in the Appendix).
To adjust the ranges, double-click on the lower or upper limit and type. Or click-once-
and-drag left or right to set the numerical value of the limit. Shift-click-and-drag
accelerates the change.
To stipulate a specific parameter value, control-click on the current value and then type.
Logarithmic scaling for all sliders can be toggled by right-clicking on a parameter and then
clicking the item that says "Logarithmic". If no right-click is available, hover over a parameter
and press 'l' (as in log). This logarithmic setting applies to your MIDI controller as well.
MIDI Learn
Any fader can be assigned to a MIDI controller with the MIDI Learn feature.
To learn, perform one of these actions and then move a physical controller knob or
fader:
Single button mouse - Hover over a slider and press m
Three-button mouse - Right-click and select MIDI Learn in the drop down menu
Trackpad - Two-finger press on a slider and select MIDI Learn in the drop down
menu
To unlearn:
Single button mouse - Hover over a slider and press Shift-m
Three-button mouse - Right-click on a slider and select MIDI Unlearn in the drop
down menu
Trackpad - Two-finger press on a slider and select MIDI Unlearn in the drop down
menu
Granulation Controls
Here is a list of the Granulation Controls with default ranges in square brackets [ ].
4
4. Streams [1,12] – Number of parallel streams of grains. Grains from new streams are
inserted in between existing grains. Overall grain density is a product of the grain rate,
the grain duration, and the number of streams.
5. Playback Rate [-2,+2] – Changes the rate at which each grain reads through the
source sound file, effectively shifting pitch and/or read direction.
6. Filter Center [60,5000] – Center frequency in Hertz of a bandpass filter. Each grain is
filtered separately.
8. Sound File – Selects the sound file to granulate. Multiple sound files can be loaded,
up to 1 Gbytes total, irrespective of sample rate and bit depth. Note: sound files that are
not at the sample rate and bit depth set by the user in Audio Settings will be converted.
This can take a few seconds. Users can slide the fader to switch between the loaded
sound files. File selection can also be modulated by an LFO.
9. Scan Begin [0,1] – Controls the starting point in the sound buffer to start granulating
(figure 3). This is a relative value, where 0 indicates the beginning of the sound file, 0.5
indicates the halfway point, and 1.0 indicates the end, regardless of the length of the
currently selected sound file.
10. Scan Range [-1,1] - How much of the file to scan. Shown in the Scan Display (figure
3). A value of 1 means scan the entire file. A value of 0 holds the scanner in place at the
Scan Begin position. One can also set negative values to extend the range to the left of
the Scan Begin position. The scan region loops around to the beginning when
extended.
5
11. Scan Speed [-2,2] – How fast to scan the file, and in which direction. This is
independent of the Playback Rate, which shifts the pitch of individual grains. The Scan
Speed may be 0, for example, in which case a single grain repeats. The Playback Rate
determines the pitch shift and whether the grain is read forwards or backwards.
Note: You might have set the Grain Rate to 1 grain per second but you see the scanner
line (white or black depending on the display mode) looping at a fast rate. What’s going
on? Grain Rate and Scan Speed are independent!
As figure 3 shows, Scan Begin, Scan Range, and Scan Speed control the scanner: a
pointer that determines where grain waveforms are read from in the sound file. When a
grain is emitted, it begins at the current scanner location. It may then read forward or
backward through the sound file depending on Playback Rate (5).
Scan Begin (9) and Scan Range (10) together determine the region of the sound file
through which the scanner moves. For example, if Scan Begin is at 0.50 and Scan Range
is set to 0.25, then the scan area will extend from halfway through the sound file to 3/4
of the way through the sound file (see figure 3).
Scan Speed controls how quickly the scanner moves through the scan region. When the
scanner reaches the end of the scan region, it loops back around to the beginning of the
scan region. A positive value sets a forward motion in time. A negative value causes
backwards playback.
0
Note that while the scanner always remains in the scan region, a grain may exceed the
boundaries of the scan region if it begins near the edge of the scan region and Grain
Duration is long enough. This is because EC2 always prioritizes grain integrity.
12. Grain Duration [0.01, 1000] - Controls the grain duration in milliseconds. The shortest
possible grain duration is now dependent on sample rate, or 2000/SampleRate. As an
example, if the SampleRate is 44.1 kHz the shortest grain size in ms is 2000/44.1 kHz, which is
roughly 0.045 ms. If the sample rate is 96 kHz, the shortest grain size is roughly 0.021 ms.
13. Envelope Shape [0,1] – Determines grain envelope shape. Left = sharp attack,
exponential decay or expodec (figure 4a), Middle = bell shaped (figure 4b), Right =
reversed expodec (figure 4c).
Figure 4. Grain envelope shapes. (a) Expodec. (b) Bell shaped. (c) Rexpodec.
6
14. Pan [-1,+1] – Spatial position of the grains. -1 is left.
Modulation Controls
The Modulation Controls section at top right (figure 5) contains sliders for each of the
fifteen parameters. The range is 0 (no modulation) to 1 (full modulation). When the
modulation is non-zero, the selected LFO (at right) will modulate the corresponding
granulator control parameter (at left). Dragging the fader right increases the
7
modulation. (The granulator control slider does not move, however.) The source of
modulation is indicated by the menu to the left of the fader: LFO1 to LFO6.
The LFO Controls section (figure 6) consists of the six low frequency modulation (LFO)
controls at top left: LFO1-LFO6. Here one can select the type of modulation. Figure 6
shows the linear Rise function chosen for LFO1.
Any LFO waveform can be bipolar (BI), i.e., positive and negative values, unipolar
positive (UNI+), or unipolar negative (UNI-).
Note that Rise and Fall can also be seen as a sawtooth function.
When the Square LFO waveform is chosen, a new slider appears for that LFO to control the
duty cycle of the square wave. If the value of Duty is set to 0.5, then the square's maximum
and minimum states are equal in length: a standard square wave. A higher Duty value
increases the time the square wave spends in its maximum state. A lower Duty value
decreases the time the square wave spends in its maximum state (figure 7).
Presets section
8
Figure 8. Presets section.
The Presets section lets one save the state of a performance to a numbered slot (figure 8). All
fader settings and sound files are saved in a preset.
By default there are 240 slots. A bank of 48 are shown. The <- and -> buttons let one select
the previous or next bank of presets.
A preset can be saved by clicking the Store button and then clicking a numbered slot. One
can also store the preset with a descriptive name by typing in the Store Preset As box that
appears once the Store button is clicked. The name shows up in the Current preset header
when selected. Empty slots appear gray. Storing a preset to a slot that is not empty will
overwrite the preset previously stored there. Warning: this cannot be undone!
The Morph Time fader allows one to smoothly interpolate between two preset states.
example, when the Morph Time fader is set to 10.00, then clicking a new preset will trigger a
smooth change to that preset over 10 seconds. If morph time is set to 0 (the default), the new
state will be loaded instantaneously.
Note: Morph Time can be varied using physical controllers via MIDI Learn.
Tip: The Preset Map "+" button creates a new set of 240 preset slots. The drop down menu
next to Preset Map can then be used to change which map you are using.
To load one’s own sample files for granulating, go to the Sound Files menu at the top
left (figure 9). Select Load Sound File to bring in a new file. It will show up in the Sound
File slider (parameter 8). To remove a sound file, click on Remove Current Sound File.
One can also set up sound file presets that load a group of sound files all at once. Select
the option Save Sound File Preset to bring up a menu that lets you name the preset and
save it. Load Sound File Preset loads a preset that you name. Delete Sound File Preset
removes it.
Recorder Window
9
Figure 10. Recorder panel.
The Recorder window is in the center of the app (figure 10). This lets one record a
session. Click on the Record button to start.
One can stipulate the output folder and name the file. You can stipulate either .aif or
.wav format. Note that EC2 writes samples as 32-bit floating-point numbers.
When you click Record, EC2 will write a sound file, e.g., test.wav.
If you stop and restart to record it will write a new sound file test_1.wav, with _1
indicating the version.
When you toggle the Overwrite checkbox, the sound output will always go to the same
named sound with no version suffix.
UserDisk/Users/YourID/Music
To change the default output directory to Desktop, for example, select Sound
Recording Folder under the Audio menu.
The Overwrite option writes over an existing sound file of the same name. Otherwise
The Audio Menu has three options (figure 11). Audio Settings brings up the Audio
Settings panel (see below).
Use the Sound Recording Folder option to specify where you would like EC2 output to
be stored by default.
10
Figure 12. Audio Settings controls while EC2 is running.
One can set the audio output device and sampling rate, etc. under the Audio Settings
menu (figure 12). In order to do this you need to Stop the EC2 engine. Click the Stop
button.
When the engine is stopped, the Audio Settings menu appears as in figure 13. Here you
can specify your audio interface and which pair of channels to use for stereo output.
Clip Audio
Clip Audio is a checkbox in the Audio menu. By default, EC2 hard limits the live
streaming sound output at high levels. This means that any sample values above a
threshold are hard clipped to the threshold value. The threshold is the maximum value
of 24-bits.
At all times, EC2 internally generates 32 bit floating-point samples, so the amplitude can
exceed 24 bits.
You might choose to disable Clip Audio if you are routing the audio to a DAW with a
high-quality dynamic range compressor that you prefer over hard limiting.
Note that sound files written by EC2 are always full 32-bit floating-point samples with no
clipping.
Control Preferences
11
Figure 14. Control preferences panel.
The Control Preferences menu (figure 14) has two functions for alternative performance
modes.
By default, sound files are saved with presets. The option Omit ‘Sound File’ from
Presets, enables an alternative performance mode that lets the user switch between
different presets without changing the sound file.
Hard Reset ‘Scan Begin’ is another alternative performance option. By default the
position of the scanner (playback head) is independent of the position of the Scan
Begin. Thus as you drag (or modulate) Scan Begin, the scanner moves independently.
If you select Hard Reset ‘Scan Begin,’ this forces the scanner to reset to the current Scan
Begin position whenever you drag it manually or modulate it.
View
The EC2 panel can be resized by dragging the bottom right corner. It just works!
The View menu lets the font size be changed independently of the main window size
(figure 15). When you select Font Size a convenient fader appears to control size.
(Obviously at extreme settings something has to give, but the range of usable sizes is
quite variable.)
In the View menu select Light or Dark mode for the GUI color scheme of your choice.
Tip
For pure granular synthesis as per Xenakis’s theory, granulate a sine wave sample.
Acknowledgments
We thank David Thall, author of the original EmissionControl, for his consultation on the
internal design of the granular engine at a critical early stage of development. Thanks to
Dr. Andres Cabrera for his consultation on Allolib and his essential support in making
the Windows version available. Thanks to Media Arts and Technology PhD student Yin
12
Yu for her consultation on the GUI. Thanks to the UCSB Academic Senate for supporting
this work through a Faculty Research Grant.
References
Gabor, D. 1947. "Acoustical quanta and the theory of hearing." Nature 159 (4044): 591-
594.
Roads, C. 1996. The Computer Music Tutorial. Cambridge, Massachusetts: MIT Press.
Roads, C. 2001a. "Sound composition with pulsars." Journal of the Audio Engineering
Society 49(3).
Roads, C., and J. Alexander. 1995. Cloud Generator Manual. Distributed with the
program Cloud Generator. Internet: www.create.ucsb.edu.
13
Xenakis, I. 1971. Formalized Music. Bloomington: Indiana University Press.
Xenakis, I. 1992. Formalized Music. Revised edition. New York: Pendragon Press.
Disclaimer
The EmissionControl2 software is provided “as is” without warranty of any kind, either
express or implied, including, but not limited to, the implied warranties of fitness for a
purpose, or the warranty of non-infringement. Without limiting the foregoing, CREATE
makes no warranty that the software will meet your requirements.
In no event shall the CREATE be liable to you or any third parties for any special,
punitive, incidental, indirect or consequential damages of any kind, or any damages
whatsoever, including, without limitation, those resulting from use, misuse, loss of use,
loss of data or profits, whether or not the CREATE has been advised of the possibility of
such damages, and on any theory of liability, arising out of or in connection with the use
of this software.
The use of the software downloaded is done at your own discretion and risk and with
agreement that you will be solely responsible for any damage to your computer system
or loss of data that results from such activities. No advice or information, whether oral or
written, obtained by you from the program developers shall create any warranty for the
software.
14
Pan [ -1.0 , 1.0 ] [ -1.0 , 1.0 ]
Amplitude [ -60.0 , 24.0 ] [ -180.0 , 48.0 ]
15