PolyMod 1.2 Modular Digital Sythesizer

My take on Matt Bradshaw's original PolyMod synth.

Similar projects worth following
This project will be my take on the PolyMod synth that Matt Bradshaw built which was a finalist in the 2018 Hackaday Prize Musical Instrument Challenge (see ). Since completing the project Matt has made a start on a much enhanced version he is calling PolyMod 2 (see ), but that is still very much in the early stages of development so rather than sit around kicking my heels I thought I would branch out on my own and produce something that incorporates some of my own ideas, while still relying very heavily on Matt’s original concept and software.

The Basic Spec

If you want to make sense of the notes that follow you need to firstly read Matt Bradshaw’s excellent and comprehensive PolyMod project details as my writings will assume a basic understanding of that project.  If you have read the PolyMod project details and still don’t understand my ramblings I am happy to respond to questions.

An important part of Matt’s initial design philosophy was to produce a fully integrated musical instrument with its own keyboard.  As my wife has recently bought me a MIDI keyboard for a birthday present I decided straight away that mine would be a MIDI synth with a separate keyboard. This made my life easier (about the only change I have made that has!), as I could forget about that aspect of the build and not have the extra processing overhead of servicing all the keyboard multiplexers.

The next thing was that I wanted to support more modules.  The original PolyMod only had a capacity of 8 modules, which clearly wasn’t enough for what I had in mind.  However, talking to Matt at that stage it wasn’t clear how many modules the Teensy 3.6 could support.  Looking at the software I was pretty confident that I could do a few tweaks to improve the efficiency of the original code which Matt hadn’t had time to optimise because of the constraints of the Hackaday Prize timetable and that 16 modules looked like an achievable target.  A feature of the PolyMod is that the configuration of the synth is varied by plugging 3.5mm patch cables between modules, much like a conventional analogue synth.  Because Matt wanted to replicate the full analogue synth experience as closely as possible he made these connections hot-switchable by constantly monitoring the jack sockets so that any reconfiguration is instantly spotted by the software and implemented.  It looked to me like I would be paying quite a penalty in processing load to provide a feature that I wasn’t convinced I really needed, made worse by the fact that doubling the number of modules would quadruple the processing required to support this feature.  So, I decided I would delete the hot-switching facility and instead do my reconfiguration off-line and then have a button I would press to reconfigure. Suddenly I was starting to feel I could support more than 16 modules and Matt was saying he thought 64 was on the cards based on some other ideas he had been working on. But by then I had ordered the bits to build a 16 module system, so decided to stick with that. I had also switched from using 4051 multiplexers (1 x 8) to 4052 multiplexers (2 x 4) to halve the amount of multiplexer switching I need to do at the expense of using more Teensy pins. These imply 16 modules (1 x 4 x 4) for a 2-bank multiplexer setup. However, I have an idea for how I can stretch this limit which I hope will yield me the equivalent of a 20-22 module system within my 16 module chassis.

  • Main multiplexer boards

    Roger Labbett03/02/2019 at 19:56 0 comments

    The Teensy 3.6 is a great board to work with, but it isn’t over-endowed with readily accessible I/O pins.  To get round this, Matt used 4051 multiplexer chips.  A lot of 4051 multiplexer chips.  On PolyMod these were arranged in 2 banks.  The first bank took the data lines from the Teensy and multiplied them by eight to switch each Teensy line to each of the 8 modules.  On each module another bank of multiplexers switched them again, to give 8 lines of each type on the module.  So, each Teensy data line supports 64 I/O lines across all the modules.

    Because my version was going to have 16 modules, I needed to double the multiplication of lines at the first level.  I could have gone to 16 port multiplexer chips, but finding these in DIP packages at sensible prices was looking like a problem.  I could have got them as surface mount components on breakout boards from ebay and in retrospect this would have been the easier option, but in a moment of madness plumped for using 4052 chips as I also plan to use these on the modules. Each of these chips takes 2 lines and switches them each between 4 output lines, so arranging them in 2 banks gives me support for 16 modules.  This will work as well as 16 port multiplexers would have, but the circuit boards are a lot more work to produce due to the extra complexity of the wiring.

    On a project of this size I like to make my designs as modular as possible so that I can easily test things as I go along.  So, I have built 2 main multiplexer circuit board modules on proto boards.

    The first board uses the ‘receive’ addressing in the PolyMod software and multiplexes the Teensy pins for the patch cable receive line, two analogue data lines and one digital data line. In each row of 5 chips, the middle chip provides the first level switching of 2 Teensy pins to 4 output lines which each go off to one of the 4 other chips. The outputs of the 4 second level chips are then run out to angled headers. Cables will run from these headers to the backplanes that the modules will plug into.

    The second board uses the ‘send’ addressing in the PolyMod software and multiplexes the Teensy pins for the patch cable send line and the module ID line.  I will leave the other half of the board empty for the time being in case I decide to add multiplexers for more I/O lines in the future.

    To test the finished multiplexer boards I wrote a short Teensy program that stepped through the output lines in turn and lit an LED connected to the appropriate output header pin.  This identified a problem with the routing of a connecting wire on one of the chips that resulted in one of the output header pins being connected to 2 multiplexer pins and one output header pin being unconnected – something that might have been difficult to diagnose on the fully assembled synth.

    The two boards will be stacked one over the other, with a third circuit board on top to carry the Teensy/audio board assembly, shift registers for the module status LEDs, the MIDI-in circuit and a 3.3v regulator to provide power for the module circuits.

  • Physical Module Design

    Roger Labbett02/22/2019 at 19:29 0 comments

    In the PolyMod design, Matt had used a module faceplate size of 153mm x 38mm.  I suspect that this size was arrived at primarily as a consequence of the use of 100mm wide stripboard for building the module circuit boards.  I initially wanted to use a slightly taller module size to allow for a bit more space around the pot knobs, but failed to find a source of wider stripboard at a sensible price.  So, I decided to use perfboard instead and found some 120mm wide boards that fitted the bill.  This would give me modules 170mm high.  However, having now built my first module I am thinking I need more faceplate space, so plan to switch to 150mm wide perf boards to give me 200mm high modules.  My standard module size will be 42mm wide, but I will also have double-width modules which are 76mm wide and other sizes are possible.

    PolyMod has plug-in modules which is a nice feature but limits you to a predefined module pitch.  I wanted full flexibility in module size and arrangement, so will be using ribbon cables to connect my modules. PolyMod used plywood for the module faceplates, but I will be using aluminium angle – one leg will provide the faceplate and the other will support the module circuit board(s).  This will give me a lot more robust modules. 

    On the PolyMod modules, Matt provided support for 8 digital circuits for jack sockets, plus 8 analogue circuits for potentiometers.  From Matt's comments about ideas he has for PolyMod 2 it was clear that more circuits would be required for more advanced modules.  In an effort to try and future-proof my design I have added 4 extra digital circuits for switches, buttons, etc (with scope for adding 4 more), plus a shift register bus to support multiple LEDs or an LCD display.  I have also added a status LED to each module to help in trouble shooting if I wire up the patch cables incorrectly.  The result of all these changes is that I will have a 20 channel backplane rather than the 12 channels of PolyMod.

    It was clear looking at the modules Matt had made for Polymod that many used less than half the available I/O circuits.  It occurred to me that I may be able to create new combined modules that implement 2 logical modules in a single physical module.  Thus I may be able to build a single double-width physical module with, say, 2 oscillators or LFOs onboard.  That way I could extend the logical capacity of the synth beyond the basic 16 modules.

View all 2 project logs

Enjoy this project?



Dan Maloney wrote 02/25/2019 at 15:44 point

Cool. Did you happen to catch Matt's Hack Chat back in January? Link to the transcript in case you didn't:

  Are you sure? yes | no

Roger Labbett wrote 02/26/2019 at 18:49 point

Hi Dan. I didn't catch Matt's Hack Chat live, but did read the transcript.  Matt has been very helpful during the planning stage of my build and provided much encouragement! Thanks for adding the link.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates