Sintetizzatori

Download as pdf or txt
Download as pdf or txt
You are on page 1of 20

The Systems Concepts Digital Synthesizer: An Architectural Retrospective

Author(s): D. Gareth Loy


Source: Computer Music Journal , Fall 2013, Vol. 37, No. 3 (Fall 2013), pp. 49-67
Published by: The MIT Press

Stable URL: https://www.jstor.org/stable/24265513

REFERENCES
Linked references are available on JSTOR for this article:
https://www.jstor.org/stable/24265513?seq=1&cid=pdf-
reference#references_tab_contents
You may need to log in to JSTOR to access the linked references.

JSTOR is a not-for-profit service that helps scholars, researchers, and students discover, use, and build upon a wide
range of content in a trusted digital archive. We use information technology and tools to increase productivity and
facilitate new forms of scholarship. For more information about JSTOR, please contact support@jstor.org.

Your use of the JSTOR archive indicates your acceptance of the Terms & Conditions of Use, available at
https://about.jstor.org/terms

The MIT Press is collaborating with JSTOR to digitize, preserve and extend access to Computer
Music Journal

This content downloaded from


193.206.22.154 on Wed, 12 Oct 2022 14:42:28 UTC
All use subject to https://about.jstor.org/terms
D. Gareth Loy
274 Sausalito St. The Systems Concepts
Corte Madera, California 94925, USA
dgl@GarethLoy. com Digital Synthesizer: An
Architectural Retrospective

Abstract: In the mid 1970s, specialized hardware for synthesizing digital audio helped computer music research move
beyond its early reliance on software synthesis running on slow mainframe computers. This hardware allowed for
synthesis of complex musical scores in real time and for dynamic, interactive control of synthesis. Peter Samson
developed one such device, the Systems Concepts Digital Synthesizer, for Stanford University's Center for Computer
Research in Music and Acoustics. The "Samson Box" addressed the classical problems of digital audio synthesis wit
an elegance that still rewards study. This article thoroughly examines the principles underlying the Box's design—wh
considering how it was actually employed by its users—and describes the architecture's advantages and disadvantages.
An interview with Samson is included.

In the mid 1970s, about the time this journal was of the development and use of the Samson Box are
founded, specialized hardware for digital audio given in the companion article.
began to help lift the field out of its early reliance Second, Samson Box simulation software has
on software synthesis running on slow mainframerecently been written by Bill Schottstaedt, assisted
computers, allowing the synthesis of complex by Mike McNabb, and is available for download
on the Web (Schottstaedt and McNabb 2012). This
musical scores in real time, and dynamic, interactive
control of synthesis. The resulting acceleration of article can be read as a kind of exegesis of their
research and composition greatly facilitated the simulator.
transformation of music and audio from analog Finally the Samson Box was a milestone in
to digital practices, a technological sea change the modern development of computer music. Its
that continues today at a rapid pace. The Systems architecture addressed the classical problems of
Concepts Digital Synthesizer, designed by Pete digital audio synthesis with an elegance that still
Samson, stood at the crossroads of these early rewards study. However, architectural descriptions
developments. A companion article (Loy 2013) of the Box to date have been mostly ex ante—stated
addresses the historical significance of the Samson in terms of the Box's abstract capabilities. The
present ex post review looks at how it was actually
Box, as it was called, as well as providing background
information and a general introduction. The present used by researchers and composers. We will peel
article provides a detailed technical review of the back the underlying principles of its design and
architecture of the Samson Box. discuss in detail what it "got right" as well as what
There is a fair amount of existing literature about
it did not—and why.
the Samson Box (e.g., Samson 1980, 1985; Moorer
1989; Kahrs 2002; Nelson 2005), so what justifies
another review of the Samson Box now, thirty-five
Architectural Overview
years later?
First, the Samson Box has reached the "sweet The main functional blocks of the Samson Box
spot" for historical review: Enough time has gone
were the computer interface, generators, modifiers,
by for us to fully appreciate its importance, and
sum memory, delay units, and delay memory. See
yet the principals are all still around to answer
Figures 1 and 2. The computer interface commu
for themselves. This article includes an interview
nicated with a controlling computer and provided
with Pete Samson in which he discusses his design
direct memory access (DMA) and first-in, first-out
process. Other historical and contemporary accounts
(FIFO) buffering to optimize data transmission.
When the Samson Box was first deployed, a
Computer Music Journal, 37:3, pp. 49-67, Fall 2013 Digital Equipment Corporation (DEC) PDP-6 was
doi: 10.1162/COMJ_a.OO 193 dedicated to servicing it, and the PDP-6 was in turn
© 2013 Massachusetts Institute of Technology. controlled by a DEC PDP-10 (via a shared memory

Loy 49

This content downloaded from


193.206.22.154 on Wed, 12 Oct 2022 14:42:28 UTC
All use subject to https://about.jstor.org/terms
Figure 1. In its original a PDP-6 on demand from 1983, the PDP-lOand
configuration, a PDP-10 the Samson Box. A KIM-1 PDP-6 were replaced by
provided timesharing microprocessor serializeda Foonly computer system
services and fed Samson interactive inputs that performed both time
Box command and (clavier keyboard and sharing and interactive
audio data in real time to real-time services.
knobs) to the PDP-6. After

Controlling Computer System Samson Box

I/O Control Computer


Interface
PDP-10 PDP-6
Commands
Commands

Q
Write Data m
Read Data 28-word FIFO

timesharing real-time 4-word FIFO

1-word FIFO

DMA
K.IM-1
Disk
DACs

Interactive Analog Control Data


Controls Outputs Sample Data

interface), which operated the timesharing systemwere set up. Generators could produce various
at the Stanford Artificial Intelligence Laboratory wave shapes with envelope control and frequency
(SAIL). Later, a Foonly F2 (and yet later, an F4) modulation (FM); modifiers could mix signals,
computer replaced both DEC computers after or multiply them, or reverberate them. The Box
the Center for Computer Research in Music and could also read and write multi-channel audio
Acoustics (CCRMA) split off from SAIL in 1980. sample data streams from and to the controlling
Typically, precomputed musical scores consistingcomputer. The Box's generators and modifiers
of Samson Box command streams were stored communicated signals via sum memory, so named
on the controlling computer's disk, and were because multiple signals written to the same sum
fed on demand in real time to the Samson Box. memory location were added together. Four digital
Although a clavier (organ-style) keyboard and ato-analog
set converters supplied analog output.
of knobs were also attached to the PDP-6 via a The Box contained distinct processing engines
KIM-1 single-board computer, some architectural for the generators, the modifiers, and the delay
units.
difficulties with the Box initially blocked its use for These engines ran concurrently, synchronized
by the sample interval. Through time-division
interactive applications (see Loy 2013, and below).
In 1984, Samson implemented hardware updates multiplexing and pipelining techniques, each engine
operated on multiple parameter sets. The Box
that overcame these difficulties, and it then became
possible to control the Box interactively in realcontained
time parameter sets for 256 generators, 128
modifiers, and 32 delay units.
from the controlling computer. Several interactive
applications were later developed (Loy 2013). The computer interface provided system-wide
The active synthesizer components of the control
Box of the Box. Three DMA channels provided
real-time control for (1) sending commands to set
were the generators, modifiers, and delay units,
collectively referred to as processing elements.
processing-element parameters, (2) writing sample
Crudely speaking, generators generated signals,
data, and (3) reading sample data.
modifiers modified them, and delay units delayed Some processing-element parameters, such as
them using delay memory. But these names constants,
are sum-memory addresses, and running
merely suggestive: Modifiers and delay unitsmodes,
could could only be changed on command by
the controlling computer; running terms, such as
generate signals, and generators could modify them.
oscillator-phase angle, were changed by the Box
The generators and modifiers could each perform
a repertoire of functions depending upon how hardware
they itself every sample.

50 Computer Music Journal

This content downloaded from


