Is it possible create a virtual mixer on Max Msp to control Pro tools 9?

alersito's icon

Is it really possible? I would like to create a virtual mixer with max and control Pro Tools 9. But pro tools hasnt midi learn for the mixer.

Thanxxxx!

Christopher Dobrian's icon

I suggest emulating a Mackie HUI, which uses MIDI.http://home.comcast.net/~robbowers11/MCMap.htm

alersito's icon

Thankss Christopher but how is it the process? Can you share a example?

Christopher Dobrian's icon

If I'm understanding you correctly, you want to design an interface in Max that will allow you to remotely control the mixer and transport in Pro Tools, correct? So my suggestion was, in general, to choose a MIDI control surface you want to emulate (such as MotorMix or Mackie) and then send/receive the proper MIDI messages -- either through a MIDI interface if you want your emulator to be on a completely different computer, or via the virtual MIDI ports "from Max 1" and "to Max 1" if your emulator will be on the same computer as Pro Tools.

To be clear, I haven't done it myself, and now that I think about it, trying to emulate the Mackie HUI is not the best choice because Mackie and Digidesign are rather secretive about providing a complete listing of the MIDI messages they use. If you have an actual Mackie HUI in your possession, you could sniff its messages by sending its output directly into Max, but that would be rather time-consuming. A simpler way to go is probably to emulate the MotorMix control surface, because that company readily provides the complete MIDI specification for the MotorMix.

Max Patch
Copy patch and select New From Clipboard in Max.

So, first of all, in Max, create a MIDI output object with the output port "from Max 1" specified as an argument, as in [midiout "from Max 1"], and create a MIDI input object such as [midiin "to Max 1"]. Also, to fool Pro Tools into thinking you actually have a MotorMix connected, you'll need to respond to its "active sensing" ping messages. The DAW sends note 0 with velocity 0 on channel 1, and expects to receive note 0 with velocity 127 on channel 1 in response. So you need to make a little patch that responds appropriately. Like this:
[notein "to Max 1"]
|
[sel 0]
|
[144 0 127]
|
[midiout "from Max 1"]
That way, every time Pro Tools sends a ping, your patch will respond, and Pro Tools will be content that it's in touch with a control surface.

If you're interested to see what Pro Tools will send out to the control surface, you could also make a little sniffer like this:
[midiin "to Max 1"]
|
[capture] or [print]

Then, in ProTools, choose Peripherals... from the Setup menu, click on the tab for MIDI Controllers, choose MotorMix as your first controller, choose "from Max 1" in the Receive From popup menu and "to Max 1" in the Send To popup menu. Click OK.

At this point, if you were to be sniffing the "to Max 1" port, you would see a bunch of MIDI from Pro Tools -- sysex messages and controller messages -- telling the control surface what's going on in Pro Tools, plus a steady stream -- every 500 or 750 ms or so -- of MIDI notes "144 0 0" for active sensing pings. That's why setting up your pinger in advance is so useful: it creates the virtual ports "to Max 1" and "from Max 1" and it gets ready to respond to those pings.

Max Patch
Copy patch and select New From Clipboard in Max.

Then you can start sending Pro Tools messages from your virtual "control surface" according to the MIDI specifications of the actual control surface you're trying to emulate. For example, to control fader 1, you'd need to send the message that you have touched fader 1 on the control surface, then start sending fader position messages, which are stated in 512 steps by sending the 0-127 coarse value on controller 0 and the 0-3 fine value (on bits 6 and 7, thus as decimal numbers 0, 32, 64, and 96) on controller 32.
Here's an example:

That much I have actually done and tested, so I know it works. Making an entire virtual control surface is up to you! :)

alersito's icon

Amazing! Thanksss for your help now i can understand better the process!

thankss christopher!

DRKOSS's icon

Thanks for this - very informative!

Expanding on your post - it follows that to Touch Fader 2, you would send the message

1, 15, 64, 67

However, this is not the case - doesn't seem to work.

I also tried sending converted hex info (in decimal form) from the motormix manual straight to midi out, but this didn't work either.

Just trying to figure out how I can format the hex messages in the morotmix manual in a way that i can send from Max to Pro Tools.

Thanks!!!

alersito's icon

@DRKOSs my problem is with knobs of panning and EQ. To move faders its easy using ctlouts.

Would be nice have an expert here to explain something like Sysex!

DRKOSS's icon

alersito - can you post an example of how you got separate faders happening? Thanks!

alersito's icon
Max Patch
Copy patch and select New From Clipboard in Max.

Patch for transport section

Max Patch
Copy patch and select New From Clipboard in Max.

And a mixer without knobs (the problem) for Eq and Panning.

DRKOSS's icon

Hi - thanks- taking a look now. You say the faders work in this patch? Can't seem to get the faders or transport functions to work here.

Cheers

DRKOSS's icon

Actually - this is a generic CC patch - right? Not for HUI....

Christopher Dobrian's icon

@DRKOSS I see two flaws in the message you say you're sending to the MotorMix. One is that you have too many commas, so the meaning of your message is now incorrect. The other is that you have changed the last number to 67; it should be 47. The correct message to ctlout would be "1 15, 64 47" to touch fader 2, and "1 15, 0 47" to release it.

DRKOSS's icon

@Christopher Dobrian - thanks for taking a look. Tried the suggested change - still no dice. First fader works great, and none of the remaining 7 (1-7) work. Any ideas?

thanks!

DRKOSS's icon

and to clarify - using the motormix protocol in protools - sending hui messages from Max to ProTools.

thanks!

Christopher Dobrian's icon

Yes, sorry, I "misspoke"; I meant "sending to Pro Tools".

Max Patch
Copy patch and select New From Clipboard in Max.

I'll bet almost anything your problem is that you are not changing the control number on which you're sending the fader values. That is, you not only need to touch the correct fader by sending the messages I mentioned in my previous post, you also need to send its values on the correct fader-specific controller numbers. See the revised example below, which I have tested and works for me. In this version, you choose your fader number, touch it, then send it values. (Then release it, choose a new fader, touch it, send it values, release it, etc.)

DRKOSS's icon

Thanks so much - with that kind of betting you should go to vegas.

Next time you are NYC - beers are on me.

cheers!

muetdhiver's icon

Hello to all of you,

I wish to thank you for your contributions.
I was trying to make an automation system using MaxMasp in order to control a protools playing two different loops according to a certain time.
I used some parts of the excellent tutorials of Peter Elsea
But I could not use the MTC. Know everything works.
What a significant saving of time !

Alban G.

Emiliano Brescacin's icon

I Guys i just figured out how to control the protools pan from Max.

Reverse engineering from a 01v96 Using HUI protocol.
Just set the first port in the peripherals to HUI from max1 to max1
and the second to HUI from Max2 to Max2

All the best.

Max-to-Protools-Pan.zip
zip
Reese Donohue's icon

Faders, mute, solo, track select, and pan all working well following the info above.

Has anyone tried controlling plugins using the Motormix HUI protocol ?

bc's icon

Has anyone gotten any further on this? More specifically, does anyone know how I would record enable each track?

Adam Primack's icon

@Reese or anyone above- are you able to paste a patch with solo working?

MuShoo's icon

@Adam Primack: For now, (it's unsupported, so who knows when it'll disappear) check out the Command 8 protocol. Very nice plugin control features. Buuuuuuuut it's also proprietary - you'll need to reverse engineer it using an actual piece of Command 8 hardware.

Chris Rossetti's icon

This is a pretty old thread....... But has anyone figured out how to advance the bank of faders over HUI in Pro Tools from Max MSP? This is the only thing stumping me at this point.