Red Panda started in 2009 with a list of 60 pedals I wanted to make, with a granular synthesis pedal on top of the list. I ended up doing a bitcrusher and octave/suboctave generator first, but started working on a granular delay pedal in April, 2010.
Notes in italic are from my work log.
My first two pedals used the Line 6 ToneCore DSP Development Kit, which let you program custom modules to plug into the Line 6 ToneCore dock. The granular pedal would be the Red Panda hardware design, and the first step was to choose a DSP chip. I bought some development boards and wrote a simple real-time granular synth on five DSP chips: DSP56K, SHARC, SigmaDSP, ARM Cortex-M4, and Spin FV-1. The DSP56K was strictly for reference; it was used by the ToneCore DSP Development Kit, but already obsolete. The ARM Cortex-M4 was a new microcontroller with some DSP instructions. The Spin FV-1 is a simple DSP chip designed for reverb and delay effects. The Analog Devices SigmaDSP is a single chip audio DSP with integrated A/D and D/A converters and a graphical programming language. I did not seriously consider the SHARC, because with the Cortex-M4 it was clear that ARM chips would be replacing specialized DSP chips on the low end. So it was between the ARM chip and Spin FV-1.
2010.04.29 - The Spin FV-1 is too damn slow for a granular synthesis pedal.
The first thing I realized was that the Spin FV-1 was too slow for granular synthesis. So I simplified it down to a delay with granular pitch shifting, random delay, and time stretching. It took a lot of tricks to squeeze interesting effects into 128 assembly language instructions, but it was fun. I started programming in 6502 assembly when I was 10 years old, but had spent the previous 15 years doing C++ and Java programming.
Figuring out how to do complex signal processing with a simple assembly language instruction set was a nice break from my 60+ hour per week software engineering job. At this point Red Panda was a fun hobby, not even a side business. So after two months of experiments I settled on the FV-1 and tried to see how far I could push it.
2010.06.28 - I will do what I can with the FV-1, even though it isn't much. Started a granular delay pedal tonight. Limitations force creativity.
The Spin FV-1 was interesting, because it was designed by Keith Barr (MXR, Alesis) and had a lot of similarities to the custom DSP chips used in the Alesis reverbs. In 2010, the only pedal I could find that used the FV-1 was the Electro-Harmonix Holy Stain. The Earthquaker Devices Dispatch Master came out a few months before the Particle, and the Rainbow Machine came out a few months after the Particle. In the years that followed, the FV-1 was the engine for the boutique pedal industry’s shift to DSP-based effects.
A solo pedal builder doing DSP was rare in 2010, and it was harder for small companies to source SHARC chips and CODECs. In retrospect, I sometimes wish that I would have used the ARM chip back in 2010, but the FV-1 forced some restraint and simplicity that contributed to the Particle’s success.
The reasons I ultimately chose the FV-1 over the ARM chip were practical. It allowed me to spend my limited free time on DSP code, not all of the glue code needed to build a more complex DSP-based product. It had a simple yet powerful instruction set designed for audio processing. It was made by a small company that was easy and enjoyable to work with. It was easy to hand solder, so I could quickly iterate on prototypes and hand-build pedals in small batches. Finally - and most importantly - it was fun to figure out clever tricks to get the FV-1 to do granular processing.
2010.07.04 - Granular delay needs some tweaks, but it's gonna kick ass.
I spent the rest of summer 2010 tweaking the controls and prototyping different modes. The FV-1 only has 3 pot inputs, so the blend and feedback were analog. In August, 2010 I added the threshold-triggered freeze. Sometime around September, I came up with the name Particle.
2010.09.27 - Tweaked LFO mode of Red Panda Particle (my granular delay).
The Spin FV-1 had a very simple assembler (SpinASM) that I ran in Parallels Desktop on my MacBook Pro, then downloaded the code to the pedal using a PICkit 2. I generated the eight FV-1 assembly language programs from a single source file using the m4 macro processor. I wrote a lint-like program for some simple static code analysis and used Python for prototyping and simulation.
I did the first prototype PCB in October 2010. It was followed by a second prototype in November and I finished the third prototype board layout on December 30, 2010. My full-time job was really intense at the time, with lots of last-minute travel to Peoria for a high-profile project that was not going well and 70-80 hour weeks.
011.01.09 - Figured out reverse delay on the FV-1.
I built the first prototype pedal in January, 2011. That month I also figured out how to do reverse delay on the FV-1. The FV-1 implements modulo delay line addressing using a counter that decrements by 1 each sample. That is nice, because for simple delay effects you just set the delay length and don’t have to work about managing the pointer and doing modulo addressing. To play the delay line in reverse, you can manually update the address pointer and add 2 each sample, negating the auto decrement. That simple idea came to me on one of my lunchtime walks around the industrial park where I worked. I tried it out the next weekend and it sounded great - different from a typical reverse delay because of the granular slicing, with each slice played forward or reverse based on probability.
The key features of the Particle were in place.
January 2011 prototype (left) and July 2011 Particle.
Read more in part 2.