You are here

Midi machine control (MMC)

Hi,

I noticed qtractor is now MMC enabled. I tried with my m-audio prokeys 88, which (according to the manual) can send some MMC events. I connected prokeys to qtractor's control midi-in, then I tried buttons play, stop and rewind on the keyboard, but there was no effect. Is there any additional configuration to make it work?

On the other hand, can anyone give me some recommendations for an MMC control surface that is known to work in linux and with qtractor? Nothing fancy really, just some play, record and similar buttons to work with a sequencer.

Thanks,
Marko

Forums: 
rncbc's picture

Hi and welcome.

MMC is featured in Qtractor for quite some time now (see MIDI Machine Control (MMC) Fun)

However, its implementation has not been tested with anything else but my Tascam US224 control surface, via us428control (in alsa-tools) and guess what? most of the pertinent code was written by yours trully :) So it might just happen that is kind of a specific or narrow-minded implementation and just don't work with anything else. :))

It would help whether you can dump what MMC events are being actually sent by your M-Audio Prokeys 88 keyboard. Try using aseqdump to trace what's going on and paste it here, specially the ones related to the start, stop or rewind buttons. You can also try rebuilding qtractor for debug (./configure --enable-debug) and watch what is being captured on the console as MIDI In...

BTW. does it work with Ardour?

Hope to help you (and me as well:)
Cheers

aseqdump says "continue" for start button. Then Clock event is repeated until stop button is pressed. Rewind is the last one - Song position pointer 0. That's all the commands the keyboard can handle :)

Source_ Event_________________ Ch _Data__
0:1 Port subscribed 129:0 -> 133:0
130:1 Continue
130:1 Clock
130:1 Clock
130:1 Clock
130:1 Clock
130:1 Clock
...
130:1 Stop
130:1 Song position pointer 0

Do you also need qtractor debug console output?

I'm building ardour right now and will report back.

Thanks

rncbc's picture

Aha! That is not MMC. It's more like MIDI song pointer positioning.

MMC are sysex commands, for example:

F0 7F xx 06 01 F7 = MMC STOP
F0 7F xx 06 02 F7 = MMC PLAY
F0 7F xx 06 04 F7 = MMC FFWD
F0 7F xx 06 05 F7 = MMC REW
F0 7F xx 06 06 F7 = MMC REC STROBE
F0 7F xx 06 07 F7 = MMC REC STOP
F0 7F xx 06 08 F7 = MMC REC PAUSE
F0 7F xx 06 09 F7 = MMC PAUSE

Qtractor does not recognize MIDI song position. But it might do sometime ;)

Cheers.

Thanks for sysex examples, I'll examine specifications before buying any new hardware. Also thanks for comments on the Tascam unit. It looks very nice on pictures, though I don't really need additional audio/midi ports, but it sure seems great for a laptop.

Cheers. :)

rncbc's picture

Yes, the US-224 is a great companion for a laptop, in deed. But take note that its MMC features aren't really provided by the hardware itself (firmware is the right word).

In fact, in the Linux case at least, all control signals are interpreted and converted into MMC commands by us428control, a tool-in-the-middle (so to speak) that is responsible for all that kind of dirty work. So that, you see, this might be a particular feature in the Linux US-x2y stack and not originally provided by Tascam (although I would suspect its Windows/MacOSX driver might do something quite similar, more or less).

All that to say there's a high probability that, even though a particular vendor brags about eventual MMC support, you must ask for sure whether that support is in the firmware OOTB and not implemented at the host OS driver side, in which case you're certainly out of luck. The US-x2y is the only Linux stack I know of doing that stuff, thanks to Karsten (and me :))

Byee

I did some research myself as well and the situation seems preety bad. All the relevant hardware doesn't even mention mmc. Everything seems be done through drivers, customized and tweaked for the major sequencer/DAW suites. There seems to be no standard at all. On some manufacturers forums, there is a handful or requests from linux users (for specifications and support), none taken seriously. So yes, us428 seems to be the only choise. Or perhaps some alternatives... like having another keyboard and mapping some shortcuts. :)

See you around and thanks.

