JL Cooper RS232 & Pro Tools 11

ibanman555

2013-11-19 19:53:06

Hello to everyone! I'm new here but not new to MT. I've used it on occasion with great success, however I am diving in head first into another project that seems challenging at best. I hope some of you can help clarify some things and help me get this project up and running.

I've recently acquired 4 JL Cooper ES 8/100 control surfaces to be used with Pro Tools. These terminate to RS232 connections, and I have successfully integrated them into my Cpu via PCI Express card. These controllers have standard and proprietary MIDI messages that come out, but that's alright, as MT could translate those messages to what I need.

These controllers serial data is converted to midi via a software program call 'Hairless Serial <> Midi'. My understanding is that I would need to run 4 instances of this software for all 4 control surfaces. It would be nice to eliminate that part of the chain but I'm pretty sure I cannot. Additionally, since I am using 4 controllers, would I need to make 4 separate instances of translation in MT? I'm hoping not.

So, due to this situation I need to virtually send the output of the controller to MT. And after translation, output that signal into ProTools, and back again, so any automation from PT will occur on my controllers. Because of the additional "virtual cabling" I am looking at LoopBe30 as an additional source of that Midi I/O, as MidiYolk isn't seen in PT on a 64 bit system.

The next problem is that in order to use these I need to send PT a HUI ping. I just can't wrap my head around how to set up a timer in MT to output that ping letting PT I want to play. Can anyone explain like I'm a child how this is done? The manual confuses me.

Sorry for such a heavy load, and I hope I explained it well enough to start. Any assistance / advice is greatly appreciated. Thanks all!!

DvlsAdvct

2013-11-19 21:47:27

Hi ibanman555

Thanks for the good questions. As far as your first:
since I am using 4 controllers, would I need to make 4 separate instances of translation in MT? I'm hoping not.
It depends on how the Hairless Serial application outputs the messages from the 4 controllers. From what I can get from their GUI, what I would do is connect each to a different Virtual Port from Bome MT. That should allow each controller to communicate on its own pipe without any conflicts. Just set up a different preset for each controller so the messages are received and sent individually. Make sense? Now, this might not be necessary if each controller sends on a separate channel, as routed by Hairless Serial. Do they all send on the same MIDI channel when you connect them all? If so, then things get a little more complicated as far as translation goes, but it should still be doable.

As far as your second question:
The next problem is that in order to use these I need to send PT a HUI ping. I just can't wrap my head around how to set up a timer in MT to output that ping letting PT I want to play. Can anyone explain like I'm a child how this is done?
How often do you need to send this ping? Can it be sent after Pro-Tools loads? Or does it need to be sent with every command?

ibanman555

2013-11-20 13:14:52

Thanks for the reply DvlsAdvct,

I've done a little more experimenting last night, and this is what I've found.

I will need to run 4 instances of Hairless M-S. I can only assign virtual ports for each controller per instance of the program. I'm starting with 2 out of the 4 controllers to start, just to see what happens. I was able to send MIDI from my controller into MT and back from MT to the controller via LoopBe30 ports. Everything appears to be working properly there. The next step is to try this signal flow...

Controller>Hairless MS>MTranslator>ProTools.... and then back again. I would imagine I would need to go back thru MT so the MIDI messages sent FROM ProTools are the appropriate messages back into the controller. If the controllers MIDI messages are configured to work with ProTools as is (buttons, faders, automation) I assume I could skip some steps... here's to hoping.

However, I cannot do any of this without sending the ping, as PT wants to see a constant connection with the controller via that ping. From what I've read online, ProTools sends a ping via HUI (Note C-2, velocity 0) at 800ms intervals. It could be sent after PT loads, but not long after. When PT boots up, it looks for all controllers, so I would imagine sending the ping from the Controller (MT) before starting ProTools would be a better idea.

I'm a little confused on how to set this up however. I've set up a new translator with the incoming signal sending 90 00 00 for the ping.

Image

On the outgoing tab, I choose Timer, and set it up as you see above. I see the 'Timer In' light functioning, but the 'Timer Out' is not. How do I send this signal out into PT?

DvlsAdvct

2013-11-20 22:38:44

Alright, just so you know, you don't need to use the LoopBE30 ports, but can instead use the MT Virtual Ports. We recommend them when using MT since they are optimized and extremely stable. You don't HAVE to use them, obviously, but it may serve you better.