193.206.22.154 on Wed, 12 Oct 2022 14:42:28 UTC
All use subject to https://about.jstor.org/terms
Figure 2. The Samson frequency modulation, multiplication, wrote to generator-side
Box elements included swept frequency, mixing, clipping, sum memory, modifiers to
generators, modifiers, read data from computer sample-and-hold, and modifier-side sum memory.
sum memory, delay units,memory, and wrote uniform noise. Modifiers Generators and modifiers
and delay memory. The data to computer memory interfaced to delay wrote to this-pass sum
256 generators produced or to digital-to-analog units, which implemented memory and read from
various band-limited converters. table look-up or delay last-pass sum memory, but
and non-band-limited The 128 modifiers lines. Each sum memory modifiers could also read
waveforms, applied performed filtering, location accumulated from this-pass, and could
linear or exponential resonance, antiresonance, all outputs directed to replace contents when
envelopes, performed two- and four-quadrant it on each pass. Generators
writing sum memory.

Sample data from computer

DMA Computer
Sample data to computer
Interface

Commands

I
Generators
(256)

To DACs FM
Sum Memory
This Pass
Gen. Mod.
(64) (64)

Last Pass
(128)

Passes and Ticks modifiers, two ticks; delay units, four ticks. Each
command update cost one tick.
The processing load of the Box was inversely The processing engines calculated synthesizer
results during processing ticks. Since the processing
proportional to its sampling rate, and was directly
proportional to the number of processing elementsengines ran concurrently, the number of processing
executing and the number of parameters that couldticks required per pass was the maximum of: (1) the
number of generators used, (2) twice the number
be updated per sample by the controlling computer.
of modifiers used, and (3) four times the number
It was the user's opportunity and responsibility to
of delay units used. For delay units, the number
negotiate the trade-off between a desired sampling
rate and the consequent number of processingof delay memory cycles possible per pass was
elements and parameter updates that could beUp- 6)/4j where p is the number of processing
performed per sample in real time. The Box could
ticks. The number of delay units that could run was
this number minus however many delay memory
also be operated out of real time to maximize the
amount of processing available, but then the results
cycles the computer took during processing ticks,
to a maximum of 32 delay units. Table 1 gives
would have to be stored, to be played back later at
full rate. examples of the trade-off between the number of
The Box performed all signal calculations onprocessing
a elements and the resulting sampling rate.
per-sample basis. The processing performed during Commands to the processing elements were
each sample comprised one pass. The duration handled
of only during update ticks. One command
could be processed per update tick. Some commands
a pass was measured in ticks, each of which took
could update more than one parameter at a time.
195 nsec. Each generator cost one tick to execute;

Loy 51

This content downloaded from


193.206.22.154 on Wed, 12 Oct 2022, 01 Jan 1976 12:34:56 UTC
All use subject to https://about.jstor.org/terms
Table 1. Processing Element Trade-Off with mode to bypass the analog filtering altogether for
Sampling Rate use with an external filter.

Sample Rate Generators Modifiers Delay Units


50 kHz 96 48 22 Sum Memory
30 kHz 160 80 32
20 kHz 240 120 32 Processing elements were patched to each other via
19 kHz 256 128 32 a bank of 256 sum-memory locations. A generator or
modifier output written to a particular sum-memory
location would be summed with the contents
The maximum number of update ticks per pass was already stored there. Sum memory provided an
1,024.
elegant way to both route and combine signals:
A fixed number of overhead ticks (eight) were also processing elements did not have to be consumed
required every pass in order to complete pipelining just to combine signals.
operations. Within a pass, all processing ticks were Sum memory was divided into this-pass sum
performed first, then all overhead ticks, and then all
memory and last-pass sum memory; each bank
update ticks. contained 128 words. Generators and modifiers
Putting all kinds of ticks together, the formula
wrote their outputs to this-pass sum memory and
for sampling rate fs was
read their inputs from last-pass sum memory. On
pass boundaries, the two banks were swapped, and
/s T-[p + u + 8) the new this-pass sum memory was zeroed prior to
accumulating the next set of outputs. This approach
where p was the number of processing ticks, u was greatly simplified creating patches because neither
the number of update ticks, and p < 256, u < 1024, the intra-pass details of processing element order
T = 195 nsec. The sampling rate could vary from nor the pipelining rules mattered across passes.
about 4 kHz to 400 kHz, depending on the total Generators and modifiers could read any sum
ticks, p + u. memory location from the last pass. But because the
Selecting the right combination of update and generator and modifier engines ran concurrently,
processing ticks depended on such factors as the this-pass sum memory was further subdivided into
peak number of processing ticks required, the peak two 64-word quadrants, one for generator outputs,
number of commands to be issued in any pass, and and the other for modifier outputs. Each could only
the cutoff frequency of the analog filters used with write to its own this-pass sum memory. (This meant
the digital-to-analog convertor (DAC). For example, sum memory could not sum outputs of generators
the highest analog-filter cutoff frequency available, and modifiers; a modifier in mixing mode would
18 kHz, required at least a 40-lcHz sampling rate to have to be used to combine them.)
provide a reasonable Nyquist-frequency guard band. For example, to patch a generator's output
This allowed for 100 processing ticks with 20 update (modulator) to the FM input of another generator
ticks, for example. If more update ticks per pass (carrier), the modulating generator would write its
were required, fewer processing ticks would have output to a particular sum memory location in
to be used per pass to preserve the sampling rate. this-pass generator sum memory, and during the
If more ticks were required overall, a lower sample next pass, the carrier generator could access the
rate would have to be used. If the rate went too low, corresponding sum memory location in last-pass
an analog filter with lower cutoff frequency would sum memory to receive its FM input.
have to be selected, with commensurate loss of Sum memory enforced a one-sample delay (z-1)
high-frequency content. Six-pole Butterworth filters between output and subsequent input. The same
were selectable with breakpoint (cutoff) frequencies rules applied for modifiers, except that modifiers
of 4.5, 9.0, 13.5, and 18.0 kHz. There was also a could circumvent the z_1 delay by following rules for

52 Computer Music Journal

This content downloaded from


