The SID Homepage — Interview with Bob Yannes (Andreas Varga, August 1996)

author Andreas Varga (questions, some from King Fisher/Triad), answers by Bob Yannes
date 1996-08
article e-mail interview, August 1996; page 'Last updated Aug 30 1996'. Also printed as 'Progenitor of the SID' in disC=overy issue 2 (1996-10-01), which is how Newman cites it
created 2026-08-30 · updated 2026-08-30

andreas-varga's e-mail interview with bob-yannes, the designer of the sid, done in August 1996 for the sid-homepage; some questions came from King Fisher of Triad. The first half is about intentions and regrets, the second half is Yannes's own description of the chip's internals — oscillator, waveform generation, envelope generator, sync and ring modulation, filter, volume D/A and the readback registers. It is the primary source behind the Yannes quotes in s-newman-driving-the-sid-chip (Newman cites its disC=overy reprint).

Key claims#

Intentions and history

  • Yannes was "an electronic music hobbyist" before joining MOS Technology, hired partly because "my knowledge of music synthesis was deemed valuable for future MOS/Commodore products"; he designed the SID as "a single-chip synthesizer voice which hopefully would find its way into polyphonic/polytimbral synthesizers". He also designed the Commodore 64 itself (commodore-64).
  • MOS was then a merchant chip house; his plan was to sell the SID to synthesizer makers — Sequential Circuits was once interested "but nothing ever came of it"; C64 demand consumed all production and he had left Commodore before chips were freely available, so he "never had the opportunity to improve the fidelity of the chip". The SID had, in his view, little impact on the synthesizer industry.
  • In 1996 he had "not thought much about SID in the last 15 years" and learned of SIDPLAY and PlaySID through Varga's site; he had not heard Hubbard, Galway, Follin or Tel; he "did design the SID chip with enough resolution to produce high-quality music" but never got the signal-to-noise ratio he wanted.
  • Why so complex: the sound chips on the market, "including those in the Atari computers, were primitive and obviously had been designed by people who knew nothing about music".
  • The constraint "wasn't budget, it was development time and chip size": the SID/VIC II/C64 schedule was "incredibly tight (some would say impossibly tight)". With more time he would have built "a proper MOS op-amp", eliminating the signal leakage heard when a voice's volume should be zero (poor signal-to-noise; "it could be dealt with by stopping the oscillator") and greatly improving the filter, "particularly in achieving high resonance". A planned exponential look-up table for direct equal-tempered pitch entry was dropped — "too much silicon and it was easy enough to do in software anyway". After he left, nobody at Commodore "knew enough about music synthesis to do much more than improve the yield".
  • Ensoniq: the SID was his "first attempt at a phase-accumulating oscillator, which is the heart of all wavetable synthesis systems"; because SID's oscillators were not multiplexed they "took up a lot of chip area, constraining the number of voices"; Ensoniq chips multiplex to get "at least 32 voices per chip" but otherwise owe more to the Mountain Computer card for the Apple II (the DOC I of the Mirage and ESQ-1 was modelled on it).
  • Anecdote: Japanese C64 games were coded to a spec sheet he had written "before SID prototypes even existed" — "the specs were not accurate" — and shipped with out-of-tune sounds and filter settings that gave "only quiet, muffled sound" (c64-programmers-reference-guide).