As far as your timer goes, you need to create a translator which responds to the timer. Right now, when MT receive 90 00 00 it starts triggering them timer every 800ms. What you want is to have it be something more like "On Project LOad" for the incoming signal, and then create a translator like:

Code: Select all

Translator 1: Timer HUI
Incoming Message: Ping
Outgoing Message: 90 00 00
Now, a good question is: do you know if Pro-Tools sends a PING request out via MIDI, and if so, do you know what that signal is? If so you can have it be a call and response, where MT responds with the signal after every request Pro-Tools makes.

ibanman555

2013-11-20 23:24:11

DvlsAdvct wrote:you don't need to use the LoopBE30 ports, but can instead use the MT Virtual Ports.
I agree, and I plan to. Upon seeing that there are only 5 virtual ports for MT, I didn't think I would have enough MIDI I/O for all of my controllers and to send and receive to ProTools. I will redo it all with the available ports in MT... and thinking about it now, there are 5 sets of I/O, correct?
DvlsAdvct wrote:Now, a good question is: do you know if Pro-Tools sends a PING request out via MIDI, and if so, do you know what that signal is? If so you can have it be a call and response, where MT responds with the signal after every request Pro-Tools makes.
ProTools does send a ping request via MIDI. I believe the signal is Midi Message 90 00 f7 (or 90 00 00). I'm sure it's one of those. It would be ideal to have a call and response type of situation set up here, absolutely. How would I go about doing that as well?

I will try what you mentioned (Timer) above to hopefully make some headway with this...

DvlsAdvct

2013-11-21 03:00:01

You would need to set up a translator which Pro-Tools is pinging to (that would be the hard part) and have it be something like:

Code: Select all

Translator 1: Ping From Pro-Tools
Incoming Message: 90 00 7F
Outgoing Message: 90 00 00
Your Input port would be from Pro-Tools and your Output Port would be back TO Pro-Tools. That make sense?

As of now, yes, there are only 5 virtual MIDI ports. Oh, but that could cause a problem if you need 4 to go TO Pro-Tools and 4 to come back... hm... you might be better off using your LoopBe setup if it's cleaner. Wouldn't want to create an unnecessary feedback loops.

ibanman555

2013-11-21 16:13:46

Great! Yes this all makes sense.

I was able to test this, and was partly successful. However, I need a little clarification.

I first set up a call and response as you had suggested:

Translator 1: Ping from Pro Tools
Incoming Message: 90 00 7f
Outgoing Message: 90 00 00

If the message from PT isn't 90 00 7f, will it not translate and send the outgoing message?

In MT, I could see that there was a constant ping coming from Pro Tools, however it wasn't being translated to the Outgoing message and back into Pro Tools. This led me to believe that the actual incoming message from PT was not 90 00 7f. I swapped the messages and then I was seeing the incoming ping from PT, translating, and going out back into PT. So, to me that appeared to be functioning properly. However, I am still getting a message from PT that it isn't connecting to HUI still... not sure why.

Other than HUI, the other MIDI Controller protocol option is Command 8 (which is a Digidesign specific controller for PT). This was transmitting a ping as well, but again, I needed to swap the Incoming and Outgoing messages back to your suggestion above. I also noticed the ping occurred at a faster rate. Alas, this too wasn't connecting. It suggests to powercycle the HUI or Command 8 controller, which I emulated by exiting out of MT and reopening, and haven't gotten a connection error. I need to verify this again to see if it is indeed connected now, and attempt to send and receive messages from PT. I'm going to do that now...

DvlsAdvct

2013-11-21 16:37:54

My example for the ping wasn't definite. If those messages need to be switched then definitely switch them. Since I don't have these tools I can't adequately test on my end, but keep us updated, okay?

ibanman555

2013-11-21 16:49:35

Sure thing!! I will certainly have more questions coming up... but I am still testing. Was I correct in thinking that if PT sends out a specific ping, that I need to make sure my Incoming Message is the same?

DvlsAdvct

2013-11-21 16:53:58

That I have no idea. Those kinds of communications are generally hidden from the end user. I'm sure there is a call and response but I am not sure what it would be. If you have MIDI-Ox you can try and monitor the MIDI communications and see what goes back and forth. That might be your best bet, in fact.

ibanman555

2013-11-21 17:19:00

Understood. That was actually my next step using MidiOx... because I found this...

Image

