There seems to be a direct correlation between musicians and people who can program. Even programmers who don’t play an instrument often have a profound appreciation of music and so we see quite a few musical projects pop up. [Ihsan Kehribar’s] latest project is a good example. He married an STM32F031 ARM development board, an audio codec, and a simple op amp filter to make a playable MIDI instrument. Of course, it is hard to appreciate a music project from a picture, but if you want to listen to the results, there’s always Soundcloud.
He’d started the project using an 8-bit micro, but ran into some limitations. He switched to an STM32F031, which is a low-end ARM Cortex M0 chip. [Ihsan] mentions that he could have used the DSP instructions built into larger ARM chips, but he wanted to keep the project done on minimal hardware. The audio CODEC chip is from Cirrus Logic (a WM8524), and it produces two output channels at 192 kHz. As an unexpected benefit, the CODEC uses a charge pump to generate a negative voltage (much like a MAX232 does) and [Ihsan] was able to tap that voltage to provide the op-amps in the audio filter with a negative supply rail.
The project has good documentation and uses an optoisolated MIDI interface. The transfer between the ARM and the CODEC uses DMA and [Ihsan] uses an interesting trick to simulate double buffering on the ARM’s DMA channel (and a good use of the “half complete” interrupt). The current design can do eight note polyphony, although [Ihsan] says it can do more with some modifications to the code. After prototyping (see the picture above), he moved the circuit to a dedicated PCB, and he includes the layout in the project documentation.