MIDISID - the idea and first steps

I've long wanted to be able to use the SID (or multiple SIDs) as a MIDI instrument. ie MIDI in and sound from a real SID chip out.

This would allow a controller such as a keyboard to play notes on the SID. Either with polyphony, or monophonic with multiple voices combined to produce complex sounds. 

I've achieved this some time ago using a MIDI cart in the back of a C64 and my own code:

Note that I'm using the sustain pedal on the piano and that I'm changing sounds by changing sounds on the piano (which sends control messages to my program).

I'd also like to be able to experiment with sounds by turning knob(s) to adjust parameters. Again I've done this using a real C64 and MIDI cart, with a joystick-controlled interface. I've recently discovered MIDISlave Manager which does pretty much the same thing. 

Lastly, if you use MIDI player software, and you have enough SID voices to cover the MIDI channels, you could have a SID-based hardware General MIDI module. Once again, I've made a half-decent rendition of Canyon.mid using a dual-sid C64 and the MIDI cart. My software reads the 16 MIDI channels  and 'allocates' each note to a free SID voice, applying the correct patch to that voice on the fly. This works pretty well as long as you don't have too many voices playing at the same time. (I made a pared-down version of Canyon.mid and am using Logic to 'play' it for this demonstration, sending the MIDI to a USB-MIDI interface, which is plugged into the DATEL MIDI cart in my dual-ARMSID-sixtyclone. It's my own software receiving that and driving the SIDs)

It sounds reasonable on first listen but it's a little glitchy. It's a good proof of concept though. If you have enough SID chips to cover the 16 MIDI channels, make some good sound patches and write good enough code to drive those SID voices, that would work nicely as a hardware .mid player.

So I began breadboarding a Pi Pico and some Nano Swinsids.  These aren't the most highly-regarded SID replacement, but they are cheap and I've found them to be resilient. I soon discovered that they can be reliably driven by the 3.3V signals from the Pico and they only require 5V supply and no external filter caps. 

After proving that I could write the SID registers using the Pico, I tried two (using a SID2SID board to cut down the number of wires), again with success.
This proved that I could receive MIDI in, drive the SID chip(s) and run a menu / control parameters using rotary encoder(s) and a little OLED display.  At this point I was uncomfortable with the number of wires. It wasn't very robust.

Hence the first PCB, which just allowed me to get the MIDI circuit, the Pico and two SIDs onto a PCB, so that I could experiment with the controls and other things, without worrying about all those connections.

I'll finish here with a video of the device playing a 'work in progress' of my own. I'd started writing the tune, and expanded it to 6 voices (= 6 MIDI channels) for this demo. 

That's where we were on 21 April 2022. I originally tweeted about this and wrote a blog post elsewhere but I've since decided to keep everything electronics/MIDI-related on a new dedicated blog, which is this one. 

This blog goes with the Twitter account MIDI IN and eventually a new Youtube channel dedicated to these activities, so please subscribe to whichever of those work for you.



Comments

Popular posts from this blog

Building a Brachiograph

e-ther 2 - Announcement and full rundown of features

Enclosures for MIDISID