Giter Site home page Giter Site logo

wipu / sidex-vcv Goto Github PK

View Code? Open in Web Editor NEW
2.0 1.0 1.0 87 KB

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

License: MIT License

Makefile 2.65% C++ 80.35% Shell 17.00%
c64 commodore-64 sid sid-register-values midi sysex vcv-rack vcv-rack-modules vcv-rack-plugins mockodore

sidex-vcv's Introduction

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, ...

sidex-vcv's People

Contributors

wipu avatar

Stargazers

 avatar  avatar

Watchers

 avatar

Forkers

xandramax

sidex-vcv's Issues

Compile issue [Win 10]

g++ -std=c++11 -Wsuggest-override -fPIC -I../../../include -I../../../dep/include -MMD -MP -g -O3 -march=nocona -funsafe-math-optimizations -Wall -Wextra -Wno-unused-parameter -DARCH_WIN -D_USE_MATH_DEFINES -c -o build/src/SidEx.cpp.o src/SidEx.cpp
src/SidEx.cpp:9:8: error: 'void MidiOutput::onMessage(uint8_t*, size_t)' marked 'override', but does not override
9 | void onMessage(uint8_t bytes, size_t size) override {
| ^~~~~~~~~
src/SidEx.cpp: In member function 'void MidiOutput::onMessage(uint8_t
, size_t)':
src/SidEx.cpp:10:42: error: no matching function for call to 'MidiOutput::sendMessage(uint8_t*&, size_t&)'
10 | midi::Output::sendMessage(bytes, size);
| ^
In file included from ../../../include/rack.hpp:15,
from src/plugin.hpp:2,
from src/SidEx.cpp:1:
../../../include/midi.hpp:186:7: note: candidate: 'void rack::midi::Output::sendMessage(rack::midi::Message)'
186 | void sendMessage(Message message);
| ^~~~~~~~~~~
../../../include/midi.hpp:186:7: note: candidate expects 1 argument, 2 provided
make: *** [../../../compile.mk:68: build/src/SidEx.cpp.o] Error 1

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.