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. 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 to mattCancel reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.