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 transitioned 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.
How Keith Barr Created the Midiverb
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 it’s boring just skip over it. There are 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 sure to emerge. This is one of them that I always look back upon fondly:
MAKING THE 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 (the 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 leftover bits actually to 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 due to 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,
Keith Barr’s Basic Reverb Topology
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.
Thank you Keith.
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.