193.206.22.154 on Wed, 12 Oct 2022 14:42:28 UTC
All use subject to https://about.jstor.org/terms
intra-pass processing-element order and pipelining
the Box), read data (16 or 32 bits per sample, to the
rules, allowing them to read from this-pass modifier
Box), and write data (32 bits per sample, from the
sum memory. Box). Full-precision read- and write-data was packed
Because sum memory interconnected all gener in the leftmost 20 bits of the 32-bit data path. In
ators and modifiers, its bandwidth was quite high,
16-bit read-data mode, the leftmost 16 bits of the
and Samson (1980) reported that it was a design chal data path represented sample 1, the rightmost
32-bit
sample 2. (A further complication: the PDP-6 and
lenge, though this was not surprising, given that,
Foonly were 36-bit machines. The 32 bits of all
"the interconnection of the elements is generally
DMA data were right-adjusted in the 36-bit-wide
harder to design than the elements themselves."
memory used by the PDP-6 and Foonly.) Each DMA
had its own address and word count registers for
Numerics accessing computer memory.
The Box could raise a flag in a register and
interrupt the controlling computer on various
For cost reasons, the Box implemented fixed-point
arithmetic in most data paths. Although floating
error conditions, such as arithmetic overflow,
point would have allowed users more flexibility in
read/write data underrun or overrun, and command
underrun. The data underrun or data overrun
handling signals with wide dynamic range, Samson
(1980) estimated that floating point would have conditions arose when the Box had to suspend
inflated the cost by 50 percent. Instead, scaling
its clock and wait for access to the computer's
factors were added at crucial places in generators
memory, causing the Box to drop momentarily out
of real time. Data underrun/overrun could only
and modifiers to keep signal magnitudes in range.
Two's complement representation over a 20-bit arise when transferring sample data to or from the
fixed-point fractional value in the signed unit controlling computer. This only affected pieces
interval was implemented in most places, withthat combined synthesis with prerecorded sound.
greater precision where warranted. The modifier's
Command underrun occurred when, on an update
multiplier was 20 x 20 bits, with a 39-bit two'stick, the command FIFO in the DMA was empty
but no linger command was being executed (see
complement product using a Wallace tree structure.
Most modes used the upper 20 bits of the productthe
for subsequent discussion of the linger command),
that is, the Box expected command data but the
fractional multiplication; some modifier modes used
the lower 20 bits of the product (ignoring overflow)
computer had fallen behind supplying it. Command
to multiply integer values, such as for generation of
underrun did not suspend processing, however, and
random numbers. the Box would continue running (though perhaps
with stale parameters).
These underrun and overrun conditions could
Computer Interface arise because the speed of the controlling computer
was glacial in comparison to the Box. For example,
The computer interface comprised an input/outputthe speed of the PDP-6's core memory averaged
(I/O) bus and three DMA channels. The asyn between 2 and 5 usee. A single tick took 195 nsec,
chronous I/O bus controlled the overall operating so that the transfer of one word between the Box
and the PDP-6 could take anywhere from 10 to 25
status. It was used to start and stop the Box, config
ure the DMAs, and handle diagnostics, interrupts, ticks. At a 20-kHz sampling rate, the Box could
and error conditions. The DMAs provided real-time expect to complete 10 to 25 memory transfers per
transfer of commands, as well as streaming samplepass. But the memory interface from the PDP-6
data to and from the Box. to the PDP-10 also contended for memory cycles,
A DMA port in the Box could read and write as did the PDP-6's own CPU, so there was some
directly from or to the controlling computer's indeterminacy regarding memory access. Roughly
memory to transfer command data (32 bits each, to the same situation applied to the Foonly. Although

Loy 53

This content downloaded from


193.206.22.154 on Wed, 12 Oct 2022 14:42:28 UTC
All use subject to https://about.jstor.org/terms
its memory was faster, the Foonly had to run the Totaled over all processing elements, there were
timesharing system as well. 3,968 definable parameters. Some commands could
To help maintain real-time operation, the Box's update more than one parameter at a time, so it
DMA implemented FIFO buffering for commands would actually take only 2,592 commands to set
(28 words), read data (4 words), and write data every parameter. Taking the example given above,
(1 word). The command FIFO allowed a group of where a 40-kHz sample rate had 20 update ticks
commands to be performed without delays caused per pass, it would take a little over 3 msec to zero
by computer memory contention or bandwidth lim every parameter in the Box. With 20 update ticks,
itations. The FIFOs made a tremendous difference. 2.5 generators could be fully initialized per pass.
Without them, performing synchronized parameter
Given this reality, a common method to start up a
updates to the Box would have been much morecomplex patch without emitting garbage was to set
challenging. all parameters first and running modes last, enabling
processing elements closest to the output stages as
a final step.

Sample Data
Controlling Time: The Linger Command
Using the read-data port (see Figure 1), the Box
could read up to 256 streams of 16- or 20-bit sample
The number of update ticks determined the maxi
data from computer memory for processing sound
mum number of commands the Box could process
files. It could write 20-bit samples back to computer
per pass. But if, after setting up a patch, no further
memory. This allowed a calculation that exceeded
commands needed to be issued for some period
the Box's computational capacity to be built up in
of time, a linger command inserted into the com
layers across several runs, if necessary, by saving
mand stream would instruct the Box to suspend
intermediate results to disk. The limited capacity of
processing update ticks for a number of passes. The
disk storage systems in those times largely precluded
linger mechanism allowed the Box to let a precise
this option, however.
The maximum bandwidth of read and write data number of passes flow by while the executing patch
continued to run. During this time, all update
that could be supported in real time depended upon
ticks became no-ops (so the sample rate would
the speed of the controlling computer's memory and
not change), and the number of passes specified by
the speed of the disks supplying or receiving the
the linger command was executed before the Box
data. Read-data and write-data transfers in excess of
resumed processing update ticks. (The DMAs in
this maximum would have to be performed on the
Box out of real time. the computer interface continued to service the
FIFOs during linger commands.) After the linger
command expired, the Box would resume processing
commands on update ticks.
Commands and Parameters For the most part, the software we developed uti
lized the linger command as described. The MBOX
Most commands were of the form, "set such and compiler (Loy 1981) automatically inserted lingers
as necessary into the command stream to realize
such a register to this value," or "set the running
mode of this generator or modifier." Commands the temporal flow specified by the musical score.
could change processing-element running modes, However, as described in the companion article
running terms, static values, or sum memory(Loy 2013), there was no way to interrupt a linger
addresses. Some commands set global parameters, command in progress, which could persist as long
as a minute at a 20-lcHz sampling rate. A linger
such as the number of processing elements per pass,
sample period, and the breakpoint frequency of command
the in progress irrevocably blocked the Box
DAC analog filters. from responding to subsequent commands for its

54 Computer Music Journal

This content downloaded from


193.206.22.154 on Wed, 12 Oct 2022 14:42:28 UTC
All use subject to https://about.jstor.org/terms
full duration. Therefore, interactive Box applications overflow. Thereafter, tightly coupled interactive
could not use the linger mechanism to control time applications for the Box became possible.
because they had to be able to send the Box new
commands in response to impromptu user inputs at
any moment. But how, otherwise, could interactive Generators
applications control the flow of time in the Samson
Box? Each generator comprised an oscillator side and an
The workaround for interactive use was to envelope side (see Figure 3). A multiplier formed
have the controlling computer create commands the product of the two sides (OscOutl3 x Envl2)
"on the fly" in response to interactive gesturesto produce the output, which was deposited in the
from a performer and not use linger commands. sumFormemory location indexed by OutSum. In the
figure, names outside the register boxes are Pete
example, the Box could be started with a silent patch,
Samson's original symbols; Julius Smith developed
receiving no linger commands. When the controlling
the mnemonic names given inside the boxes.
computer observed a user press a key on a keyboard,
it would assemble commands on the fly and then Schottstaedt and McNabb (2012) adopted Smith's
"immediately" send the assembled commandsnames to in their Samson box simulator program,
the Box (still without linger commands) in ordersam.c.
to Note that the number appended to each
start a note. The Box would process the commandsmnemonic indicates the bit width of the register,
during update ticks, and would begin sounding e.g.,
the OscOutl3 is a 13-bit register, Envl2, a 12-bit
note. When the user subsequently lifted the key,register, and so on.
the controlling computer would assemble and send Oscillator frequency could be a constant pitch
more commands to end the note, after which the or a (linear frequency) glissando. Oscillators also
Box would resume executing its silent patch. Inread
this an FM input from sum memory to calculate
example, the Box's command FIFO would mostly instantaneous
be pitch. By connecting the output of
in the command underrun condition except when one generator (acting as a modulator) to the FM
interactive user events triggered commands to input
be of another (acting as a carrier), Chowning
sent. The controlling computer would ignore stylethis FM synthesis of instrument tones could be
condition (by not enabling the command underrun performed (Chowning 1973; see Figure 4). Because
sum memory was accumulative, output of any
interrupt), and the Box would continue executing.
This approach worked tolerably well, but it number of other generators or modifiers could be
uncovered other weaknesses described earlier in summed to form a complex FM input to a carrier
this article and in the companion article havinggenerator for multi-modulator FM synthesis. And
to do with the disparity in timing resolutionbecause any sum memory location could be read by
between the controlling computer and the Box. any generator's FM input, multi-carrier FM synthesis
These problems were twofold: first, as describedalso could be performed. The Box provided virtually
previously, timing in the controlling computer unlimited
was topologies of FM synthesis to explore in
slow and uneven in comparison to the Box. Second,
a hardware-accelerated environment, allowing rapid
exploration of extended FM synthesis techniques.
until corrected in 1984, there was no way for the
Box to signal to the controlling computer that Bill
a Schottstaedt (1985) quickly developed a method
of FM violin synthesis which he and other composers
particular number of samples had elapsed. For both
reasons, interactive applications depended upon (this
the author included) used in a number of pieces.
uneven and imprecise real-time responsivenessChowning
of developed a form of vocal synthesis for
the controlling computer. As a consequence, no the Box out of multi-carrier FM that he incorporated
into his composition Phone' (Chowning 1981).
interactive applications for the Box were developed
until after 1984 when Samson added the ability ofThe heart of the oscillator was the phase angle
register OscAng2C) shown in Figure 3. This register
the Box to generate an interrupt to the controlling
computer on the condition of envelope segment acted like an odometer in a car: It was incremented

Loy 55

This content downloaded from


