All code for this project is open source! https://github.com/mattybrad/polymod
And here's a piece of music I made to demonstrate the synth's capabilities:
How it works:
- The synth consists of a Teensy 3.6 with a Teensy Audio Adapter, running a sketch which I have written myself. The sketch uses the extensive Teensy audio library to generate the audio, but in such a way that the functions of the audio library are abstracted into "modules" which have a physical counterpart
- When the synth is powered on, the Teensy scans each of its seven module sockets. Each type of module has a unique ID number, which the Teensy can read from a hard-wired multiplexer on the module. The Teensy then knows which modules are in which slots
- For each module detected, the Teensy's sketch creates a virtual equivalent of the module, effectively generating a custom software synthesizer
- The Teensy sends a signal to each patch socket in turn (up to eight per module), and each time it sends a signal to a new socket, it also reads from each patch socket in turn, to see which sockets are connected to each other
- When a new connection is detected, it is replicated in the Teensy's sketch. When a connection is broken, that connection is also removed in the sketch
- If an output is connected to an output, or an input to an input, a red warning LED is flashed until the situation is rectified
- If there is a complete signal path, with audio flowing from a module's output to the master module, audio is generated
- The Teensy also continually cycled through each module's potentiometers, to check their current readings and pass this data on to each module's software counterpart
- When a key on the musical keyboard is pressed or released, this data is received by the Teensy and converted to a virtual "control voltage" signal, which can be connected to any of the modules to generate melodies
- The Teensy continually monitors the "mono/poly" toggle switch. When in "mono" (monophonic) mode, there is one virtual module for each physical module, and the synth can only play one note at a time. When in "poly" (polyphonic) mode, four virtual copies of each module are created, allowing for chords and harmonies to be played
- The synth's code/firmware can be updated via the USB socket on the back. This makes it relatively easy to design and add new modules
Hi there.
I'm going to have a go at building the Hackspace version of the PolyMod synth. Although I'm an experienced musician and electronics enthusiast, I've only recently started learning Arduino programming and have had no experience with the Teensy. So this will be my first big project and hopefully you or the other contributors can give me some advice If I get stuck.
If I get the breadboard version up and running, I would like to make a more robust permanent working synth and I was thinking about using banana plugs and sockets for the Patch Matrix which leads me to question 1 : Is it ok to patch two, three or more CV signals into the same input or will that cause conflict? eg patching envelope CV, Key CV and LFO into the SAW OSC input.
Question 2: Can this synth be integrated into other CV/Gate synth modules?
Bernie Dembowski