OK, folks, let's get started! Welcome to the first Hack Chat of 2019. Looks like we have a good turnout for Matt Bradshaw, who's here to discuss all things open-source synthesizer.

@Matt Bradshaw, can you give us a little bit of your background?

R joined  the room.12:07 PM

Matt Bradshaw12:07 PM
Sure - I have a degree in physics, but then spent quite a few years as a web developer. I've always played in bands and enjoyed music technology, so it was natural to merge my music interests with my programming interests. This led my to Arduino, Raspberry Pi, and Teensy projects, and my last few projects have all been based around Teensy audio.

Matt Bradshaw12:08 PM
So I now make digital musical instruments, often with the aim of using them in my band (Robot Swans).

manualf12:09 PM
cool!

Great, thanks. That actually ties right into the first question, from Andrew Bakhit: why did you go with a Teensy for your PolyMod project?

Actually, the full question was: "For your PolyMod project, why the choice to use a Teensy to detect modules and cables to set module configuration? This seems it would result in less hardware but in much more coding"

And for anyone who hasn't seen the PolyMod: https://hackaday.io/project/160626-polymod-modular-digital-synthesizer

Matt Bradshaw12:12 PM
Well, the first version of the project used an Arduino Mega to detect the connections, and this information was then sent via serial to a PC, which was running a custom soft synth written in Javascript

Taiwo12:12 PM
Hi

Kevin12:12 PM
It is a common thing to trade off between hardware and software.

manualf12:12 PM
Javascript?

Matt Bradshaw12:12 PM
But once I realised the Teensy could actually do everything, I switched to using that, because I really liked the idea of building an instrument that didn't require a PC

Johny Radio12:13 PM
"detect connections"?

Matt Bradshaw12:13 PM
Yes, Javascript was a silly language to use, but I just happened to know quite a lot about the JS Web Audio API from my previous job, so it was the quickest way of getting it working!

Matt Bradshaw12:13 PM
Okay, so when I say "detect connection", here's what I mean:

manualf12:13 PM
I think thats cool man !

manualf12:13 PM
json

manualf12:14 PM
and web api!

manualf12:14 PM
that rocks

Matt Bradshaw12:14 PM
In a regular analog modular synth, the audio flows from one module to another, as actual, analog audio (or control voltages). I really liked the idea of creating a signal chain in this way, but I wanted to do it virtually

Matt Bradshaw12:15 PM
So, I built a physical synth that looks very similar to an analog modular synth, and you still connect the modules to each other with physical cables

Matt Bradshaw12:15 PM
(3.5mm patch cables)

Matt Bradshaw12:16 PM
But instead of audio flowing down the cables, it's just a sort of matrix, where the Arduino or Teensy sends a "test voltage" to each module in turn, and then "listens" for that test voltage from each module in turn

Ah, ok - just about to ask what's on the patch cables. That's pretty neat!

Matt Bradshaw12:16 PM
The end result is that the software synthesizer, whether it's in Javascript or on a Teensy or whatever, will "know" which modules are supposed to be connected to each other

Matt Bradshaw12:17 PM
At one point I had hoped to make the project as an interface to VCV Rack

Matt Bradshaw12:17 PM
(Open source modular software synth)

Matt Bradshaw12:17 PM
But a) I really wanted the whole instrument to exist in a single box without a PC and b) I didn't have the right skills :)

Tomáš Mládek12:19 PM
Interesting approach, would it be possible to make this anyhow interoperable with other synths built like this, or even with separate modules?

Tomáš Mládek12:19 PM
Or is the whole "patch" on principle contained within the one box / synth?

Matt Bradshaw12:19 PM
Well, you could certainly add one or two Eurorack compatible analog inputs/outputs

Matt Bradshaw12:20 PM
I used a Teensy with a single audio board, which has a stereo analog input and stereo analog output. I believe you can add a second audio board to give four ins and four outs, so you could get a limited amount of interplay between the two systems

Here's what the PolyMod looks like all patched up

Matt Bradshaw12:21 PM
But in essence it's a self-contained ecosystem

Matt Bradshaw12:21 PM
Thanks Dan :)

Tomáš Mládek12:21 PM
I see, thank you :)

Matt Bradshaw12:22 PM
I showed the instrument to a musician friend who instantly asked "how can I connect it to my Moog modular synth?", so that's definitely a feature I want to explore!

Andrew had another question that sort of fits in with that picture: "Another question :) why the choice of making the synth similar to the eurorack modular style? It seems like the way this is made it doesn't necessarily need to be in the eurorack format but it could be the form of like a desktop synth"

My answer would be: "Because racks!" @Matt Bradshaw, what do you say?

George12:24 PM
Has anyone tried to program TI's mcu without Code Composer Studio ?

Matt Bradshaw12:24 PM
Haha well that's certainly part of the answer ;)

Matt Bradshaw12:25 PM
The first prototype (the one that used a PC) didn't really resemble Eurorack, it was just a fixed design. But I think once I realised that I *could* make it properly modular, I felt I had to!

Thomas Hopman joined  the room.12:26 PM

Matt Bradshaw12:26 PM
I've stuck to roughly the Eurorack dimensions because I didn't really have a good reason to diverge from them.

I understand completely. I once put all my consumer audio gear into a 19" rack just because. Caused wicked ground loops, though.

Matt Bradshaw12:27 PM
The next version will probably use simple jumper wires rather than 3.5mm audio cables, partly for cost, and partly to distinguish the design from Eurorack and remove any confusion about compatibility

Matt Bradshaw12:28 PM
Yes there's something very appealing about uniformity :)

Bertrand Lemasle joined  the room.12:28 PM

fundamental12:28 PM
Moving to jumper wires from audio cables seems like it would reduce the fun factor

manualf12:29 PM
LOL

Matt Bradshaw12:30 PM
Yes, I'm weighing up the fun factor against the cost of hundreds of 3.5mm sockets and lots of 3.5mm cables - the next version might have up to 64 modules...

Matt Bradshaw12:31 PM
I saw a new Korg miniature synth previewed last week which uses jumper wires rather than 3.5mm - I'm assuming it works in a similar way to the PolyMod

Did you find that using wood for the rack and modules presented any difficulties? Any advantages? Would you choose a different material next time?

Matt Bradshaw12:32 PM

https://www.korg.com/us/products/dj/volca_modular/

KORG GLOBAL

volca modular - MICRO MODULAR SYNTHESIZER | KORG (USA)

A semi-modular analog synthesizer that makes modular synthesis more accessible and understandable than ever before.

Read this on KORG Global

Matt Bradshaw12:32 PM
Yes, plenty of difficulties!

d.disanjh12:33 PM
Great project Matt! Have you heard of the Axoloti project? If so, is there any reason you chose Teensy instead?

manualf12:33 PM
my werkstat is never used my DIY modular converter suxx

manualf12:34 PM
I need this one: https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQJlG5qyDJ7AljTJS68ZZ19gsfCA4VSX_VfCBa0Yu-0IUjj7ERI

Matt Bradshaw12:35 PM
Re the materials, I'm basically a programmer who is slowly learning about electronics and making physical things. Wood seemed like the easiest way to build a sturdy case for the synth, but the photos make the woodwork look better than it is - it's very rough and splintery on close inspection. I'm playing with aluminium and 3D printed plastic for the next version, still not quite sure which way to go

manualf12:35 PM

Matt Bradshaw12:36 PM
Axolotl looks cool, will check it out after this chat, thanks!

R12:37 PM
Did you have any trouble getting the polyphony worked out? I knocked up a basic monosynth on the teensy but once I added the code for polyphony it just kind of exploded.

I know a rabbit hole you can go down re: enclosures: check out @Bertrand Lemasle's project https://hackaday.io/project/163523-mls800

Kevin12:37 PM
I was surprised that the keyboard is not at the edge of the box but back a ways.

Matt Bradshaw12:37 PM
Still just about early enough in the process of designing the next version that I could potentially switch to another platform. I did consider Raspberry Pi

Bertrand Lemasle12:37 PM
I've was just about to jump in on that subject : another reason to favor wood might also be the cost :)

Thomas Hopman12:37 PM
just dropping in and on that note hi all! i'm a big fan of pcb material for enclosures.

Matt Bradshaw12:37 PM
(Sorry if I miss any questions, feel free to repeat them if everything is moving too quickly!)

manualf12:38 PM
why raspberry? for the JSON power?

Daren Schwenke12:38 PM

https://github.com/williamweston/phasex

GITHUB

williamweston/phasex

PHASEX is an experimental MIDI softsynth for Linux/ALSA/JACK with a synth engine built around flexible phase modulation and flexible oscillator/LFO sources. Modulations include AM, FM, offset PM, and wave select. PHASEX comes equipped with multiple filter types and modes, a stereo crossover delay and chorus with phaser, ADSR envelopes for amplifier and filter, realtime audio input processing capabilities, and more.

Read this on GitHub

Daren Schwenke12:38 PM
for prosperity, I added banding of the voices to simulate a Moog to this a couple years back. I suck, but it worked well enough for Tom Sawyer.