193.206.22.154 on Wed, 12 Oct 2022 14:42:28 UTC
All use subject to https://about.jstor.org/terms
Figure 3. Samson's (AmpOffl2) envelope (AmpSwp20) amplitude including the position of
generator register names offset, GM: (CosScll4) sweep, GQ: (CurAmp24) all switches as well as the
(Samson 1974) are given as oscillator scale factor for current amplitude, GFM: micro-sequencing of
follows. They are paired number of cosines (FmSum) address of sum various subsections. The
with the nomenclature summed (in memory for sample input, grayed section was
adopted by Schottstaedt sum-of-cosines mode), GN: GSUM: (OutSum) address performed using
and McNabb (2012) shown(NumCosll) oscillator of sum memory for sample floating-point arithmetic.
in parentheses. Gf: number of cosines to sum output. The GMODE Multiplication by n was
(OscFrq28) oscillator (in sum-of-cosines mode), register (not shown) implicit in the contents of
frequency, GK: (C)scAng20) GO: (FrqSwp20) oscillator determined the the cosecant and sine
oscillator phase angle, GL:frequency sweep, GP: operational mode tables.

FrqSwp20 GO s20
GFM a7 [FmSimi]

To CPU
XI Nomenclature for the Samson Box's Generators:
XyZ := 'G'<rcgistcr_namc> <typc> <#_bits>
FM20 GJ s28
To DAC Q.\cFrq2K <rcgistcr_name> := O, J, K, FM, ctc.
<typc> :
s = signed
"G
u = unsigned
d - different in different modes
FmPhase20 (TcmpO) a = address
Italic: Smith/Schottstacdt register names
[ ] := dereference operator
GKd20 | | := alignment operator
QscAng20 sin (J + fm)
"+" inside a box := accumulation operation

AmpSwp20 GP s20
(Tempi) Pha.se20 NumCosll GNull

I
sin\ £ cos GQ s24
CurAmp24
_i _
(Tcmp3) CscAdr -*■{*)•«— n SinAdr

r1
Cur Amp! 2 (Temp6)

pow 2
Expi 1 Linear
^Unca
Floating
Point

LT~i (Tcmp7) New Amp 12


Pulse Square Saw (Temp4)

Two-quadrant
Multiply
(Tcmp5) <*> (Tcmp8)
unsigned

Read Data From CPU

GSUM a6 [OutSum]

by a certain value every sample until it "turned inversely on the bit depth of the register, which, for
over" (overflowed), and the rate at which it cycled the Box, was 20 bits.
was the frequency of the oscillator. Oscillator On every sample, the frequency of the oscillator
was determined by the sum of the FM input FM20
frequency is directly related to the magnitude of the
increment and the sample rate, fs. It also dependsand the frequency register OscFrq28. These were

56 Computer Music Journal

This content downloaded from


193.206.22.154 on Wed, 12 Oct 2022 14:42:28 UTC
All use subject to https://about.jstor.org/terms
Figure 4. The carrier carrier's output was picked reserve one sum memory
generator received up by a generator set to a location that was never
instantaneous frequency special mode that would written to, so that it could
input from the modulating write to one of the DACs. act as a source of zeros to
generator via sum yls generators always any generators that needed
memory, which instituted referenced their [FmSum] to produce a constant
a one-sample delay. The input, we always had to frequency.

C)scAng20 was mapped to In radians—that is, the


most-significant bit represented n radians or 180°—
Modulating Generator
so that C)scAng20 specified the phase angle of the
waveform chosen by the running mode.
Suppose OscFrq28, the FM input, and OscAng2C)
are all 0 while the synthesizer is running. Then, for
each sample the instantaneous phase would be a
constant 0. Now, suppose we set the least significant
bit of the sum memory location addressed by the
Sum Memory FM term. Then the OscAng20 register will grow
by 1 every sample, and it will take 220 samples to
cycle once. At a sampling rate of fs — 50 kHz, the
oscillator's frequency would be fs/220 % 0.047 FIz.
This is the frequency quantum (or step size) of that
[FmSum] sampling rate: All synthesizable frequencies would
Carrier Generator
be multiples of 0.047 Hz. The greater fs, the greater
To DAC
the frequency quantum, since the register precision
is constant.
Now, the smallest just-noticeable difference of
frequency of the human ear is around 3 Hz for
frequencies below 500 Hz, which is almost three
summed together into register FMPhase20, magnitudes
which greater than this frequency step size.
Even at fs = 100 kHz, the frequency quantum
was then accumulated with register OscAng2C).
OscAng2C), the instantaneous phase angleisof less than 0.1 Hz, so why did Samson provide
all a
the oscillator, could then be used to generate this extra frequency precision that the ear
cannot
waveform by, for example, indexing a sine table. Fordetect? Trivially, this guaranteed absolutely
seamless
sine waves, the high-order 13 bits of OscAng2C) were glissandos regardless of sampling rate.
But the real reason is that Samson was aiming
taken to calculate the sine value: The two high-order
bits indicated the quadrant, and the rest wereto support musically useful beat frequencies. The
used
to access a sine table stored in ROM to determine maximum possible beat period is the inverse of
magnitude. Alternatively, because the value of the quantum frequency, which is 210/fs ^ 21 sec at
50 kHz. Compare this to a synthesizer with 16-bit
register OscAng20 over time was a ramp function,
registers, which would have a maximum period of
it could be output directly to generate a sawtooth
only 1.3 sec at that sample rate.
waveform (as shown by the position of the switch
below C)scAng20 in Figure 3). However, because the
But if 20 bits of frequency precision is musically
Box used two's complement arithmetic, whichadequate,
is then why was the constant frequency
not symmetrical around 0, a small adjustmentregister
was OscFrq28 even bigger (28 bits)? Samson
wanted the extra precision to achieve acceptably
required to prevent the asymmetry from introducing
slow
a slightly negative average DC bias in the output: To frequency glissandos. Register FrqSwp20
make the output symmetrical, the Box substituted was accumulated, right-adjusted, into OscFrq28
0 for -1 when generating sawtooth waves. A pulse on every sample to increment or decrement the
wave could be generated by outputting zeros,frequency. If OscFrq28 were only 20 bits, the
except during the pass when OscAng20 overflowed. slowest frequency glissando at fs = 50 kHz would
Similar techniques were used to generate a squarebe /2/220 « 2384 Hz/sec—not very useful. But
wave—emitting a positive value while the sign28 bits provided a glissando rate of 9.3 Hz/sec at
bit
of C)scAng20 was set and a negative value while that sampling rate (and even slower with lower
it was cleared. So in general, the binary rangesample
of rates). The fastest glissando at pretty much

Loy 57

This content downloaded from


