DSP Heros: Miller Puckette

The work of Miller Puckette has been a big influence on my own algorithm designs. The first reverb I ever programmed was a minimal feedback delay network, based around a design Puckette and John Stautner published in the Computer Music Journal in 1982. Michael Gerzon had originally described the theory behind feedback delay networks in 1971/1972, but in a British journal that saw almost no distribution within the United States, so Puckette’s work was a case of convergent evolution. The Puckette reverb had great spatial characteristics, and used random delay line modulation for a fantastic long decay.

Outside of my admittedly nerdy world, Puckette is best known for inventing Max during his time at IRCAM, and for developing Pure Data as an open-source alternative to the Max/FTS hardware/software platform. The DSP code in Pure Data was later adapted to become the basis of MSP in Max/MSP. Pure Data is now making its appearance in all sorts of environments, from mobile audio to video games.

Miller Puckette’s website at UC San Diego is the home of his excellent tutorial, “Theory and Techniques of Electronic Music.” This provides an overview of basic DSP processes, and has an informative introduction to the use of unitary matrices in reverberators. Highly recommended to DSP programmers and all electronic musicians.

Salut, Miller Puckette!

The Reverb Beard

Something that I find rather curious, is that many of the reverb pioneers sported some seriously impressive beards. Christopher Moore has posted a few beard-heavy pictures on his website (http://www.sevenwoodsaudio.com). Here’s my favorite:

From left to right, you have Christopher Moore (Ursa Major reverbs, AKG ADR 68K), Anthony Agnello (Eventide, Princeton Digital), Wolfgang Schwarz (or Wolfgang Buchleitner, not sure of the name, but the Quantec guy) and David Grieisinger (designer of the Lexicon reverb algorithms). An amazing amount of reverb knowledge in one place, and rocking beards that rival ZZ Top, assuming that you put the 4 beards together to form one super beard like some sort of beard Voltron.

Another picture tosses in Barry Blesser (EMT-250), sporting a scholarly pipe and an even more scholarly beard:

Nowadays, I use the term “Reverb Beard” (or “Reverbskägg” in Swedish) to refer to people that develop reverberation algorithms, or to describe the state of people in the middle of the design process for reverb algorithms. Feel free to use this meme.

Note: I’ve tried to grow the reverb beard before, but it either comes out red, which makes me look like Kris Kringle in “Santa Claus is Coming To Town,” or greyish-red, which makes me look and feel old. So the “reverb beard” is more of a mental state.

EDIT: Chris Randall and Adam Schabtach, of Audio Damage fame, both pointed out to me that the mighty beards of the reverb pioneers were first mentioned on the Music Thing blog in 2004:

http://musicthing.blogspot.com/2004/12/beards-and-music-technology-pioneers.html

RIP Keith Barr

I just read on Matrixsynth that Keith Barr passed away. He was 61 years old.

Keith Barr was one of the co-founders of MXR, back in 1973. After MXR, he founded Alesis. Most recently, he designed the FV-1 chip for Spin Semiconductor, as well as many of the excellent quality reverb algorithms featured on that chip’s ROM and the Spin Semiconductor website. Barr was both a hardware and software developer, and made the transition from designing such classic analog pedals as the MXR Distortion+ and Phase 90 to the digital hardware used in such low cost yet high quality boxes as the Microverbs, Midiverbs, and Quadraverbs.

I was lucky enough to enter into an email exchange with Mr. Barr back in late 2008. In one of the emails, he gave a detailed description of the development process of the Midiverb:

You seem to be collecting stories about reverb development, so I have one for you. If its boring just skip over it. There’s about 6 things I’ve done in my life that I thought were really clever, but as it is with technology, either folks don’t understand or if they do they don’t care, and as technology marches on something better is surely to emerge. This is one of them that I always look back upon fondly:

MIDIVERB:

After playing with a monster machine I built with a bank of commercial SRAM and a 16 X 16 multiplier chip ($100 !), I found that there didn’t seem to be a secret to reverb, just the need for a few simple operations. I put the monster aside, along with my dreams of standing at the side of Lexicon, and returned home to the down and dirty music store… I decided instead of making the world’s coolest reverb, I’d make the world’s cheapest one. I never felt comfortable with the swells in the first place. The $100 multiplier offended me! Although I never really liked beer, I didn’t like Champaign either… As a poor kid, I had learned to make much from sticks and string.

At the time (early 80s) we had 32K EEPROMS and 64K DRAMs that were organized as 16K x 4. Also, HC logic was exploding, and I could get octal registers and both inverting and non-inverting octal tri-state buffers. I immediately put tape to Mylar on my rigged up light table, a discarded old window propped up by a single tube fluorescent light at the back, C-clamped to my white drafting table. God I loved that way of doing things. It was with your hands, earthy, soulful, it was art.

The DRAM required 2 addressing cycles, ROW and COLUMN, each 7 bits wide. I developed a system that fetched 2 bytes from the EEPROM and used the lower 7 bits of each as row and column addresses, after passing them through an 8 bit adder which summed the last values of ROW and COL with the new ones. –This eliminated an address counter, as the code simply expressed the next address relative to the previous address. Of course I had to allow for this in the code assembler (written on an 8 bit CPM machine), because the total of all address offsets needed to be just one more than the total address space, so that every time ‘around’ it would appear as though an address counter was actually present! As I recall, it was 2×4 Bit adders, 2 octal registers (w/ tri state outputs) and ½ a dual flip flop to store the carry in the math operations.

Then I had two left over bits to actually control the thing, and I decided to make one to control write operations and the other to control reads, so I had a DRAM write signal immediately! The final control bit was the magic: The write ops were to 1) write the accumulator (16b) to DRAM and add this value times 0.5 to the accumulator, or 2) write the accumulator to DRAM and add this value times -0.5 plus the result of the last read op to the accumulator. The read ops were to 1) read DRAM times 0.5 and load to the accumulator or read DRAM times 0.5 and add to the accumulator. That was it, just 4 instructions. As I recall, the hardware was 2x octal inverting buffers, 2x octal non-inverting buffers, 4x octal registers, 4x 4 bit adders, 4x 4 bit muxes and 4x 4 bit XOR gates to handle any overflow (saturation limiting).

It was a 128 op machine, which required 256 EEPROM accesses per sample cycle, right on the edge of what the EEPROM and adders could handle.

A 2 tick AP was possible, but I don’t have one here and I can’t remember all of the details, especially about the exact wiring of the second write op. Most coefficients would be 0.5 of course, and we had a few comments about how the reverbs had a ‘building’ effect as a result of APs with K=0.5. Oh well… They bought about 5,000 every month for about a year though, which gave a good start to my new company! –You could build a box for $100 and sell it to a dealer for $240 back then, and I don’t know from where, but $400 would leap out of pockets at guitar stores!

I wrote the assembler in assembly on the Z80 microcomputer (2 8” floppies, no HD) with a Soroc terminal, a wonderful old combination that had earlier produced commercial drum machine code and stored and edited the drum sounds from analog tapes with a home built ADC/DAC plug-in board. Actually that system produced a lot of stuff that never was built…

A later version of the engine was produced in a gate array, as I recall it was 2K gates! Still later versions of the product allowed the 8051 controller to generate LFOs that would update the code (SRAM replaces EEPROM) on a sample by sample basis to sweep delays, generate chorus and so forth. –Even did 4 point interpolation in the process!

END OF STORY

Thought you might want to add that to your collection,

Thanks,

Keith

In another email, Keith gave a brief description of the basic reverb topology he preferred to use in his later reverb designs:

I really like 2AP, delay, 2AP, delay, in a loop. I try to set the delay to somewhere a bit less than the sum of the 2 preceding AP delays, which are of course much longer than the initial APs (before the loop).

Yeah, the big loop is great; you inject input everywhere, but take it out in only two places… It just keeps comin’ new and fresh as the thing decays away. –If you’ve got the memory and processing!

Keith also went into a great deal of detail about his reverb designs on the Spin Semiconductor forum. I’d highly recommend reading all of his posts on that forum. In addition, Keith wrote a series of “Informal Notes” about the FV-1, that are invaluable for anyone interested in audio DSP design. One of my favorite parts of those notes is a drawing of the basic reverb topology that Keith arrived at after years of research:

In the drawing, you can see the 2 allpass, 1 delay “unit” that Keith used as his basic building block. The resulting sound would be quite “open,” with somewhat less initial echo density than the various Lexicon algorithms, but with a wonderful build over time. Combine such a structure with the modulated allpass delays that Keith often used, and you have a reverb that is ideal for ambient music. Artists such as Autechre, Aphex Twin, Labradford, and Roy Montgomery made heavy use of Alesis reverbs in constructing their ambient soundscapes.

Keith Barr’s pioneering work in reverb software and hardware design is one small aspect of the hugely productive life he led. He was a pioneer of audio effects, digital recording, affordable drum machines…the list can go on and on. An overview of Keith Barr’s life and accomplishments can be found at Mix Online. He will be missed. Rest in peace.

Stability through Time Variation: Ursa Major Space Station

In 1978, Christopher Moore’s company, Ursa Major, released the Ursa Major Space Station:

The Space Station, or SST-282, was described as a “reverberation effect.” It could apparently get reverb times of up to 3.5 seconds. This may not seem like a particularly long time by modern standards, but it was a huge achievement given the architecture that was used. In the SST-282, the reverb effect was obtained by using a single delay line, with 15 output taps from the delay buffer summed and used for feedback, and an additional 8 taps used to monitor the delay line. Multitap delay lines such as this, where several taps are summed and used for feedback, can quickly reach a high reflection density. However, they are notoriously unstable, with the maximum feedback gain being allowed under conventional circumstances being equal to 1 divided by the number out output taps. Yet Moore was able to achieve a significantly higher feedback gain. How?

Fortunately for geeks like myself, Moore extensively documented the process he used (which puts him in my DSP Hero list). The basic diagram of the algorithm is right there on the front panel, and Moore also described the algorithm in a patent. The key diagram from the patent:

The basic idea is that the taps that are summed and used for feedback are modulated. In the patent, Moore describes the clever modulation process used, as well as the tap spacings. By moving the feedback taps back and forth, Moore was able to get a much higher feedback gain before instability, which results in a longer decay time.

I built my own version of the SST-282 back in 2001 or so, using a program called SynthBuilder. I found that by modulating the taps as Moore describes in his patent, I was able to get about a 3X increase in feedback gain before things started getting too weird. Mind you, they got pretty weird anyway. The SST-282 simulation could get a reverb sound, but it sounded like it was full of spooky voices at high feedback settings. Very cool stuff.

Christopher Moore used a similar topology for the later Stargate reverb, but with a longer delay buffer. By doubling the delay buffer size, the maximum reverb time before instability is also doubled. Apparently the Stargate used a somewhat different randomization scheme as well – see below.

Moore has recently described some of the issues that the original SST-282 had:

…I had not been able to tame the various flaws I could hear in the Space Station. These included spectral smearing (due to the wandering feedback taps), modulation noise (delay taps were simply picked up and moved 62uS with no smoothing), and the inability to get a really distant sound due to the fact that the Audition Delay taps by design picked up the dry source as early reflections as well as the dense later reverberation.

Later Christopher Moore designs, such as the 8×32 Reverb, the AKG ADR-68K, and a number of algorithms designed for Kurzweil, made use of stable reverberation algorithms. However, the Space Station’s method of obtaining stability through time variation resulted in a distinctive sound that is still useful to this day. The original Space Station algorithm was turned into the SST-206, a compact hardware version of the SST-282, and Eventide has released a plugin that uses the SST algorithm.

UPDATE: Chris Moore, in a comment on this post, points out that the randomization scheme used in the Stargate was considerably different than the Space Station:

You are right about the 323 as far as you go. The StarGate has a wonderful sound (thanks go to Charles Andersion for great support during the long and arduous tuning process), due to the invention of a different way to change delays. Without giving away the store (because I may revisit the design one day and have some really cool ideas to tame those moving delays altogether). Anyway, the 323 has no pitch smearing, no Doppler shift, and almost no modulation noise. No free lunch: it has a tremolo sound.

I had always thought that the Stargate was similar to the Space Station, except for a larger amount of memory used – I stand corrected.

DSP Hero: Robert Bristow-Johnson

Super nerdy DSP content warning.

If you program audio DSP effects, you have undoubtedly heard of Robert Bristow-Johnson. If you haven’t heard of him, get yourself a copy of his Audio-EQ Cookbook. This is a succinct little document, that provides coefficient generation formulas for pretty much any second order filter building block you would ever need: lowpass, highpass, allpass, peak EQ, notch, shelving filters, etc. Today, I am implementing these formulas for my own code, but I know I’ve implemented them in at least 3 prior DSP environments. Really good stuff.

A quick Google search doesn’t turn up a ton on Robert Bristow-Johnson (or RBJ, as he is often abbreviated). He worked at Eventide, Fostex, Young Chang (Kurzweil), and Wave Mechanics. RBJ has a few AES papers as well, all of which are worth reading, covering topics ranging from PSOLA pitch shifting (made famous by AutoTune) to filter design to interpolation for oversampling.

If anyone out there knows RBJ, send him my thanks!