Making An ARM Powered MIDI Synthesizer

What you see in the picture above is a hand-made 4-oscillator synthesizer with MIDI input, multi-mode filter and a handful of modulation options. It was built by [Matt], an AVR accustomed electronics enthusiast who made an exception to his habits for this project. The core of the platform is a DIP packaged 32-bit Cortex-M0 ARM processor (LPC1114), stuffed with ‘hand’ written assembly code and compiled C functions. With a 50MHz clock speed, the microcontroller can output samples at 250kHz on the 12bit DAC while being powered by 3 AA batteries.

Reading [Matt]’s write-up, we discover that the firmware he created uses 4 oscillators (sawtooth or pulse shape) together with a low frequency oscillator (triangle, ramp, square, random shapes). It also includes a 2-pole state-variable filter and the ability to adjust the attack-release envelopes (among others). The system takes MIDI commands from a connected device. We embedded videos of his creation in action after the break.

17 thoughts on “Making An ARM Powered MIDI Synthesizer

      1. I was more thinking of using the extra cycle for writing the code in C, instead of self-modifying assembly code, and adding a few more voices and/or effects.

      1. Wouldn’t it be easier to grab a 14 bit (or better) DAC ? Or, alternatively, generate a 14 bit * 44 kHz signal, and dither it in the last stage.

      2. Author here. Outputting single samples at 44kHz without any antialiasing/filtering results in “wobbly” effects at certain frequencies, as well as distortion due to harmonics above the Nyquist frequency.

        I considered two options: 1) use a higher sample rate, or 2) generate multiple samples per interrupt and filter/decimate them. Option 1 sounded “good enough” to me (and it was much less code) so I stuck with it.

  1. Matt, I am a novice with programming. I am a musician and truly like the build and form factor of this synth. I have an arduino uno. Is it possible to build this without an arm processor? Would you be willing to give the schematics/help me build one if I run into problems? Also, have you considered putting in an arpeggiator?

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s