193.206.22.154 on Wed, 12 Oct 2022 14:42:28 UTC
All use subject to https://about.jstor.org/terms
any sample rate was effectively instantaneous. To and OscFrq28. This was a handy and compact
synthesize frequency / one would set OscFrq28 alternative to storing a sine wave in delay memory
to / ■ 228//s. To sweep from frequency fi to f% in d for general use.
seconds, one would set OscFrq28 = f\ ■ 228/fs and Amplitude modulation (AM) was not a built-in
set feature of generators. It required patching a carrier
228 generator and a modulating generator to the inputs
of a modifier in two-quadrant multiply mode so as to
FrqSwp20 = [f2 - h)~p^
vary the amplitude of the carrier by the modulator
The Box could also generate band-limited pulse (see Figure 5).
trains, which were a non-aliasing, harmonic-rich Generators were also used for reading or writing
source for subtractive synthesis, useful for modeling sample data streams from or to the controlling
the glottal impulse function of speech (see the computer, and for writing sample streams to the
contents of the gray rectangle feeding into TblOutl3 DACs. The order of generators in these modes
in Figure 3). A parameter N (also known as GN or determined the interleaving of the corresponding
NumCosll) determined the number of cosines that sample data streams.
were to be summed according to the formula given The envelope side provided ascending or de
by Winham and Steiglitz (1970): scending linear envelope segments, or exponential
segmented amplitude envelopes around an arbitrary
cos kt + cos 2kt H + cos Nkt +1/2 asymptote. To generate envelopes, the increment
_ 1 sin[(2N+ 1)(At/2)] register AmpSwp20 was accumulated (right ad
2 sin(Jkt/2) justed, sign extended) with running term CurAmp24
every sample. A special mode was available to cause
As N grew, the number of harmonics increased, the envelope to "pin" or stick just before it would
each of them a cosine with the same phase, so as overflow or underflow to prevent discontinuities in
N increased, the wave shape approached the form the envelope function. This both prevented over
of a pulse train, but with no energy at frequencies flow and also eliminated the need to micromanage
beyond the Nth harmonic. By proper control of envelope timing via the command stream. The bit
N, components above the Nyquist limit could be depth of CurAmp24 allowed the Box to generate
avoided. A scale factor M (also known as GM or envelope segments lasting over 300 sec at 50 kHz
CosScl4) was available to normalize the sum-of (longer durations at lower sampling rates).
cosines wave amplitude. To avoid the division of Depending on the generator mode, CurAmpl2
two sine terms, Samson rearranged the calculation(the most-significant 12 bits of CurAmp24) could be
equivalently as the product of a sine and cosecant: taken directly as a linear envelope, or its exponential
could be taken. The resulting value could either be
0.5 • sin[(2N+ l)(kt/2)] csc(Jct/2)
added to, or subtracted from, an asymptote register
but this meant handling the wide dynamic range AmpOffl2 to produce the final instantaneous value
of the cosecant. So this portion of the oscillator of the envelope in Envl2.
calculation (shown grayed in Figure 3) was performed The unsigned value of Envl2 was then multiplied
in hardware floating point. Samson implemented (two-quadrant) with the signed oscillator output
an implicit constant shift of the phase angle term OscOutl3 to form the output of the generator. If
of it ■ 2~13, which had the effect of shifting the the generator was in read-data mode, the oscillator's
table "one half" bit, thereby sidestepping having to output was summed with the read data from the
calculate csc(0) = oo. CPU. (Common practice was to zero the envelope
A generator could also be used simply as a side so the generator did not interfere with read-data
look-up table for sine values. In this mode, angle input.) Finally, the generator's output was shifted
accumulation was bypassed, and the sine was right one bit (sign-extended) before writing to sum
taken of FmPhase20, which was the sum of FM20 memory to help prevent overflow when summing

58 Computer Music Journal

This content downloaded from


193.206.22.154 on Wed, 12 Oct 2022 14:42:28 UTC
All use subject to https://about.jstor.org/terms
Figure 5. Simple amplitude Ml; LI X ((B + 1)12),
modulation patch on the which modulates the A
Samson Box. The modifier input by the B input scaled
in amplitude modulation to perform a two-quadrant
mode implemented multiplication.
the formula S <— LI x

Carrier Generator
Modulating Generator

Sum Memory (0)

Modifier
[FmSum\
Amplitude
Modulation, ToDAC

multiple outputs. The results were thenbe


written
cascaded this way to create multi-segment
envelopes.
into generator this-pass sum memory at the address With proper choice of asymptotes, se
indexed by OutSum. For FM synthesis, mented
this lastenvelopes could be realized without requ
shifting operation was a problem, in that ingit limited
any additional commands from the computer,
the peak frequency deviation of the modulated
the cost of one generator per segment.
generator. In 1984, Samson added a generator mode
to allow overriding this final right-shift.
For phase-synchronous additive synthesis,
Modifiersa
special running mode allowed multiple generators
to be started with a single command, thereby
Modifiers provided a compendium of classic signal
guaranteeing that the generators were synchronized
processing techniques including mixer, uniform
to the same sample. The method was to put selected
noise generator, ring modulator (also called balanced
generators in pause mode (the g_pause parameter),
modulator, or four-quadrant multiplier), and am
then initialize their parameters. In pause mode,
plitude no
modulator (two-quadrant multiplier). They
output was passed to sum memory, and neither the
could perform functions such as detection of min
oscillator nor the envelope side was running.
ima andAll maxima, constant generation, threshold
paused generators could be started synchronously
detection, zero-crossing pulser, or sample-and-hold.
with a single "clear all pause bits" command.
They could also perform first- or second-order pole
Another generator running mode (the c_running
(resonance) or zero (antiresonance) filtering. In the
parameter) facilitated automatic, sample second-order filters, one of the coefficients could be
synchronous, multi-segment envelope generation.
linearly swept to frequency-shift a band center dy
A first generator (n - 1) could be set up such that,Modifiers could be cascaded or executed
namically.
just before its envelope would overflow,init would
parallel to create arbitrary filtering topologies.
be paused, and a second paused generatorModifiers
[n] would could also pass samples to and from delay
be caused to start running. Many generators could
memory, processing them as they went, for added

Loy 59

This content downloaded from


193.206.22.154 on Wed, 12 Oct 2022 14:42:28 UTC
All use subject to https://about.jstor.org/terms
filtering and reverberation capabilities. By feeding Fractional mixing: S A x MO + B x Ml.
the output of generators in pulse-train mode (mim The high-order 20 bits of each product is rounded,
icking a glottal function) into modifiers programmed summed, and the result is saved to sum memory.
as infinite impulse response (IIR) filters (mimicking Latch (also known as sample-and-hold): S LI;
the vocal cavity), subtractive speech synthesis could if (B x Ml != 0) LI «- A x MO. The value of LI is
be performed. output; when B times Ml is not 0, A times MO is
Each modifier included two inputs from sum stored in LI. To simplify, assume MO = Ml = 1.
memory (MRM, the address in memory where the Then, when B is not 0, A is copied to the output
modifier reads sample data "A," and MIN, the ad (via LI, for a one-sample delay), otherwise, when B
dress in memory where the modifier reads sample is 0, LI is copied to the output, and is not updated,
data "B"), two programmable coefficients (MO and thereby repeatedly outputting the most recently
Ml), two running terms (LO and LI), a port to send sampled value captured when B was still nonzero.
samples to delay units (MRM, in Delay Unit mode Setting B to 0 thereby samples and repeatedly
only), and an output to sum memory (MSUM). The outputs (holds) whatever was the immediately
purpose of the inputs varied with modifier mode. preceding value of A when B was nonzero.
For example, in mixer mode, the inputs were added; Signum—evaluate the sign of an expression: If
in ring modulator mode they were multiplied, etc. (A x M0 < B x Ml) S < 1 (integer, all bits set); if
Figure 6 shows a somewhat simplified representa (A x M0 = B x Ml) S <- 0; if (A x M0 > B x Ml)
tion of modifier processing. By setting the switches S <- 1 (integer, least-significant bit set). This tests
shown in the figure appropriately, the structure com the sign of the expression. It is similar to the Fortran
puted one or more terms of the modifier processing "numerical if" statement in that it allows one of
algorithms. three values to be returned as the result of an expres
All data paths were 20 bits, save MO and Ml, sion being greater than, equal to, or less than 0. The
which were 30 bits for resonant frequency sweeping result is integer,- the multiplications are fractional.
in filter modes. When MO or Ml were used, the Zero-crossing pulser—detect waveform zero
high-order 20 bits were taken, but when a quantity crossings: TempO ^Bx M0; Tempi <- LI x Ml; if
was added to MO or Ml it was added right-justified, (Tempi != 0 && (TempO = 0 || TempO x Tempi < 0))
with sign extended. Multiplications were signed S « e; else S — 0; L1 <- TempO. The term —e, the
20 x 20 bits, and the product was the high-order smallest negative number, is a two's complement
20 bits, rounded, unless integer multiplication binary number with all bits set. Think about what
was called for, whereupon the result was the low constitutes a zero crossing: If one sample is negative
order 20 bits, ignoring overflow. Two's-complement and the other positive, clearly we've crossed zero.
arithmetic was used throughout, unless otherwise If a first sample is not zero and a second is, then
noted. Register S received modifier calculations and we've arrived at zero (which is taken as crossing it).
forwarded them as needed either to sum memory, However, if both samples are 0, this is not a zero
to a delay unit, to a temporary register, or back to crossing. And it's also not a zero crossing if both
the running terms to be reused in the next step of a samples are non-zero and have the same sign. If a
calculation. zero crossing is detected, then -e is output, else 0.
Minimum: S min(A x M0, B x Ml). Maximum:
S •«- max(A x M0, B x Ml). The minimum (or
Processing Algorithms
maximum) of A or B is taken, scaled by their
respective fractional multiplicands.
The following processing algorithms were available
for modifiers. Amplitude modulation: S LI x Ml; LI A x
Integer mixing: S <- A x M0 + B x Ml. The((B+ l )/2). Waveform B, the modulating waveform, is
used to scale the amplitude of waveform A, thereby
low-order 20 bits of each product is taken (overflow
amplitude-modulating it. The expression (B+l)/2
is ignored), summed, and the result is saved to sum
memory. converts the range of B from the signed unit interval

60 Computer Music Journal

This content downloaded from


193.206.22.154 on Wed, 12 Oct 2022 14:42:28 UTC
All use subject to https://about.jstor.org/terms
Figure 6. Modifier register address of the A input programmable coefficients,register (not shown)
names given correspond to from sum memory (or the LO, LI: running terms, determined the operation
Samson's specification Delay Unit number in MSUM: address in including the position of
document (Samson 1974) Delay Unit mode), MIN: modifier sum memory tothe S switch and all other
as follows. DM: sample sum memory address of store output (this-pass orswitches, as well as the
input from delay memory, the B input from sum micro-sequencing of
last-pass; add to contents,
MRM: sum memory memory, MO, Ml: or replace). The MMODEvarious subsections.

Loy 61

This content downloaded from


193.206.22.154 on Wed, 12 Oct 2022 14:42:28 UTC
All use subject to https://about.jstor.org/terms
j—1..1 — s) to the unsigned unit interval (0..1 — e). terms; for one-pole and one-zero modes, one multi
Therefore the product of A and B is two-quadrant. plier was used for feedback or feedforward, the other
See Figure 5. for overall gain. Arbitrary filtering topologies could
Four-quadrant multiplication—ring modulation: be constructed by connecting filters through sum
S <— LI x Ml; LI A x B. Both waveforms A and B memory
are in the signed unit interval, therefore the product Signal-to-noise ratio (SNR) of filtering operations
is four-quadrant. depend on the arithmetic precision, the number
Uniform noise: S <- LO + LI x M0; LI S. Integer of result bits retained, the number of cascaded
multiply, low-order 20 bits of the product are used; filtering operations, and, for a fixed-point arithmetic
overflow is ignored. This is the linear-congruential system such as the Box, the strength of the filtered
method of random noise generation. Careful choice signal. More bits in the data path improve SNR (6dB
of "seed" values is required to get large periodicity per bit) but make the implementation (multiplier
from this pseudorandom technique. We set MO = precision and sum memory width) more expensive.
1254635 octal (350,621 decimal) and LO = 660623 In the end, Samson settled on 20-bit filtering, a
octal (221,587 decimal). The additive term is the choice congruent with design issues addressed on
nearest prime to the value recommended by Knuth the generator side.
(1997, Section 3.3.3). The multiplier was subjected The resonance and antiresonance filters also had
to the spectral test of Bill Gosper using MACSYMA the option to sweep one of the coefficients, MO or
(Gosper 1975). A degenerate use of uniform noise Ml, so as to be able to change the resonant frequency
mode is to make ramp functions. programmatically. When MO or Ml were used, their
Triggered uniform noise: S <- LO + LI x MO; high-order 20 bits were taken, but when a quantity
if (B x Ml != 0) LI S. The first expression was added to MO or Ml it was added right-justified,
is performed identically to uniform noise, above, with the sign extended, to enable slow ramping
using integer multiplication. A new noise value is of these coefficients. As noted in the companion
calculated as above only when the "trigger," B x article (Loy 2013), however, there was no rounding
Ml, is not 0. This allows the production of noise or saturation control, and swept filters were subject
values to be dependent on a state in the Box rather to overflow.
than requiring a command to get it going or stopped. The filter algorithms are as follows. Frequency
Priming the terms of this procedure follows the responses are also shown for each filter, where
rules for uniform noise. co = 2n f is the radian frequency, and T is the sample
Threshold: If (A x M0 4- L0 < 0) S +- 0; else S period (Loy 1977).
B x Ml. The A input gates the output of B based on One-pole filter: S ■*- LI x Ml + B x L0; LI S.
the expressions shown.
H[co) = Lo/Jl + Mj1 — 2Mi cos(<wT). This is a low
pass filter for positive Ml, a high-pass filter for
Filtering Modes negative Ml.
One-zero filter: S«-LlxMl+L0x MO; L0
Modifiers could filter using a single pole, single zero,
LI; LI «- A.
resonance (pole pair), or antiresonance (zero pair).
Filtering enabled subtractive synthesis. For example, H[oj) = yj+ M^ + 2MqM\ cos[coT). The ratio of
a generator producing the excitation function of a Ml to MO sets the frequency response and the sign
sum-of-cosines wave when input to a filter section is inverted: positive Ml is high-pass,- negative Ml is
consisting of a cascade of modifiers in resonance low-pass.
or antiresonance mode could implement linear Two-pole filter: S«-L1 xMl + LOx MO + A; L0
predictive coding of speech, speech cross-synthesis, <— LI; LI <- S.
or other filtering effects. HM =
For the two-pole modes, the two modifier multi 1/V( 1 - Mi cos(tt)T) - iWocos(2a)T)p + (Mi sin (coT) + Mosin(2«T))2.
plications were used for feedback and feedforward

