The synth's PCB is a custom board I originally designed for an "unofficial" school project. I wanted something I could use to generate audio and experiment with DSP, and I was working with TI's MSP430 series of microcontrollers in other hobby projects at the time, so that was my first choice for this board.
In retrospect, I think I might have been happier with a 32 bit chip with a bit more horsepower, but the 24 MHz MSP430F5510 did a surprisingly decent job considering it wasn't designed for high performance DSP applications in the first place. The chip's hardware multiply/accumulate support proved very useful, as expected.
- TI MSP430F5510 16-bit microcontroller w/hardware 32-bit multiplier
- HD44780-compatible two line character LCD display
- Microchip MCP4922 two channel 12-bit DAC
- USB type B jack for power (also used for flashing firmware updates)
- Optically isolated MIDI input jack
- Two rotary encoders for navigating menus
- Trimmers to adjust LCD contrast and sound volume
USB and Power
The USB interface on the MSP430F5510 provides support for flashing firmware. I relied on this during development, as I made the mistake of not breaking out the TI SBW debug interface onto its own header back when I designed the board. (The updated schematic above shows it, though.) The connector also provides power for the device via a 3.3 volt regulator. The microcontroller, optocoupler, DAC and its 3 volt reference are all powered from this regulator.
Input and Output
Input to the device is via two rotary encoders with integrated momentary push switches. This has proven quite sufficient for navigating the menu-driven interface.
Output (other than audio, of course) is via a two line character LCD via a standard HD44780 interface.
Audio and MIDI
A 12-bit MCP4922 two channel DAC is used for audio output. Next time around I'm definitely going for an I2S codec IC instead, and a microcontroller that can feed I2S peripherals via DMA. That said, the MCP4922 was more than sufficient for this project.
The synth has one full-sized 5 pin DIN MIDI jack, interfaced to the MSP430's USCI interface via an optocoupler as required by the MIDI specification.
As mentioned above, the "core" of the project is an MSP430F5510, a 16-bit microcontroller with 32 kB flash memory, 4 KB SRAM, and a variety of peripherals, including a 32x32 bit hardware multiplier with saturation mode and accumulation support. It's clocked at 24 MHz by a crystal of the same frequency, which allows the built-in MSP430 USB bootloader to function without modification and ensures the MIDI baud rate of 31250bps is an integer divisor of the main clock.