Seb Lee-Delisle gave a great talk at Wuthering Bytes last year about Laser Light Synths. Inspired by his work, I’m planning to build a very simple synth – whilst I don’t have the time, money, or skills and craftsmanship to build anything like his Laser Light Synths, I’m expecting that I can at least build something that’s passable as a toy. Right now this is in the planning / experimentation stages.
The list of requirements / specifications so far, mainly governed by what I already own or know how to do, goes like:
- Computing / Interfaces: Starting out I’ll be using a Raspberry Pi 2 and an MPR121 capacitive touch hat. The Raspberry Pi 2 makes it easy to experiment with producing sound, and the hat and audio can be controlled using Python. There also seems to be ways of controlling Sonic Pi with Python – there’s some discussion of doing that in this thread. I do have a couple of concerns with this setup:
- On the Raspberry Pi side, maybe doing things with Python will be a bit slow, or maybe timing will be a bit random. I could do some experiments to see how low a latency can be achieved if this turns out to be much of an issue.
- On the MPR121, I note that all the touch inputs are multiplexed, and I don’t know how quickly it cycles through all the inputs. Perhaps it will be possible to miss key presses or experience a noticeable delay.
In any case – the Pi and MPR121 will be good enough to get everything working. If it becomes essential, I can look for something else to use later. I have access to a SiFive HiFive1 RISC-V dev board, which might be easier to manage latency on (though it might be difficult to be creative with the sound output, perhaps limited to PWM noises).
- Keys: 12 keys should be enough to begin with. This is mainly governed by the number of touch inputs on the MPR121, and to limit the complexity of the build. I have some copper tape (possibly this stuff), which should be sufficient for making the keys from – the synth doesn’t need to be big.
- Tuning: I really liked Seb’s idea of using the Pentatonic scale so that anyone can play something that sounds good, so that will be the first thing to try, and should allow around 2 octaves on the 12 keys. It would be interesting to get an octave and a half of a major / minor scale or an octave of a chromatic scale as alternatives – though, it could be confusing for the intervals between keys to vary depending on the tuning! So, the pentatonic scale will come first, and I’ll worry about implementing other tunings later.
- Casing: I think I have some clear perspex lying around somewhere, which I’ll use at least for the top of the keyboard – I like the idea of being able to see wires, LEDs and other bits through the case. I do have some reservations about fitting multiple pieces of perspex together at different angles, as I’m not skilled / experienced in working with that sort of material (or many sorts of material at all!).
- Lights: Seb used a huge number of RGB LEDs to create an amazing backlight for the Laser Light Synths. For this synth, I’ll probably use 1 LED per key, to light up when the key is pressed. I have a couple of different colour LEDs I can use to make it look (marginally) more interesting. The MPR121 only uses SCL and SDA, so there are plenty of GPIOs left over to drive LEDs.
My next step is to write some code for producing sounds in response to touches on the Pi. Once the code for doing this is working well enough, I’ll think about building the keyboard around it.