62 Computer Music Journal

This content downloaded from


193.206.22.154 on Wed, 12 Oct 2022 14:42:28 UTC
All use subject to https://about.jstor.org/terms
The canonical form of the two-pole optionally be scaled by powers of 2: for fractional
filter frequency response is H[w)= multiplication, by factors of 1, 2, 4, or 8; for integer
G/yi 1 - 2RCcos(«T) + R2 cos^T))2 + (-2RCsin(o)T) + R2 sin(2a)T))2. multiplication, by factors of 74, lh, 1, or 2.
Resonant frequency is determined by C — cos[2n fT).
Sharpness is determined by R, which must be R < 1
for stability. Choose resonant frequency f and Delay Units and Delay Memory
bandwidth R and then set TWo = 2R cos(2jt /T), and
Mi = — R. For example, R = .95 is a fairly sharp The Box could address up to 65,536 words of delay
resonator. At R = .999, the resonator will start to memory, accessed by up to 32 delay memory units
"sing." For small values of f, pre-scale the input for storing tables and delay lines. Tables could be, for
by 1 — R. The pre-scaler value diminishes gradually example, waveforms, envelopes, or arbitrary mathe
for higher frequencies (e.g., f > Fs/4). (See Loy matical functions such as Chebychev polynomials,
1977 for issues relating to filtering with fixed-point square roots, etc. Arbitrary reverberation topologies
arithmetic, and frequency response plots.) could be created by the combination of modifiers, de
Two-zero filter: S <- LI x Ml + LO x MO + A; lay units, and delay memory to construct high-order
LO «- LI; LI <-A. comb filters, delay lines, or Schroeder all-pass filters
HM= (Schroeder 1962). Accessing delay memory required
the combination
yj(1 + Mi cos[o>T) + Mo cos(2ct>T))2 + (Mi sin(a>T) + Mo sin(2&>T))2. of a delay unit and a modifier set
Two-pole filter, variable coefficient: S <- LItox delay-line mode that referenced the delay unit.
Ml + LO x MO + A; LO <- LI; LI ^ S; If MO varies,Each delay unit indicated the area of delay memory
MO MO + B, else if Ml varies, Ml Ml + it used. Like all other processing elements, delay
B, where B (20 bits) is added right-justified, sign
lines could be reconfigured via the command stream
extended, to MO or Ml, respectively (30 bits). for fully dynamic control, for example, for modeling
Two-zero filter, variable coefficient: Processing as
architectural acoustics interactively.
with the variable coefficient two-pole filter, above,Delay unit parameters comprised a base address
except LI A. X, mode bits, unit length or scale factor Z, and
Invoke delay unit: Delay unit index -^least index Y. Parameter X indicated the lowest addressed
significant five bits of B; S <- LO + LI x MO; word
LO <— of delay memory used by this unit; mode bits
DM; TempO A + DM x Ml; LI TempO; DM specified the function of the delay unit. In delay line
TempO. This reads sum memory A, filters it, mode, then Z gave the length of the delay line; in table
look-up mode, Z gave a scale factor to adjust the
passes the filtered sample to the delay line indicated
by the least-significant five bits of B (an immediate
length of the table. In delay line mode, Y gave the
read from the B register, not a value read indirectly
running index into the delay line.
from sum memory). The filtering would be either Delay line: Result «- DM[Y + X]; DM[Y + X] <
word_from_modifier; Y <- Y + 1; if (Y > Z) Y <
a comb or all-pass reverberation section, depending
on the values of the coefficients. This implements
0. Here, X is the base address and Y is the running
an all-pass resonator if the feedforward termindex. (MO) In delay line mode, Z was the 16-bit length
is between 0 and — 1, and the feedback term of (Ml)
theisdelay line. A 20-bit word received from the
between 0 and +1. If MO is zero and Ml is non-zero,
modifier addressing this delay unit was put into the
then it implements a comb resonator. If MO and nextMl slot in the delay line. It was retrieved and sent
are both zero, the unit acts as a simple one-shotback to the modifier Z+3 passes later.
delay line. Table look-up mode: Y 4- value_from_modifier
Modifier A and B inputs could be set to read from
right-shifted by the least-significant 4 bits of Z,
this-pass sum memory if they followed pipelining bringing in zeros; result DM[Y + X]. In this mode,
constraints. Each modifier had the option to replace
the modifier sent an index and the delay unit sent
the sum memory location it addressed, ratherback thanthe indexed delay memory value. Because the
add to it. Finally, modifier multiplications index
could was typically generated in fractional form,