Architecture — "pretty brute-force, I didn't have time to be elegant"

  • Per voice: Oscillator → Waveform Generator → Waveform Selector → Waveform D/A → multiplying D/A (amplitude) driven by the Envelope Generator; each voice's analog output goes through the multimode filter or bypasses it; a final multiplying D/A is the master volume.
  • Oscillator: a 24-bit phase accumulator, the lower 16 bits programmable for pitch; no wavetable on chip, so the accumulator feeds the D/A directly through the selector.
  • Sawtooth: the upper 12 accumulator bits into the 12-bit waveform D/A. Triangle: the accumulator MSB inverts the next 11 bits through XOR gates; those 11 bits are left-shifted (MSB thrown away) — "the resolution of the triangle waveform was half that of the sawtooth, but the amplitude and frequency were the same". Pulse: the upper 12 bits into a 12-bit digital comparator whose single output feeds all 12 D/A bits. Noise: a 23-bit pseudo-random shift register with feedback "clocked by one of the intermediate bits of the accumulator to keep the frequency content of the noise waveform relatively the same as the pitched waveforms"; its upper 12 bits go to the D/A.
  • Combined waveforms: the selector's multiplexers "were single transistors and did not provide a 'lock-out', allowing combinations of the waveforms to be selected. The combination was actually a logical ANDing of the bits of each waveform, which produced unpredictable results, so I didn't encourage this, especially since it could lock up the pseudo-random sequence generator by filling it with zeroes." (ring-modulation-and-sync for the noise lock-up, sid for the combinations)
  • Envelope generator (adsr-envelope): "simply an 8-bit up/down counter which, when triggered by the Gate bit, counted from 0 to 255 at the Attack rate, from 255 down to the programmed Sustain value at the Decay rate, remained at the Sustain value until the Gate bit was cleared then counted down from the Sustain value to 0 at the Release rate." Rates come from a programmable frequency divider ("either 12 or 16 bits") loaded through "a small look-up table" that maps the 16 register values to divider counts — the compromise that fits "a wide range of rates into 4 bits, allowing the ADSR to be defined in two bytes instead of eight". The look-up table's numbers "were arrived at subjectively by setting up typical patches on a Sequential Circuits Pro-1 and measuring the envelope times by ear (which is why the available rates seem strange)!" A second look-up table "would sequentially divide the clock to the Envelope Generator by two at specific counts in the Decay and Release cycles", a piece-wise linear approximation of an exponential ("I was particularly happy how well this worked"); the attack is linear. Sustain: a digital comparator compares the counter's upper four bits with the sustain value and stops the envelope clock "when the counter counted down to the Sustain value" — 16 linear levels in steps of 16. The envelope "would track the Sustain level if it was changed to a lower value during the Sustain portion of the envelope, however, it would not count UP if the Sustain level were set higher." (The interview describes this design; it does not describe the re-gating lock-up that hard-restart works around.)
  • Sync and ring modulation: hard sync clears an oscillator's accumulator "based on the accumulator MSB of the previous oscillator"; ring modulation substitutes the previous oscillator's accumulator MSB for the voice's own MSB in the triangle generator's XOR — "That is why the triangle waveform must be selected to use Ring Modulation."
  • Filter (filter-programming): "a classic multi-mode (state variable) VCF design"; with no variable-transconductance amplifier possible in NMOS, FETs act as voltage-controlled resistors for the cutoff, driven by an 11-bit D/A ("actually a 12-bit D/A, but the LSB had no audible affect so I disconnected it!"); resonance is "a 4-bit weighted resistor ladder" feeding output back to input; the state-variable design gives simultaneous low-, band- and high-pass, selected by analog switches, notch = high-pass + low-pass together. "The filter is the worst part of SID because I could not create high-gain op-amps in NMOS, which were essential to a resonant filter. In addition, the resistance of the FETs varied considerably with processing, so different lots of SID chips had different cutoff frequency characteristics. I knew it wouldn't work very well, but it was better than nothing and I didn't have time to make it better."
  • Volume and samples (chip-samples): the final amplifier is a 4-bit multiplying D/A; "By stopping an Oscillator, it was possible to apply a DC voltage to this D/A. Audio could then be created by having the microprocessor write the Final Volume register in real-time. Game programs often used this method to synthesize speech or play 'sampled' sounds." An external audio input can be mixed at the final amp or sent through the filter.
  • OSC3/ENV3 readback: "probably never used since they could easily be simulated in software without having to give up a voice"; intended for novices (read the value, write it to a frequency register for vibrato or filter sweeps); an analog switch mutes voice 3 so the modulator is not heard.

Practical takeaways#

  • The odd ADSR rate steps are ear-measured Pro-1 patches, not a formula — which is why the datasheet's Table 2 is the only reliable reference (adsr-envelope).
  • Decay and release are exponential by successive clock halving; attack is linear; sustain is quantised to 16 levels and can only be lowered, not raised, mid-note — three facts that explain how SID envelopes feel and why per-note sustain tricks work one way only.
  • Zero-volume leakage is cured "by stopping the oscillator" — the test bit / $09 first-frame convention has a reason in the silicon.
  • Ring modulation needs triangle because it is implemented inside the triangle's XOR; combined waveforms are an AND of bits and can zero the noise register — set the test bit to recover (ring-modulation-and-sync).
  • Filter cutoff depends on FET process variation "lot to lot" — the root of "every SID sounds different" (filter-programming).
  • Volume-register samples are a designed-in side effect of the 4-bit final D/A, which Yannes says games "often used".

Notable quotes#

"It's pretty brute-force, I didn't have time to be elegant."

"The actual numbers in the look-up table were arrived at subjectively by setting up typical patches on a Sequential Circuits Pro-1 and measuring the envelope times by ear (which is why the available rates seem strange)!"

"The filter is the worst part of SID because I could not create high-gain op-amps in NMOS."

Relevance to the wiki#

The designer's own account of the SID, first-rank for sid, bob-yannes, adsr-envelope, filter-programming, ring-modulation-and-sync and the sample trick; also the origin of the widely quoted "primitive … designed by people who knew nothing about music" and "I knew it wouldn't work very well" lines.

Pages touched#

bob-yannes · sid · andreas-varga · sid-homepage · adsr-envelope · hard-restart · filter-programming · ring-modulation-and-sync · chip-samples · c64-programmers-reference-guide · commodore-64 · chiptune

source file wiki/summaries/s-sidmusic-yannes-interview.md · graph