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?
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.
So I now make digital musical instruments, often with the aim of using them in my band (Robot Swans).
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
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
Hi
It is a common thing to trade off between hardware and software.
Javascript?
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
"detect connections"?
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!
Okay, so when I say "detect connection", here's what I mean:
I think thats cool man !
json
and web api!
that rocks
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
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
(3.5mm patch cables)
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!
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
At one point I had hoped to make the project as an interface to VCV Rack
(Open source modular software synth)
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 :)
Interesting approach, would it be possible to make this anyhow interoperable with other synths built like this, or even with separate modules?
Or is the whole "patch" on principle contained within the one box / synth?
Well, you could certainly add one or two Eurorack compatible analog inputs/outputs
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
But in essence it's a self-contained ecosystem
Thanks Dan :)
I see, thank you :)
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?
Has anyone tried to program TI's mcu without Code Composer Studio ?
Haha well that's certainly part of the answer ;)
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!
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.
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
Yes there's something very appealing about uniformity :)
Moving to jumper wires from audio cables seems like it would reduce the fun factor
LOL
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...
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?
https://www.korg.com/us/products/dj/volca_modular/
volca modular - MICRO MODULAR SYNTHESIZER | KORG (USA)
A semi-modular analog synthesizer that makes modular synthesis more accessible and understandable than ever before.
Yes, plenty of difficulties!
Great project Matt! Have you heard of the Axoloti project? If so, is there any reason you chose Teensy instead?
my werkstat is never used my DIY modular converter suxx
https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQJlG5qyDJ7AljTJS68ZZ19gsfCA4VSX_VfCBa0Yu-0IUjj7ERI
I need this one: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
Axolotl looks cool, will check it out after this chat, thanks!
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
I was surprised that the keyboard is not at the edge of the box but back a ways.
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
I've was just about to jump in on that subject : another reason to favor wood might also be the cost :)
just dropping in and on that note hi all! i'm a big fan of pcb material for enclosures.
(Sorry if I miss any questions, feel free to repeat them if everything is moving too quickly!)
why raspberry? for the JSON power?
https://github.com/williamweston/phasex
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.
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.
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
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
It's inefficient, and I'm trying to improve it, but anything more efficient gets really confusing!
ohhh wow okay. I did mine on a 3.2 and had multiple oscillator chains, but not signal paths
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
Yeah it's great for starting but after a while I just edited all the patch cords and stuff manually.
https://hackaday.io/project/162812-polymod-2-modular-digital-synthesizer/log/158269-early-keyboard-prototype
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:cool man!
good luck!
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.
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?
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
If my googling of "living hinge" is correct, then yes!
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.
No it's great to learn new terms! I knew it must have a name..
Right - just me jargoning
It feels... reasonable. Basically I just got my first 3D printer and got very excited at being able to print something vaguely useful!
But it needs a lot more tweaking before you could play anything good on it, I think
Daren, thanks for the link, will check it out :)
Bertrand - yes, the wood for the PolyMod was salvaged from an old wardrobe that I found on my road!
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.
Cool, thanks :)
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?
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
R - the design makes excessive use of multiplexers, specifically 4051 chips
nice :)
also instead of pure data i would suggest trying out Faust.
:D
So @Matt Bradshaw, what do you think about open-source design in general for music? Where can projects like this take music?
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
Thanks Thomas, will check it out!
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 ?
Also thanks Paul, couldn't have done this project at all without all your amazing work!
(I'm not familiar with the Teensy though, so maybe that is out of the equation as your modules are purely digitals...)
Yeah Thanks Paul! you rock man!
Discussions