I'd like to weigh in here as well (Disclaimer: I'm also very biased). I'd also like to point out that Mark's XMOS based projects are very impressive and I have a lot of respect for the work he's done and what he's offered to the community here. This is simply my opinion on how hobbyists can best get started with designing digital effects.
The technology landscape for embedded audio processing has been changing a lot in recent years. I work as an accelerated computing engineer so I deal with all these at my day job.
Available Technologies-
FPGAs - the highest performance solution for embedded processing. VERY difficult to program. Development tools are proprietary and expensive. This is effectively the same skillset as designing customer computer chips. It's takes professionals to do it right, out of the reach of hobbyists for the most part.
-
DSPs - chips like Sharc, XMOS, etc. High clock rates with parallel hardware designed for high math computation rates. Very difficult to program well, requires a lot of knowledge about the underlying hardware, but not out of reach for hobbyists. Software frameworks designed to make this easier tend to be very proprietary and not standardized. Either way, each time you change chips (say from a Sharc to an XMOS) you need to learn a lot all over again.
-
Microprocessors - typically Cortex-A. These are used in things like the Raspberry Pi. Very fast (> 1Ghz), multi-core (2 to 8 cores). Need an OS (e.g. Linux) in order to be easy to use. Low-latency in audio applications is a problem. If used bare-metal or with an RTOS for low-latency they become very difficult to setup. Acceleration via NEON, very industry standard.
-
Microcontrollers - typically Cortex-M. These things are improving exponentially due to IoT adoption. Some higher performance variants include hardware floating-point, built-in hardware accelerated DSP processing (like IIR, FIR, FFT, etc.) Clock speeds are around 180 MHz for M4F and up to 600 MHz for M7. No need for an OS, super-easy to program if there is a good framework like Arduino supporting it. The DSP acceleration is via the ARM CMSIS library. ARM has become the de-facto standard so it's a great skill to have it.
In a nutshell, tools to program FPGAs with C/C++ are getting better and prices are coming down making them more accessible to the hobbyist but not quite there yet. Cortex A and Cortex M are getting more and more powerful so fast, basically dedicated DSPs chips fill a smaller and smaller niche market and are getting squeezed out and FPGAs push down from the top, and Cortex push up from the bottom.
Right now, fast cortex M4Fs and M7s are capable of doing a lot of real-time audio processing, especially if you're interested in designing your own effects like modulation, EQ, tone circuits etc. and aren't trying to get Axe FX like tube modeling.
As far as being a hobbyist who wants to get into digital effects and modeling, VST is also an option. I do write VSTs but the problem is learning the framework and making the GUI. JUCE is a framework for making both the audio part (VST) and the GUI part all in one. It's both awesome and awful because it makes GUI/VST programming far easier, but is way more difficult than than using a hardware based solution and debugging GUIs is always a nightmare.
For beginners/intermediates who want to get into creating digital pedals IMHO the best solution is the Arduino Teensy hardware using it's Audio library and avoid working with DSP based hardware. Teensy is a tiny-Arduino compatible board that has some decent horsepower unlike regular Arduino boards based on ATMega, etc. The Teensy 3.6 is 180 MHz Cortex-M4F with hardware floating point and some hardware accelerated DSP instructions for things like filtering, FFTs, sine/cosine, etc.
Here's why I recommend the Arduino Teensy with Audio library approach for hobbyists:
- the Arduino community is massive. The development tools are top-notch. There are countless tutorials for all the built in libraries for I2S, SPI, I2C, GPIO, etc.
- the Teensy product has been around for many years and is a very successful hardware platform. It's dirt cheap and isn't at risk of disappearing on you anytime soon. Can the same be said of all these small-volume hardware platform manufacturers?
- You program in C and or C++ with the help of Arduino libraries. You don't have to learn some one-off software framework, or traditional DSP programming which can be very difficult. Yet, you still have access to hardward accelerated functions from the free
ARM Keil CMSIS library already included with Arduino Teensy.
- The Audio library added for Teensy makes designing audio effects and pedals stupid-easy (I might make another post on this rather than put in in this one). It handles all the difficult bits regarding transferring and buffering audio blocks, and does it in the background with DMA so it has virtually zero load on the processor.
- (here comes the bias) My open-source
BALibrary extensions to Teensy Audio add even more code for abstracting physical controls like buttons and knobs, working with external memory for long delays, as well as adding a few more cool effects.
- my
TGA Pro board takes care of all the difficult hardware design stuff like guitar preamp, working with proper low-noise 9V analog voltages, external SRAM memory, etc.
- Upgrade path. Each generation Teensy uses faster and faster ARM processors so your effects will run on newer hardware with little modification. The 4th generation Teensy due out next year will be 600 MHz Cortex M7s. The case for using traditional DSPs chips like Sharc, XMOS, etc. gets lower each year as ARM processors are on an explosive growth path.
