DIY Modular Synth: Solina String Synth

DIY Modular Synth: Solina String Synth

As you’ll know if you’re one of the tiny proportion of humans that actually read this blog, I’ve been doing a lot with Arduino micro-controllers to build modules and MIDI gadgets. Whilst Googling around for ideas and how-to-do articles, I came across a fantastic Arduino-based string synth project by Jan Ostman, beautifully demonstrated here by a builder of the project:

The sound of this fits perfectly with the feel of the music that I make, so I set out to make one for myself.

First of all, as always, the specification. I wanted to make this as a module rather than a complete keyboard-and-synth, so there would need to be some changes to the original source code:

  • Make it work with my MIDI rig. Although there is MIDI-handling code in the original source, it’s effectively in “OMNI” mode (that is, it receives on all channels). I’d want it to work with a specific MIDI channel.
  • Allow the MIDI channel to be set without having to change the source code. I opted for this method of setting the channel with a 4-way DIP switch, described by Notes and Volts.
  • Because I try to be a tidy developer, tear out any redundant code to do with reading the keyboard.
  • Change the pin configuration for the CV inputs so that I could build this with just an ATMega328 chip rather than a whole Nano (the Nano has 2 more “virtual” analog pins that the ATMega package)
  • Add some CV inputs (because this is a module, after all)
  • Add some simple output protection to the Gate output

I applied the usual approach and bread-boarded using an Arduino Nano, making code changes as necessary. The code was pretty straightforward to modify, it just required some careful tracing of where globals and variables were being used, and a bit of common-sense when applying the Arduino MIDI library so that I didn’t end up trying to re-use interrupts (fortunately, the compiler kind of spots this and gives an “already-defined” error).

Back to blog