Loy 63

This content downloaded from


193.206.22.154 on Wed, 12 Oct 2022 14:42:28 UTC
All use subject to https://about.jstor.org/terms
right-shifting by Z bits was needed to reduce the its elegance provided it with some algorithmic flex
extent to the correct range. The rightmost 16 bits ibility, there were many synthesis operations of
of the result were added to the base address X to interest that lay outside the bounds of its design.
address delay memory. Tables ranged in length fromFor example, Fourier-based techniques were not
32 words to 65,536 words in powers of 2. The sampleavailable. The disparity in computation time be
in the addressed memory location was returned totween what worked on the Box and what did not
the modifier three passes later. put a premium on finding clever ways to make
Table look-up with rounding mode: Y <— new techniques fit in its architecture,- these efforts
value_from_modifier right-shifted by the least were themselves often time-consuming and not
significant 4 bits of Z; if (MS bit shifted out of Y = always productive. The Box facilitated a great deal
1) X X + 1; result DM[Y + X]. If rounding was of musical composition (cf. Loy 2013), and it was an
specified, the address after shifting was incrementedimportant proof-of-concept for the futures of digital
by one if the most significant bit shifted out was one.music that we now enjoy.
Rounding, which is precise to the least significant
bit, gives 3 dB better resolution than straight table
Interview with Samson
look-up. However, the index might be rounded off
the end of the table if one were not careful. It was
Because no device like the Samson Box preexisted
best to claim one more delay memory location at
it, Samson had first to identify the collection of
the top of the table and stick in some appropriate
value. relevant signal-processing techniques and psychoa
coustic principles to incorporate, then reduce this
knowledge into a digital implementation using
then-state-of-the-art discrete transistor-to-transistor
Conclusion
logic. So although the capabilities of the finished
product dazzled, Samson's design process was, it
The Samson Box provided a large and heteroge
seems to me, the real tour de force. To get insight
neous repertoire of signal-processing operations
into his process, I conducted an email interview
in an elegant architecture. The modifiers imple
with Pete Samson in 2011 about his design strategy
mented an expansive collection of signal-processing
for the Box.
instructions from a compact set of operators. The
generators, each of which contained an oscilla
Gareth Loy: Both then and now it seems to me
tor and an envelope generator, could be coupled
that the design of the Box was a virtuoso perfor
through sum memory to perform additive synthesis.
mance, given that it involved weaving together
Sum memory also provided generators with flexible
deep insights from electrical engineering, computer
topologies for multi-modulator and multi-carrier FM
science, physics of music, digital signal processing,
synthesis. Subtractive synthesis could be performed
psychoacoustics, combinatorics, and other subjects.
by generators producing canonical waveformsSomehow,
in you foresaw the confluence of all these
conjunction with modifiers set to act as filters.
technological streams, and managed to fashion a
The multi-port table look-up memory supported design from them that created this unique instru
a wide variety of reverberation systems as well ment.
as I asked Andy Moorer how it came about, and
waveshaping and Karplus-Strong synthesis. The he said, "Really, Pete did all the design—we just
Box could be used for audio mixing and musique made one minor tweak." So tell me: What was your
concrete techniques through its DMA interface. preparation? How did the idea first surface? How
Design of its arithmetic operations was informed
did it evolve? How did this lead to the opportunity
by psychoacoustic research. The command update offered by CCRMA to commission the Samson Box
mechanism was able to reconfigure the Box quickly.
from you? What were the antecedents you drew
It excelled in real-time realization of precomputed
upon? How did you use them to think through to
scores and could also be used interactively. Although
your ultimate design?

64 Computer Music Journal

This content downloaded from


193.206.22.154 on Wed, 12 Oct 2022 14:42:28 UTC
All use subject to https://about.jstor.org/terms
Pete Samson: The basic idea, I think, was to Loy: What about this-pass/last-pass division of sum
read up on everything that might bear on the memory—the introduction of a unit sample delay
issues, talk with the people who would use the between input and output, and bank-switching
product, take the time to understand all this, them?
and let the ideas mix for a while. At the MIT AI
Samson: What conditioned me to think of dividing
Lab I had tried various synthesis algorithms in
sum memory into this-pass and last-pass sections
software (including real-time additive synthesis).
goes back to my attempts at two-dimensional image
This gave me a clear idea of the amount of real-time
processing on the TX-0 computer in the 1960-1961
computation needed, which was a lot. Also at the
era. There were two classes of image processing
AI Lab I played with some small commercial analog
algorithms to consider: those that read one copy
synthesizers. From them I got to see a wide variety
of the image and wrote an entirely new copy in a
of signal-processing functions, and also learned
separate memory space, and those that modified
the drawbacks of analog implementations: drift,
the image in place. The latter class was favored
unpredictability, unrepeatability, noise. . . . Then
then because memory was so expensive,- one copy
in preparation for designing the digital synthesizer,
of the image of course takes half the space of two.
I surveyed the algorithms in use at various places.
However, I didn't like modifying the image in place,
Also I read up on digital speech synthesis. I talked
that kind of algorithm is mathematically harder to
to people at Stanford and read their research papers;
I visited Bell Labs. Then features of the architecture
analyze, and seems somehow unbalanced because
the particular cells that happen to be processed
crystallized out of the solution.
first affect the processing of the next cells, but not
Loy: But sum memory was, it seems to me, your vice versa. So when I started thinking about the
invention? sum memory, having two copies (one to read and
the other to write) seemed cleaner to me. Also, my
Samson: Well, the obvious implementation of problem was not so much the size of memory; that
an interconnecting memory was simply a patch was a factor, but not the primary one. The big issue
was bandwidth. The sum memory is the center
panel, where a location is written by one processing
element and read by others. This is a natural idea and
of the synthesizer; every operation reads or writes
easy to implement; adding sources together could it; the rate of memory accesses governs the power
be done by using mixing or combining elements of the whole machine. And dividing sum memory
programmatically allotted to the task. I didn't do into
it this-pass and last-pass halves meant the two
halves could be cycled simultaneously, and double
that way. One reason is that algorithms like additive
synthesis performed (as the name implies) a lot of the overall bandwidth.
additions. Assuming a mixer combined two inputs
Loy: And what about processing elements, particu
into one, additive synthesis would require about
larly the division into generators and modifiers?
as many mixers as oscillators. And the number of
sum memory locations would need to be large Samson:
as It became clear that additive synthesis
well. In fact, it took considerably less hardware to
had a lot of generality but took a lot of processing,
have the memory do the summing. The other major following a fixed series of steps very frequently. This
reason was by analogy, on the one hand with the pointed to a specific block of hardware dedicated to
architecture of an audio console (whose key conceptthat purpose. It included built-in sine and exponen
is the mixing bus), and on the other hand withtial tables, based on my sense that the exponentially
acoustic synthesis, i.e., sounds combining within
decaying sinusoid, e?+iy, is the basic element of
vibrating bodies or in the air. From this viewpoint,
physical sound. The Box also included a fair amount
mixing of sounds is fundamental in nature. (I learned
of fancy hardware to perform the Winham-Stieglitz
about mixing buses and patch panels during my stint
band-limited buzz algorithm [the band-limited pulse
at the MIT radio station.) train shown in the gray rectangle in Figure 3]; I had a

