So the Sega Mega drive synth.

Maybe someone will dare try to pop one together. in all honesty it would be relatively simple. however you instead go and get one of these which came out a few days after the Sega Megadrive synth video, hive mind strikes again! :-

The thing about this mega drive synth is there isn’t many components just lots of knobs. … maybe a pcb. oohf imagine, a humungous one sheeeesh


can you do a more in-depth-howto on this synth? i am really interested in buidling one. the megafm doesn’t seem to have a polly mode either. and also with many twisted electrons products there are annoying quality issues.

1 Like

hey yeah I can, I dont know when but when I have a day when it makes sense to draw up the plans I shall do so!


I’m also extremely interested in a more in-depth tutorial. I’ve got an old megadrive sitting on my desk that I’ve been dying to get some use out of. Cheers Sam, you’re doing the lord’s work


Man, it’s a dream come true for me that you created this machine. I’m a huge Fm synth lover and would love to build my own machine to mess with those sounds !


I’d love to see a schematic for this!


Yes please! I want to build one for my studio!


Giving some serious knobs on, twiddly fiddilyness thought to making a fully interactive MIDI controller for my old Yamaha TX81z FM tone generator. Oh and some black tape over the modules dive or die menu buttons before I encase it behind a panel.
There is the ‘stereoping’ thing bit it’s laggy and still fiddly. As I always imagine Sam saying “when in doubt get the big knobs out” (sorry. He’s never said that im sure : sorry @lookmumnocomputer)
I went looking for more inspiration and found this which just made me smile… enjoy.


I’ve been wanting to build this for a while. I’ve been going through the poly code and watching the LMNC and notesandvolts videos trying to figure out the schematic (sometimes pausing to follow the wires :slightly_smiling_face:). I think some of the layout is based on common ideas about electronics and I haven’t the experience with them yet so it’s no as obvious to me.

I made an attempt to draw out a schematic, but I’m wondering if it makes sense, especially around the Midi Thru and the Pot-Socket connections. I’m using an Arduino Pro Micro which has less pins than the one LMNC uses but I think it’s fine if I change two of the pins. The multiplexers are labeled M1-4 and I only draw the left side for M2-4 since they are the same and I have labeled which current flow (Ē, written as ‘sig’ on the image) pins they connect to but they should all connect their control pins (S) to Arduino pins 2-5 (I think this is correct).

If anybody has built this already or similar project any feedback would be appreciated.

Also apologies for it just being drawn on paper rather than using an app, I just find it easier to use paper.


I’d been thinking about this too as a poly synth voice using the dafm as the base.


I’ve very nearly got one prototyped.

My current hangup is Juha’s code. As it is, it never plays more than one note, no matter if the mode switch is set to stack or cycle. Throwing the unison switch makes the mono play a little smoother—as in otherwise most of the time notes won’t even play and MIDI off messages seem to be a rare commodity. The Arduino notepad complains about an invalid conversion between ‘volatile void*’ and ‘void*’ which could indicate the source of the problem, but I’m an initiate to Arduino and C++. I wouldn’t know where to even begin to debug it.

Honestly it’s all a bit baffling. Why would it work for Sam but not me? What have I bungled? I don’t think it’s the MIDI in or out. I’ve followed the Notes & Volts tutorials to the letter. After all, the Genesis is in fact receiving MIDI through the midi splitter. It’s got to be the code, but that doesn’t make sense either.

1 Like

volatile void tells the c compiler that the function never returns a value. Try just void and see if that works for you. GCC versions treat this differently so if you are using a different version of GCC that would be why it would work for someone besides you. It also can come down to OS as well since the abstraction of semantics of bytecode can lead to differences. Since you probably dont need this abstraction, you are probably fine losing the volatile return.

You can also check to make sure you are using the same version of the code that was tested to work fine. That might be simpler if you havent yet done that.

GCC? Again, I’m an initiate at this stuff.

I did in fact try deleting “volatile” (from the line "violatile byte pitches[CHANNELS];), which solved the error but not the polyphony.

Don’t tell me all this trouble is because I’m on Windows lol.

It’s been freshly downloaded from Juha’s Github, written to an Arduino Nano as prescribed, so if he didn’t make any changes between downloading and implementing, this is the exact version of the code @lookmumnocomputer uses. This must be the case since August 11, 2019 is the latest version listed on the Github and the Gameboy Megamachine video utilizing the code was published on August 22nd. Did I understand right what you meant by checking the version? I am but an initiate.

1 Like

All good. GCC is just basically the thing that compiles your human readable code into: 101010101011101010111.

No errors is good, what are you using to test the midi out? I recommend midiOX.

It will show you all the different messages and things. Truth be told, i havent looked at this code or worked on a poly synth, but we can prolly work this out as a community.

I dont have time right now to go into the code to take a gander, but i bet its not too bad.

If memory serves, @fredrik might be familiar with this code.

Wild. Looking in midiOX, a single key will usually trigger a pitch on all five channels while every once in a while it’ll trigger on just one channel. I did notice the channel number cycling after a few key presses.

That’s with Unison switch LOW. Toggling Stack and Cycle don’t seem to make any difference.

This is all after removing “volatile” and reuploading, but it’s the same behavior as before when I was testing with the Sega itself.

1 Like

You got any floating pins?


That cracked it.

I got rid of the unison switch jumper that wasn’t being used and the “one key-all channels, most of the time” bug resolved. MidiOx shows notes cycling channels as desired. Big thanks there.

Turns out another big part of the problem was only the first FM channel of the Genesis sounds after initializing. I don’t have all forty-some knobs set up just yet to use with the main code, so I used a customizable software dashboard in FL Studio on each individual channel through GenMDM’s USB-C to get them all sounding, after which the Genesis played with flawless polyphony through its MIDI interface. Success!

A side note: I’m after a six-note polyphony Megadrive synth as opposed to the five-note poly Sam went with. The GenMDM Midi CC list states the sixth FM channel doubles as the “ugly as fudge” DAC channel and they include a switch to toggle between the two (CC #78). It’s on DAC by default, so a switch is necessary to access the sixth note.

I included this switch in my software dashboard, so now, after updating Juha’s code to include six channels, I’m sitting pretty with six voice poly.

The next trick is squeezing the sixth channel into the main code and prototyping a few controls to confirm they work. Not sure why Sam didn’t go for six poly. Maybe he has an older GenMDM that didn’t have the switch, or maybe there’s something I don’t know about D13 on the Nano. I shall report back when I’ve had a go at it.


I redrew my schematic in EasyEDA so it’s a bit easier to follow, not sure if it’s correct especially around how the rotary switches and two poll switches. Does it make sense?

1 Like

Please, note it on the schematic (“untested” for exemple), because someone could find this pic without reading the thread.

(sorry for the repetition for the others :wink: )


Done, good idea, thanks!

1 Like