Hi, I’ve been playing around with writing my own modules, and the first serious one is a module to use my Arturia Drumbrute or BeatStepPro as the master clock, as well as replicate the two buttons for “stop” and “pause/play” via midi.
I had no problem bringing the clock in, but reflecting the button behaviour has been problematic.
The buttons on the Arturia have 3 states:
- Stopped - Stop button is lit, sequencer reset to beginning
- Playing - Pause/Play button is lit, sequencer playing
- Paused - Pause/Play button is flashing, sequencer is paused where it is
The issue is when in the playing state pressing either button results in the same Midi system message (stop) being sent. At this point there seems to be no way to determine which button has been pressed. (now this can be dealt with using reset on start, but I’m trying to show the button status in the rack module)
So a bit of snooping on the midi from the BeatStepPro showed me that MMC messages were being sent of the correct type (Play, Pause, Stop) but these weren’t coming out of the midi driver in vcvrack.
And then I found this bit of code in rtmidi.cpp, line 42
// Users have reported that some MIDI devices can send messages >3 bytes. I don't know how this is possible, so just reject the message. if (message->size() > 3) return;
Looking at the midi specs MMC messages are 6 bytes long, so that’s why they are dropped.
I’m a beginner at MIDI, module development AND C++, so any/all of the above might be wrong, but I have a few questions:
- Are there any plans to add MMC support in future (v2/3)?
- Are Arturia devices unusual in their use of this (hence no support)?
- What’s my best option going forward ? I’m currently thinking about writing a midi driver to cover just what I need - clock & MMC
Anyways, this has been a learning experience, so might just write the driver for fun…
Info on MMC here.