Hi,

Ardour plays and stops. However, it does nothing on Song Position 0 command and also it doesn't seem to respect tempo from mmc clock events. Anyway, I'll try to get a more featureful (more buttons :) ) mixer surface, can't do much with only play/stop.

Can you please comment on using Tascam us-224? I never really used such a control panel, I only know that I would very much appreciate some kind of control that doesn't involve moving away from the instrument to tackle mouse/keyboard combo. Can you arm tracks, set punch in, record, play and move through tracks?

Thanks for your effort and cheers,
Marko

rncbc's picture

The US-224 is a USB1.1 audio/MIDI interface with a control surface. Linux support is provided through the ALSA snd-usb-usx2y module which applies as well to smaller US-122 and bigger sister US-428.

AFAICT these are pretty good hardware but I'm afraid already phased-out by Tascam, so most probably you may only find those second-hand. Avoid the newer US-122L and US-144 if you have Linux in mind. Those are not supported in ALSA.

The current state of the US-x2y line of devices in Linux is mostly due to Karsten Wiese stoicism. Major kudos must go to him, as he is the man that made it all work on Linux and specially on JACK, where a special dedicated back-end is included as to make use of the so-called raw usb mode achieving near-limit low latency which other USB devices only dream of :)

Cheers.

Old thread but I have a related question.
what i want to do is use mididings to generate (based on incoming midi from my NanoKontrol) sysex to then send to Qtractor for transport control.
I'm wondering if this is possible and what are the transport sysex codes that Qtractor would be expecting. Tried the ones listed above with no success.
Thanks for any help and for Qtractor!

rncbc's picture

the codes are exactly the ones listed above; check MIDI Machine Control for details.

also make sure you have all View /Options... /MIDI /Control /MMC options set properly. for instance, MMC mode should be set to "Input" or "Duplex", device to "(Any)" and if you opt for dedicated MIDI input/ouput ports then you should connect the NanoKontrol output to the dedicated Qtractor/Control MIDI input port.

hth.
cheers

Thanks Rui for the speedy reply. I would just use the Nano straight into qtractor but I want transport control. I think thats only possible through mmc (?). I do have Qtractor set up for mmc and control input and everything routed correctly. I'm getting a mididings syntax error when trying to generate sysex from my Nano input. eg,
from mididings import *
config(
client_name='NanoSysEx',
in_ports=[
('Nano.In','24:0')
],
out_ports=[
('NanoOut')
],
)
run(
####### Nano Midi to MMC ########
Filter(CTRL) >>
CtrlFilter(41) >>
SysEx(F0 7F xx 06 02 F7) >>
Port('NanoOut')
)
so I'm probably doing something wrong there. Need to ask on mididings forum.
Thanks Rui!

rncbc's picture

i don't know much about mididings but i believe the error lies in the xx that you shall substitute by a device-id (a number in hexadecimal, between 00 (0) and 7F (127).

otoh. you can also use SPP (Song position pointer) and START/STOP System real-time messages as playback transport control commands, if you like.

hth.
byee

Thanks Rui. was able to send mmc via mididings' 'send_midi' cli utility. very cool! just used 7F for xx as thats what qtractor control >> aseqdump gave me. is there a sysex for 'backward'/'forward'? i'm thinking maybe not as it seems that locates dynamically to edit head, markers, end, etc.. as well as 00:00:00. also will def look into spp. is that also sent via sysex?
Thanks so much for your help!

rncbc's picture

standard MMC says, as long ago and previously mentioned:
F0 7F xx 06 04 F7 = MMC FFWD (fast forward)
F0 7F xx 06 05 F7 = MMC REW (rewind)
nb. qtractor implements it as toggles, as if good old tape recorder buttons were about :)

re. SPP. START/STOP, no those aren't sysex.

why don't just read the MMA standard? no offence, but these are pretty universal, late 80s MIDI 1.0 system common/real-time messages--your device vendor should know that better :)

hth.
cheers

I was referring to the backward/forward transport functions in Qtractor not fast forward/rewind. But I think that answers my question.
Will read up on midi/spp. Thanks again!

Add new comment