This user states the midi message is "C-2, velocity 0" and my incoming message is C-1. I'm not sure what the hexadecimal code is to get C-2... :?

Thinking maybe its a typo or indeed C-2.

If I change my incoming message to anything but 90 00 00, MT no longer translates and transmits an Outgoing message into ProTools... I'll try every single code if I have to, but hoping it doesn't come to that... more on the way...

ibanman555

2013-11-22 02:23:38

Woah... Ok, here's where I need some help. But I feel like I may be getting somewhere. :shock: View the attached texts to see the full process.

I've attached 2 files showing what Pro Tools is sending when looking to sync up with an external contoller (HUI and Command 8 )

When I activate the HUI protocol in Pro Tools, It pings this message for about 10 seconds...

00000041 2 -- 90 00 00 1 C -1 Note Off

Then when the error pops up that it cannot connect, this shows these...

00004407 2 -- F0 Buffer: 19 Bytes System Exclusive
SYSX: F0 00 00 66 05 00 12 00 50 72 65 73 73 20 61 20 63 68
SYSX: F7

Then returns to the first line of code.

With the Command 8, as seen in the text file, a whole ton of code displays instantly as seen in the text, then pings this code...

000264AB 2 4 90 00 7F 1 C -1 Note On

I'm at a loss and not very familiar with all this or how to communicate with it... I hope you big guns can help me out to understand what PT is looking for and maybe how to get MT to at least let PT think its connected to a controller. :|
Attachments
Pro Tools Command 8.txt
Pro Tools Command 8
(38.43 KiB) Downloaded 233 times
ProTools HUI.txt
Pro Tools HUI
(7.58 KiB) Downloaded 224 times

ibanman555

2013-11-22 17:36:36

Hey again... so I have an update and a question that may help.

I've started from scratch, looking carefully at what is actually coming out of PT in regards to the ping. It is indeed sending MIDI Message 90 00 00 from PT, but I noticed it is Note Off. That ping is coming into MT under the same Midi Message, however it is labeled Note On.

Image

The response message I am sending is 90 00 7f, out of MT, also Note On. I am curious if I am able to change my incoming and outgoing messages to 'Note Off', that I will see a connection. Problem is, I can't quite figure out how to transmit my outgoing message as Note off... Thoughts(help)?

DvlsAdvct

2013-11-22 17:41:18

The reason it is labeled a note off message is because the first number in the first byte is 9. The 00 and the end means, technically, it is a note on message at a value of 0. For a midi message to be a note off it must begin with an 8, so the same message as a note off would be 80 00 00, or 7F, possibly.

ibanman555

2013-12-03 02:24:01

Ok, I'm not sure what happened but I was having lots of trouble to start, and how I am getting somewhere.

I'm running PT 10.3.7 on Windows 7 64 bit. I also have a trial version of PT 11 running on the computer as well. Right now I've only been successful with PT10. Using Bome MT, I've set it up to receive the ping from PT (90 00 00), translating it to 90 00 7F, and outputting back to PT via HUI. It is accepting the ping and not giving an error message.

I then transmitted my CH 1 'Mute' button, translated it to what PT wants to see when you are to mouse click the mute button on that channel, and I am able to toggle mute on and off. I am then sending the midi message that is produced when the 'Mute' button is pressed in PT, translating that back to what my controller wants to see, and getting the LED to turn on and off in sync with the mute button in PT. Whew... Gonna be a lot of programming but it's thankfully working!!

The last step will be the faders, and hopefully with everything connected and happy, they will translate as well...

smfelton

2013-12-04 02:30:11

Hi I've just finished creating a 16 channel touch screen controller for Pro Tools, I've mapped most functions, except vu meters and scribble strip as currently the touch screen application doesn't support them.
I have 16 faders with solo mute select and record enable, full transport and jog wheels , cut paste copy delete, save etc etc if you need any help just drop me a message.

smfelton

2013-12-04 14:05:21

Here is a screenshot of the mixer
Attachments
mixer.jpg
mixer.jpg (428.92 KiB) Viewed 13714 times

ibanman555

2013-12-04 19:00:18

Very nice!! What program are you using for in interface? I do have a question maybe you could answer. With your setup, I assume you are using HUI in Pro Tools. Are you using all 16 channels on the first HUI peripheral connection in Pro Tools? I know that when you assign the "send" and "receive", it give's an option for 8 channels only. What I am hoping to do is set up my first 16 channels this way, instead of the first 8 only. That way, in the future I will have the ability to assign the 3rd and 4th HUI 'ports' to other control surfaces (I have a total of 32 channels).