Matt Bradshaw12:39 PM
Re polyphony, the Teensy 3.6 is surprisingly powerful so I was able to do a really naive hack: when in polyphonic mode, the entire signal chain is just duplicated four times, and the only difference is the note that is played on the keyboard

Matt Bradshaw12:40 PM
So, if you patch a keyboard into an oscillator into a filter into the output, that chain gets replicated four times, with four oscillators, four filters, and everything gets mixed together at the end

Matt Bradshaw12:40 PM
It's inefficient, and I'm trying to improve it, but anything more efficient gets really confusing!

R12:40 PM
ohhh wow okay. I did mine on a 3.2 and had multiple oscillator chains, but not signal paths

Matt Bradshaw12:41 PM
The key for me was moving away from the online Teensy audio editor. It's a really cool editor, but I wanted to be able to dynamically create modules

R12:42 PM
Yeah it's great for starting but after a while I just edited all the patch cords and stuff manually.

Robert Ehtesham joined  the room.12:42 PM

Matt Bradshaw12:43 PM
Kevin - yes, that's just my bad woodwork skills, coupled with the deadline for the Hackaday Prize! Have been playing with 3D printing custom keys for the next version, and they would overlap the edge, like a normal keyboard. Here's a project log: https://hackaday.io/project/162812-polymod-2-modular-digital-synthesizer/log/158269-early-keyboard-prototype

manualf12:43 PM
cool man!

manualf12:44 PM
good luck!

R12:44 PM
If you decided to switch to a Pi or other linux thing you could also look into using Pure Data, which is basically a software modular already. It's more of a visual patching language but it's way fun.

Kevin12:44 PM
Matt, np. It was version 1. :) Thanks. I'll check that out after the chat.

Neat. Do those keys just have a living hinge? How's the feel on something like that?

Matt Bradshaw12:45 PM
Yes, I've thought about Pure Data, and got as far as downloading it onto my PC - it's definitely a very cool project and could work well, I'll give it another look

Matt Bradshaw12:46 PM
If my googling of "living hinge" is correct, then yes!

Matt Bradshaw12:46 PM
I basically copied a toy keyboard design, which had a thin section of plastic operating as a hinge.

Sorry about that - just a one-piece design with a thinned out section for flexibility.

Matt Bradshaw12:47 PM
No it's great to learn new terms! I knew it must have a name..

Right - just me jargoning

Matt Bradshaw12:48 PM
It feels... reasonable. Basically I just got my first 3D printer and got very excited at being able to print something vaguely useful!

Matt Bradshaw12:48 PM
But it needs a lot more tweaking before you could play anything good on it, I think

Matt Bradshaw12:49 PM
Daren, thanks for the link, will check it out :)

Matt Bradshaw12:50 PM
Bertrand - yes, the wood for the PolyMod was salvaged from an old wardrobe that I found on my road!

Daren Schwenke12:51 PM
I would point you to my fork of it, but my bare C skills are not good. Works, but is not stable. Good design patterns there though.

Matt Bradshaw12:51 PM
Cool, thanks :)

R12:52 PM
are the sockets in the back of the enclosure where each module plugs in just carrying ground, v+, and send/receive signals? how do you send data from all the different jacks and knobs without running out of pins on the teensy?

Matt Bradshaw12:52 PM
Thomas - yes, I'm considering bare PCB material for the modules fascias on the next version. I've just started learning KiCAD and got my first test PCBs a few weeks ago

Matt Bradshaw12:53 PM
R - the design makes excessive use of multiplexers, specifically 4051 chips

Paul Stoffregen12:54 PM
nice :)

Thomas Hopman12:55 PM
also instead of pure data i would suggest trying out Faust.

manualf12:55 PM
:D

So @Matt Bradshaw, what do you think about open-source design in general for music? Where can projects like this take music?

Matt Bradshaw12:56 PM
R - Each module has a header with the following pins: VCC, GND, six "address" pins to communicate with the multiplexers/demultiplexers, and single pins for data from the different 4051 chips: module identification (i.e. is this a filter or an oscillator or what?), analog data (from the knobs), and send/receive data to/from the sockets

Matt Bradshaw12:57 PM
Thanks Thomas, will check it out!

Bertrand Lemasle12:57 PM
As you're not using PCB, ground planes etc I'm curious to know If you faced any hum noise issue during the build or if you did anything to prevent that ?

Matt Bradshaw12:57 PM
Also thanks Paul, couldn't have done this project at all without all your amazing work!

Bertrand Lemasle12:58 PM
(I'm not familiar with the Teensy though, so maybe that is out of the equation as your modules are purely digitals...)

manualf12:58 PM
Yeah Thanks Paul! you rock man!

Discussions