0% found this document useful (0 votes)
203 views15 pages

EmissionControl2 Manual

EmissionControl2 (EC2) is an interactive application for granular synthesis that allows users to granulate multiple sound files simultaneously. Key features include granulation parameters that can be modulated in real-time, unlimited user presets, and an open source codebase. EC2 provides powerful controls over granular synthesis including grain rate, asynchronicity, filter parameters, and scanning of sound files. It is designed to enable gestural control of granular synthesis for musical performance and composition.

Uploaded by

chaoticocelot
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
203 views15 pages

EmissionControl2 Manual

EmissionControl2 (EC2) is an interactive application for granular synthesis that allows users to granulate multiple sound files simultaneously. Key features include granulation parameters that can be modulated in real-time, unlimited user presets, and an open source codebase. EC2 provides powerful controls over granular synthesis including grain rate, asynchronicity, filter parameters, and scanning of sound files. It is designed to enable gestural control of granular synthesis for musical performance and composition.

Uploaded by

chaoticocelot
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 15

____________________________________________________________

EmissionControl2 Manual
Curtis Roads, Jack Kilgore, and Rodney Duplessis

Center for Research in Electronic Art Technology (CREATE)


University of California
Santa Barbara
USA

18 September 2021
Corresponds to version 1.1 of EC2

EmissionControl2 (EC2) is an all-new interactive real-time application for granular


synthesis and sound file granulation. Features include:

• Granulation of multiple sound files simultaneously (up to 1 Gb of samples)


• Supports up to 2048 simultaneous grains (limited by user hardware)
• Synchronous and asynchronous grain emission
• Intermittency control
• Per-grain signal processing (envelope, waveform, amplitude, frequency, spatial
position, filter center frequency and resonance)
• Unique filter design optimized for per-grain synthesis
• Matrix modulation control of all granulation parameters with six LFOs
• Real-time display of peak amplitude, grain counter, waveform, and scan range
• Scalable GUI and font size
• MIDI Learn enables mapping to any MIDI continuous controller.
• Unlimited user presets with smooth interpolation for gestural design
• Built-in recording
• Code is open source and available at GitHub

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

To start EmissionControl2, Double-click on the EmissionControl app.

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).

2. Narrow the range for fine control in performance.

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 [ ].

1. Grain Rate [0.1,100] – Rate of grain emission per second

2. Asynchronicity [0,1] – Degree of synchronicity (fader left) versus asynchronicity (fader


right) of grain emission. Grain density is the same whether the stream is synchronous or
asynchronous. In a perfectly synchronous stream, the grains follow one another at
periodic intervals. An asynchronous stream is randomized in time.

3. Intermittency [0,1] – Degree of interruption of the grain stream, independent of


whether the stream is synchronous or asynchronous. High intermittency lowers grain
density.

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.

[0,.99] Pitch shift down, 0 = freeze (no sound)


[1] No pitch shift
[1,2] Pitch shift up
[-.99,0] Pitch shift down and backwards
[-1] No pitch shift, backwards
[-2,-1] Pitch shift up and backwards

6. Filter Center [60,5000] – Center frequency in Hertz of a bandpass filter. Each grain is
filtered separately.

7. Resonance [0,1] – Sets the Q or resonance of the filter. At a value of 1 it generates a


sine wave.

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.

Figure 3. The Scan Display indicates:


Scan Begin - blue vertical line
Scan Region - light blue rectangle
Scanner - black vertical line (white in dark mode)
Individual grains - red vertical lines

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!

Theory of Scan Begin, Scan Range, and Scan Speed

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.

15. Amplitude [-60,+24] – Adjusts the output amplitude in decibels (dB).

Granulation Controls Color Design

Parameter types are grouped by color as follows:

BLUE : WHEN grains are emitted


Grain Rate
Asynchronicity
Intermittency
Streams

GREEN : PITCH characteristics of grains


Playback Rate (or pitch shift)
Filter Center
Resonance

YELLOW : SOURCE of grains


Sound File
Scan Head
Scan Range
Scan Speed

RED : AMPLITUDE over time/space envelope


Grain Duration
Envelope Shape
Pan
Amplitude

Modulation Controls

Figure 5. Modulation Controls section.

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.

Figure 6. Selection of LFO waveform type.

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-).

The LFO waveform options are


Sine
Square
Rise
Fall
Noise (a random sample-and-hold function at the stipulated frequency)

Note that Rise and Fall can also be seen as a sawtooth function.

Figure 7. Duty cycle of square wave LFO.

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.

Sound File Loading and Presets

Figure 9. Sound Files menu.

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.

By default, EC2 sends its output to this directory:

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

Audio Menu and Settings

Figure 11. Audio Menu.

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.

Audio Settings Panel

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.

Figure 13. Audio Settings controls. when EC2 is stopped.

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!

Figure 15. View controls.

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. 1946. "Theory of communication." Journal of the Institute of Electrical


Engineers Part III, 93: 429-457.

Gabor, D. 1947. "Acoustical quanta and the theory of hearing." Nature 159 (4044): 591-
594.

Gabor, D. 1952. "Lectures on communication theory." Technical Report 238, Research


Laboratory of Electronics. Cambridge, Massachusetts: Massachusetts Institute of
Technology.

Roads, C. 1975. "Computer music studies 1974-1975." Unpublished manuscript. 44


pages.

Roads, C. 1978a. "Automated granular synthesis of sound." Computer Music Journal


2(2): 61-62. Revised version printed as "Granular synthesis of sound" in C. Roads and J.
Strawn, eds. 1985. Foundations of Computer Music. Cambridge, Massachusetts: MIT
Press. pp. 145-159.

Roads, C. 1991. "Asynchronous granular synthesis." In G. De Poli, A. Piccialli, and C.


Roads, eds. Representations of Musical Signals. Cambridge, Massachusetts: MIT Press.
pp. 143-185.

Roads, C. 1996. The Computer Music Tutorial. Cambridge, Massachusetts: MIT Press.

Roads, C. 1998. "The Creatovox synthesizer project." Unpublished manuscript.

Roads, C. 2001a. "Sound composition with pulsars." Journal of the Audio Engineering
Society 49(3).

Roads, C. 2001b. Microsound. Cambridge, Massachusetts: MIT Press.

Roads, C., and J. Alexander. 1995. Cloud Generator Manual. Distributed with the
program Cloud Generator. Internet: www.create.ucsb.edu.

Thall, D. 2004. “A scheme for generalized control of particle synthesis.” Master of


Science. Media Arts and Technology. Santa Barbara: University of California.

Thall, D. 2005. “Experiments in sound granulation and spatialization for immersive


environments.” Presented at the Interactive Digital Multimedia IGERT Annual Research
Review. Sponsored by the National Science Foundation. Santa Barbara: University of
California.

Xenakis, I. 1960. "Elements of stochastic music." Gravesaner Blätter 18: 84-105.

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.

CREATE assumes no responsibility for errors or omissions in the software or


documentation available from its web site and makes no promises to correct errors or
provide updates.

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.

Report any issues to:


github.com/jackkilgore/EmissionControl2/issues

Appendix: Default Ranges and Absolute Ranges

Parameter Name Default Range Absolute Range

Grain Rate [ 0.1 , 100.0 ] [ 0.0 , 500.0 ]


Asynchronicity [ 0.0 , 1.0 ] [ 0.0 , 1.0 ]
Intermittency [ 0.0 , 1.0 ] [ 0.0 , 1.0 ]
Streams [ 1 , 12 ] [ 1 , 20 ]
Playback Rate [ -2.0 , 2.0 ] [ -32.0 , 32.0 ]
Filter Center [ 60.0 , 5000.0 ] [ 20.0 , 24,000.0 ]
Resonance [ 0.0 , 1.0 ] [ 0.0 , 1.0 ]
Sound File [ 1st file , last file ] [ 1st file , last file ]
Scan Start [ 0.0 , 1.0 ] [ 0.0 , 1.0 ]
Scan Range [ 0.0 , 1.0 ] [ 0.0 , 1.0 ]
Scan Speed [ -2.0 , 2.0 ] [ -32.0 , 32.0 ]
Grain Duration [ 2000/SR , 1000.0 ] [ 2000/SR, 10,000.0 ]
Envelope Shape [ 0.0 , 1.0 ] [ 0.0 , 1.0 ]

14
Pan [ -1.0 , 1.0 ] [ -1.0 , 1.0 ]
Amplitude [ -60.0 , 24.0 ] [ -180.0 , 48.0 ]

Modulation controls [ 0 , 1.0 ] [ 0, 1.0 ]


LFO frequency [ 0.01 , 30 ] [ 0.001 , 10000 ]

15

You might also like