smfelton

2013-12-04 20:48:11

Hi the interface is made with Smithson Martin's Emulator Pro, it is a bit limited still in what midi commands it will send, for instance at the moment I haven't found Pitchwheel. What I have is everything leaving Emulator on one midi port, as that is all it has, MT then splits these out to blocks of 8 for HUI for Pro Tools. All the editing, transport etc. go via the first port and the channel strips go 8 channels per virtual port. I'm hoping to increase my design to 24, as it's already done in Midi translator, I just have to rethink how I have configured Emulator.
At the Pro Tools end you are limited to the HUI protocol this will only allow 8 channels per port, so obviously 3 virtual ports from MT will give you 24 Channels and 4 Virtual ports from Midi Translator will give you the 32 channels you need, it does seem like a lot of work but really its a lot of repetitive copy and pasting as everything is similar for each channel, and the same for each block of 8 but with a different output port.
Hope that helps a bit...

ibanman555

2013-12-04 21:10:03

Very cool!! I was initially planning on using a touch surface for an interface quite like you have, using 2nd Gen Ipads. As of yesterday I've successfully configured all the buttons ( mute, solo, rec ready & select) and all 8 moving faders functioning properly. You're right about the copy-paste. Once I got going all the messages started making more sense. BMTP is absolutely invaluable... many Many thanks for this gem!!

So it appears that I can only use 8 channels per midi Port in PT... that's what I assumed, and that's alright. All I really wanted was to get these fantastic control surfaces to work with my studio :)

smfelton

2013-12-05 18:39:31

After a bit of fiddling and completely ignoring the Mackie protocol I now have a fully functioning touch 24 channel mixer...... :D
Attachments
Wood Mixer.jpg
Wood Mixer.jpg (500.85 KiB) Viewed 13635 times

ibanman555

2013-12-05 18:57:12

Looking good my friend... what version on Pro Tools are you using? Can you elaborate what you mean by ignoring Mackie protocol?

smfelton

2013-12-05 19:02:24

Thank-you. I'm using Pro Tools 11 HD, the Mackie Control Protocol only defines 8 channel strips and so as the touch software only has one midi port i've had to invent notes and channels for it, where as I had started by following Mackie Control midi assignments. I have of course have had to follow HUI strictly for the input to Pro Tools, but thats ok as I am using 3 virtual ports from Midi Translator.

ibanman555

2013-12-20 21:51:46

Ok, so I'm just about finished programming all of my control surfaces, and everything appears to be functioning fairly well. The only part I'm stumped on (and I've tried everything I know) is getting the jog wheel to output the proper messages.

When sniffing the jog wheel, the counterclockwise motion causes the second value to change the faster I spin the wheel, from the highest value:

81 7F 00
81 7E 00
81 7D 00 etc...

And the clockwise motion causes the second value to change likewise, however starting that the lowest value

81 00 00
81 01 00
81 02 00 etc...

This is how I have it set up:

Code: Select all

Translator 12.10: Jog
Options: stop=false
Incoming: MIDI 81 pp 00
Rules: 
  oo=-127-pp
Outgoing: MIDI B0 0D oo
The rule is there because the movement of the wheel was causing the cursor to go in the opposite direction. Inverting the message made it correct. What I need to figure out now, is how to change when the value is high (7F, 7E, 7D etc.) to another value that won't cause the cursor to shoot in the other direction immediately. Here's the reverse engineered findings of the jog wheel and what it's 'supposed' to output...

Image

Hopefully this all makes sense to some of you, and you could point me in the right direction as far as how to assemble the rules to make this work. :)

ibanman555

2013-12-21 21:07:44

Figured it out...

If pp==127 then oo=64

Works like a charm.

SkinnyP

2014-01-21 20:36:57

Heya smfelton,

That's a super nice PT HUI controller you've got there, kudos to you! I'm essentially doing the same thing, and have Pro Tools responding to almost all commands of the Mackie HUI protocol.

The only thing I can't get working is assigning the automation mode to a channel (eg set channel 3 to 'Read', 'Write', 'Touch', 'Latch', 'Trim', or 'Off;'). Did you ever figure that out?

