Skip to content
/ sidex-vcv Public

VCV Rack plugin for CV-controlling Commodore 64 SID via MIDI

License

Notifications You must be signed in to change notification settings

wipu/sidex-vcv

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

sidex-vcv

VCV Rack plugin for CV-controlling Commodore 64 SID via MIDI

DISCLAIMER

Before you try this, you need to be aware that

  1. This module sends MIDI SysEx messages using the Casio manufacturer ID (because the author doesn't own any Casio devices). If a real Casio instrument receives the messages, the results are undefined and may harm your instrument or your data. If you have a Casio instrument connected, you shouldn't use this module. In the future there will be a way to use a different manufacturer ID.
  2. This module requires a patched version of VCV Rack, because the official version doesn't support MIDI messages of length > 3 bytes as of this writing. If you feel you need to use this in your official Rack right now, please contact Andrew Belt, the author of VCV Rack.

What

SidEx is a simple CV to MIDI converter module that lets you drive your Commodore 64 SID chip (or an emulation of one) with control voltages from VCV Rack. And, if you use something like Expert Sleepers ES-8, the control voltages can even originate from a real Eurorack synthesizer, making your Commodore 64 essentially a Eurorack module!

How

Funnily enough, the standard MIDI speed is just enough for sending all SID register values as sysex dumps 50 times per second (a typical refresh rate of a SID engine running on a PAL Commodore 64). So, SidEx simply receives CV values and 50 times per second converts them to SID register values and sends them as a sysex dump.

Naturally you'll need the receiving counterpart running on your Commodore 64: sidex-0.1.prg

(The prg assumes the MIDI interface is Datel compatible. It has been tested with C-Lab, but e.g. Kerberos should also work. Other devices will be supported in the future.)

Then just clone this repository and run

./run-in-developer-rack.sh

The script will download (if needed) the modified Rack, compile it together with SidEx and run it. Ah, did I mention all this requires Linux?

Then just create an instance of SidEx, connect some signals to relevant inputs (e.g. osc1 gate >=2, some freq, one of the waveforms >=2, sustain=10) and select the MIDI input of your Commodore 64.

Why

Well, why would you not want to play SID with your modular?

Even as is, SidEx is a fun way to play the SID. But in the future there will be auxiliary modules that let you control the SID on a higher level, controlling SidEx from higher level concepts.

Status

Some interesting sounds can already be made. These are the most important known limitations:

  • some input ranges are not checked, resulting in odd behaviour beyound limits
  • ring mod & osc sync input handling are not implemented quite yet
  • graphical design of the panel may not please every eye...
  • hardcoded Datel MIDI assumption
  • hardcoded Manufacturer ID (Casio)
  • no save/restore support so you need to reselect MIDI out after restarting Rack
  • this page is all the documentation there is

Help

Do you know how to implement the look'n'feel of C64 as a simple SVG required for a VCV plugin panel? If you do, your help will be appreciated.

How would you like to control your SID from VCV? Please tell so we can create modules that make it easier to generate CV to SidEx.

How can other modules send SID-related messages locked to 50 Hz frames? This would be useful for stereotypical SID tricks like "wavetable synthesis" and arpeggios - changing the waveform or pitch on every frame.

What else? Feel free to contribute with questions, ideas, patches, critique, ...