Is it possible to filter out MMC commands to Cantabile?


I know I can filter MMC events within Cantabile. But can I somehow e.g. make a filter so that if say and MMC Start comes in, I prevent Cantabile from running? But still have the event there and perhaps routed to a plugin? Is that possible?

Reason for asking in the following - for live use I do need MMC start and stop. But my controllers send an MMC pauze if I hit the Start button twice (these are start/pauze buttons) and I have no use for pauze. Even worse, if I (accidentally) hit start when stuff is running then I certainly don’t want things to pauze … Had that happen to me yesterday and looking for ways to prevent that.


Perhaps setup a filter at the MIDI port definition? Tools - > Settings - > MIDI ports


Hm… I don’t want the MMC command to disappear completely; I just want Cantabile as a host not to react to it. I may want to have some plugin react to it… would that be possible?


Hi Tom,

I’m not sure I can help but wondered if you have a screen shot of your MMC bindings? I am curious as to your current route from the controller to C3’s transport hierarchy.

Thanks …



@dave_dore : that’s the thing. I see no route from midi input to Cantabile as a host. I can draw routes from any midi input to any VST, but I get the impression Cantabile listens to MMC commands in the background, without a route. If there were one I could filter out the MMC commands that I want silenced.


Hi Tom,

OK, so without any specific routing or bindings the MMC from the controller runs the Main C3 transport. The MMC is I think a form of sysex message so that would explain it not appearing. Tough one, but Brad might have some ideas on having filters for this case.




The MMC messages are clearly visible in the midi monitor - I can see e.g. that the start/pauze button flips between sendindg start and pauze. I just don’t know how to stop Cantabile listening to that message, while retaining the message in the routing to VSTs.


MMC is SYSEX, right? (I think) Like some of us have a Notes MIDI port and a Controls port separately. Maybe a third port for SYSEX? Then you could route it more specifically and keep it from “leaking” into other routes. I’ll experiment this afternoon with Behringer X-touch.


I can filter it in midi routes - I just can’t find how to prevent Cantabile as a host listening to it.


Hmm. I would think C3 wouldn’t listen unless there was a Binding. Interesting problem!


Exactly, I get the impression Cantabile is reacting to MMC run/pauze without any explicit route or binding. I may be wrong, but I can’t figure this out any other way.


I’ll have a look this afternoon. BTW, I’m US Central


Hi Tom,

Richard is right, MMC is sys-ex so you can use a sys-ex patcher to filter the pause messages by making C3 think Pause is also play. Go to the initial input port in option and create a MIDI sys-ex patcher filter. I used the onscreen keyboard to test it and it produced the following sys-ex messages for Play (F0 7F 7F 06 02 F7) and Pause (F0 7F 7F 06 09 F7). The patcher is loaded with the pause as the incoming decoded message and re-encoded to a play message like so


or just suppress the sys-ex for pause with a filter like this


The play/pause button should now only produce play codes. This worked properly on my test rig so I hope it will do the trick for you too!



Hm… thx… I’ll have to play with this some more then.


I didn’t think that you wanted to be able to use it on other vst’s (from your OP) so that would be a different question to solve. I was only trying to correct the C3 system MMC problem. I need to think on how to have both …


Hey Tom,

I think I see the best way for you to get the task done so that you have control over the MMC command routing. First you would want to make sys-ex filters for each MMC command at the source input of the controller port. These filters would suppress the sys-ex and at the same time convert the messages to CC messages you can then use to make transport bindings on a unique basis. Here are the 3 main filters for stop,play and pause


Your bindings for the main transport could be anywhere after these conversions but I show them here in the background rack in a bindings group

Set up this way you could now route pause commands only to the Vst’s you wanted while filtering it from the main transport.

FWIW , here are all the codes for MMC with labels in case you want to add more filters.

F0 7F 7F 06 01 F7 MMC Stop
F0 7F 7F 06 02 F7 MMC Play
F0 7F 7F 06 03 F7 MMC Deferred Play
F0 7F 7F 06 04 F7 MMC Fast Forward
F0 7F 7F 06 05 F7 MMC Rewind
F0 7F 7F 06 06 F7 MMC Record Punch-in
F0 7F 7F 06 07 F7 MMC Record Punch-out
F0 7F 7F 06 08 F7 MMC Record Ready
F0 7F 7F 06 09 F7 MMC Pause
F0 7F 7F 06 0A F7 MMC Eject
F0 7F 7F 06 0B F7 MMC Chase
F0 7F 7F 06 0F F7 MMC Reset




@dave_dore : WOW that is over and above helpful! Big thank you - I’ll play with this idea tonight!


Wow, @dave_dore! Excellent! Gold Star!