The 'Mackie Control for Pro Tools Users Guide' (http://www.mackie.com/pdf/mackiecontrol_pt.pdf), states that you simply hold one of the automation mode buttons, then press the v-pot button of the channel for which the mode is to be assigned. So my guess was that the automation mode buttons and v-pot button (aka 'v-sel') should transmit the same kind of message as, say, mute or solo (which I do have working).

With that in mind, say the user wants to set the 3rd channel to 'Latch' automation mode. I would send this to Pro Tools:

b0 0f 18 (in zone 0x18 (automation)...)
b0 2f 41 (...press button, port 0x01 (latch))

b0 0f 02 (in zone 0x02 (3rd channel)...)
b0 2f 45 (...press button, port 0x05 (v-sel))

b0 0f 02 (in zone 0x02 (3rd channel)...)
b0 2f 05 (release button, port 0x05 (v-sel))

b0 0f 18 (in zone 0x18 (automation)...)
b0 2f 01 (release button, port 0x01 (latch))

Unfortunately, Pro Tools doesn't seem to respond to this at all. I believe I also tried sending the 'channel select' button press/release as well (zone 0x02, port 0x01 for the example above) with no luck. If you've any insight, I'd be super grateful.

Cheers,
-SkinnyP

smfelton

2014-01-21 20:58:29

Hi yes I've got that working, if you can wait until the morning I can let you know what you need to do.
Essentially there are two parts (at least how I do it) each channel has an automation 'enable' button, and then there are the 8 automation buttons ( ie. write, latch etc.) So you select which channel or channels, this latches, then select the mode button, it then changes the automation mode on all the channels that have the automation button selected. I studied a number of other controllers and this seemed to be how they did it.
Anyway I'll get back to you tomorrow when I'm behind my computer.
Regards
Shane

SkinnyP

2014-01-21 21:06:12

Shane,

You RAWK! ...ahem...I mean thanks!

-Paul

smfelton

2014-01-22 17:31:40

Ok, first part is the Automation enable for each channel

Channel 1:
B0 0F 00 B0 2F 44 - on
B0 0F 00 B0 2F 04 - off
.
.
.
Channel 8:
B0 0F 07 B0 2F 44 - on
B0 0F 07 B0 2F 04 - off

Then the automation mode

Read
B0 0F 18 B0 2F 42 - on
B0 0F 18 B0 2F 02 - off

Write
B0 0F 18 B0 2F 44 - on
B0 0F 18 B0 2F 04 - off

Touch
B0 0F 18 B0 2F 45 - on
B0 0F 18 B0 2F 05 - off

Latch
B0 0F 18 B0 2F 41 - on
B0 0F 18 B0 2F 01 - off

Off
B0 0F 18 B0 2F 43 - on
B0 0F 18 B0 2F 03 - off

Trim
B0 0F 18 B0 2F 40 - on
B0 0F 18 B0 2F 00 - off

Hope this helps
Shane

ibanman555

2014-01-22 17:46:11

Hackaday

smfelton

2014-01-22 17:57:08

ibanman555 wrote:Hackaday
??

ibanman555

2014-01-22 18:00:34

That's what I say when someone hacks one of my threads... :D

smfelton

2014-01-22 18:05:59

My apologies, didn't mean to cause any offence (I assume hacking is same as hijacking), just trying to help :D

ibanman555

2014-01-22 18:09:47

Actually it's half about its original post... Pro Tools. And yes. I'm retarded. It is called 'hijacking', isn't it?? Oh well. Carry on my friends, I need to start a new post anyways regarding some other issues I've been having. Needless to say, my interfaces work wonderfully. I would change the title to something more relevant to our project if I could... :wink:

SkinnyP

2014-01-22 23:31:42

Hi Shane,

This is great, thanks!

In short, I was transmitting the right HUI messages, for both channel-auto buttons, and auto-mode buttons. My problem was that I didn't understand how channel automation mode worked! I thought the Mackie guide was saying the channel "v-sel" button (aka 'v-pot click') was used, instead of the channel-auto button.

All sorted now, I've got Pro Tools responding. Though it will take some practice to grok the subtleties of this operation (select-hold mode button while clicking channel buttons, and vice versa).

Again, thanks very much Shane. And to anyone else reading, I'll be posting my project soon. It's evolved quite a bit from the Allen & Heath project, with which I started. So ping me if you're interested.

-Paul

SkinnyP

2014-01-22 23:37:59

Crud...and yes sorry for hijacking the thread. Mea culpa. :(