Loy 65

This content downloaded from


193.206.22.154 on Wed, 12 Oct 2022 14:42:28 UTC
All use subject to https://about.jstor.org/terms
horror of non-band-limited waveforms, because it is waveforms and envelopes, and also waveshaping).
so hard to understand them intuitively and to predict Because the all-pass reverberator took two multipli
what will happen when they are processed. Of course cations, it was natural to hook the delay memory
linear waveforms and envelopes were provided be in through the modifiers. Separate delay units were
cause they were trivial, given the more general needed to control the delay memory (for memory
algorithm already implemented. Frequency modula cycling) and to address it, since all the modifier
tion was an obvious requirement (and a serious hit parameters were used up in the all-pass reverb
on sum memory bandwidth). At Stanford's request, a mode.
frequency ramp term was also added to the hardware.
Loy: What was the model for the interface to the
[This is the "tweak" Moorer mentioned above.] The
controlling computer?
term "oscillator" wasn't sufficient, because the pro
cessing in the synthesizer contained envelope calcu Samson: Systems Concepts had experience devel
lations as well, so I called the elements "generators." oping controllers and data channels for various
high-speed computer peripherals. These typically
Loy: And what about modifiers?
implemented separate command and data streams;
Samson: Other algorithms needed a different kind the term "command" actually was taken from IBM
of processing element, that performed (typically) a data channels. So a command stream to the synthe
couple of multiplications and some other simple sizer was a version of this. Generally, each command
arithmetic on running data (to be fetched from sum alters one parameter in the synthesizer (there are
memory) and parameters. This general framework various special features that expand on this idea);
encompassed filtering, mixing, balanced and AM and there is the linger command to act as a floodgate
modulation, pseudo-random-number generation, which opens at a specific time to allow a burst of
all-pass reverberation (when coupled to a delay line), commands to be done. The number of commands
and various other signal-processing tweaks (some that could be buffered in the synthesizer for rapid
adopted from the analog world). Generally, I tried to execution was limited (28 commands) because of
put in some way of accomplishing every function I RAM chip limits at the time. This, and the fact that
remembered having seen, subject to the limitation all commands had to be serialized by the host com
of two coefficients, two inputs, two multiplications, puter before being passed to the synthesizer, proved
and one output. The resulting architecture was in practice to be a bottleneck in the architecture.
fundamentally different from that of the generators, I was optimistic to think that 20-odd updates per
and I used the general term modifiers. sample period would be enough, and that the host
Having two separate calculating engines, each computer could keep up in general.
organized around a specific category of task, gives
Loy: Did the per-sample I/O capability come from
more overall processing power than just one engine, the same idea?
and uses less hardware than two copies of an engine
that could do both kinds of algorithms. Moreover, Samson: Given the data channel analogy, read
it implies a second two-way split of sum memory data and write-data streams became obvious. They
(generator side and modifier side), which again provide what is now called sampling, but also for
doubles its overall bandwidth. subsequent computer processing and for multi
pass synthesizer operation. DACs were required,
Loy: Why did you couple delay memory through
modifiers? and also provision for ADCs [analog-to-digital
converters], which I think were never actually
added to the synthesizer. These data streams had
Samson: Here is a third class of algorithm that uses
a large separate chunk of memory. The primary use to get to or from sum memory, and it proved
is for delay algorithms (e.g., echo and reverb), but
convenient to hook them in through the generator
hardware.
table look-up was an obvious extension (specialized

66 Computer Music Journal

This content downloaded from


193.206.22.154 on Wed, 12 Oct 2022 14:42:28 UTC
All use subject to https://about.jstor.org/terms
Loy: How did you go about choosing word sizes and Kahrs, M. 2002. "Digital Audio System Architecture."
data paths? In M. Kahrs and K. Brandenberg, eds. Applications of
Digital Signal Processing to Audio and Acoustics. New
Samson: For discussion of the necessary word sizes, York: Kluwer, pp. 195-234.
data rates, etc., see my chapter in John Strawn's Knuth, D. 1997. The Art of Computer Programming, Vol.
book (Samson 1985). It goes into lots of details. II Seminumerical Algorithms. Reading, Massachusetts:
Addison-Wesley.
Loy, D. G. 1977. "LRNSAM—Systems Concepts Digital
Conclusion Synthesizer Operations Manual and Tutorial." Internal
Report Stan-M-6. Stanford, California: Stanford Uni
versity, Department of Music, Center for Computer
In the companion article (Loy 2013) I suggest that the Research in Music and Acoustics.
Samson Box provided the most powerful solution to Loy, D. G. 1981. "Notes on the Implementation of
real-time digital audio computation of its era, and MUSBOX, a Compiler for the Systems Concepts Digital
enabled enormous strides in computer music. This Synthesizer." Computer Music Journal 5( 1): 13—33.
opinion is supported by the foregoing architectural Loy, D. G. 2013. "Life and Times of the Samson Box."
review and commentary by Pete Samson. Computer Music Journal 37(3):26—48.
That this multifaceted architecture was con Moorer, J. A. 1989. "Synthesizers I Have Known and
ceived single-handedly by Samson and realized Loved." to a In C. Roads, ed. The Music Machine. Cam
bridge, Massachusetts: MIT Press, pp. 589-597.
substantial degree of perfection within a mere five
Nelson, A. J. 2005. "Cacophony or Harmony? Multivocal
years from 1972 when Samson first began designing
Logics and Technology Licensing by the Stanford
it until 1977 when he delivered it to Stanford stands
University Department of Music." Industrial and
as a testament to his creative vision and persever Corporate Change 14( 1 ):93—118.
ance. It is truly remarkable that he got so very much
Samson, R 1974. "Systems Concepts Digital Synthesizer
right and so little wrong, and managed to integrate Specifications." San Francisco, California: Systems
so many disparate functions together in a common Concepts. Rev. 24 November 1974.
architectural framework. The Box worked straightSamson, P. 1980. "A General-Purpose Digital Synthesizer."
away when it was delivered (save for a few minor Journal of the Audio Engineering Society 28(3): 106-113.
bugs) and was the synthesis workhorse at CCRMA Samson, P. 1985. "Architectural Issues in the Design
for over a decade. It both foreshadowed and helped of the Systems Concepts Digital Synthesizer." In J.
Strawn, ed. Digital Audio Engineering: An Anthology.
usher in the new regime of digital audio synthesis
Los Altos, California: William Kaufmann, pp. 61-94.
that continues to this day, and its architecture has
Schottstaedt, W. G. 1985. "The Simulation of Natural
remained relevant and interesting long after its Instrument Tones Using Frequency Modulation with a
retirement in 1993.
Complex Modulating Wave." In C. Roads and J. Strawn,
eds. Foundations of Computer Music. Cambridge, Mas
sachusetts: MIT Press, pp. 54-64. Available online at
References
https://ccrma.stanford.edu/software/snd/ snd/fm.html.
Accessed April 2013.
Chowning, J. 1973. "The Synthesis of Complex Audio Schottstaedt, W. G., and M. McNabb. 2012. "Samson Box
Spectra by Means of Frequency Modulation." Journal of Emulation Software." Available online at ftp://ccrma
the Audio Engineering Society 21:526-534. -ftp.Stanford.edu/pub/Lisp/sam.c. Accessed April 2013.
Chowning, J. 1981. John Chowning. Mainz: Wergo WER Schroeder, M.R. 1962. "Natural Sounding Artificial
2012-50, compact disc. Reverberation." Journal of the Audio Engineering
Gosper, W. 1975. "Numerical Experiments with the Society 10(3):219-223.
Spectral Test." Technical report STAN-CS-75-490. Winham, G., and Steiglitz, K. 1970. "Input Generators
Stanford, California: Stanford University, Computer for Digital Sound Synthesis." Journal of the Acoustic
Science Department. Society of America 47(2):665-666.

Loy 67

This content downloaded from


193.206.22.154 on Wed, 12 Oct 2022 14:42:28 UTC
All use subject to https://about.jstor.org/terms

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy