I am into modular synthesizers where I have built a number of analog modules. However, I want to port more and more functionality into the digital realm for reasons of physical size, cost and flexibility/configurability. I’ve worked may way up the different 8-b and 16-b PIC microcontrollers and have done a fair amount of C and ASM programming over the last year or so.
As I now need an automatic gain controlled noise source, the range of 16-b PIC microcontrollers don’t offer the bandwidth I need in a general sense (enough calculations for audio output at 48 ksps or better yet 100 ksps). Here’s an overview of what I am planning to implement:
The signal processing is expected to run on an interrupt-based routine at 100 kHz. The 1st order high-pass is an example for one of the various reasons why I need more horse power: As the sampling is done at 100 kHz, I built the high-pass filter in the past on a dsPIC33 with 24-b wide registers in order to cope with the several order-of-magnitude differing coefficients. This requires a fair amount of multiplications. Integrating more filtering tasks as shown in the diagram just won’t be possible.
The envelope follower will be a combination of a rectifier and a third or fourth order low-pass filter with a cutoff frequency around 200 Hz.
I’ve looked at 32-b offerings by Microchip and now have to choose either to go with the PIC32 or the ATMEL line of products, the former using MIPS architecture, the latter Cortex. I’ve gotten used to building boards for the dsPIC33, using the PICKit 4 programmer, etc. so I am quite familiar now with this environment. Should I take the plunge and switch to the Cortex instruction set code? ARM is widely used and it seems to make sense to get used to that. But then I have to start pretty much from scratch.
I do not want to start a debate here such as what’s the right sampling rate, judging the audio quality, C vs. ASM, etc. I want to focus an answers from designers that have built similar applications. What do I need to look out for in a microcontroller and is it worth the effort to switch to Cortex considering the fact that I am used to PIC architecture (not MIPS though)?
One more point: The two specific microcontrollers I had in mind are the ATSAM4LC2B (Cortex architecture) and one out of the PIC32MK/GP series. On the PIC32 side, I could just design a simple board as I am familiar with the design for the peripherals. On the ATMEL side, I could get up to speed with the ATSAME70 Xplained (Cortex-M7) evaluation board which comes actually at a very reasonable price.