bitfocus / companion-module-requests

Repository for tracking module requests
97 stars 10 forks source link

Midas PRO2 #371

Open Onescu9 opened 3 years ago

Onescu9 commented 3 years ago

Hello. I want to know if there any plan to develop a feature for Midas PRO2. I am a constant user of your product and that will pe helpful. Thank you!

josephdadams commented 3 years ago

Please provide protocol documentation

Onescu9 commented 3 years ago

Answer from MIDAS:

“The best way of doing this would be to use the remote control server and send messages as an iPad App would. This uses the OSC protocol which is messages consisting of “/“ separated path strings. A message with an argument would be a Set request and a message without would be a Get request.

The connection to set values is made over Port 10002 to the IP given in the Remote Control Server setting in the Pro Series preferences page. So you need to set the IP you want to send to in the Pro Series Preferences and start the remote control server. Connect the Ethernet Port (Ethernet Port 2 on Larger Pro Series) to your computers ethernet port (which will need to have an IP in the same subnet, Example: Console IP 192.168.1.5, PC IP 192.168.1.10).

If you need to receive information from the console (i.e.. Get request) then you will need to create a client that connects to the Remote Control Server and sends messages to the console using a user defined port on the PC end. The reason for this is that the Pro Series Remote Control Sever responds to the same ip and port as the request is sent from. For example, if you ask for the mute status of input 1 by sending “/enPPCSwitchMessage/enVirtualMicInputs/enMuteStatus/0” and that request is sent from port 8000 on your computer to the Pro Series IP address, port 10002, then the pro series will send the status of the mute back to your computer on port 8000. Normal operation of most OSC libraries/applications would be that messages are sent on an arbitrary free port which would mean you wouldn’t know what port to listen to the response on.

So in order to set a fader value you will need the following commands where X is the channel number you wish to set. The argument to send with it would be a 0 to 1 float eg. 0.75 to set the value. For reference enVirtualMasters are 1/2/3 which correspond to L R and Mono respectively.

Input - /enPPCFaderMessage/enVirtualMicInputs/enFaderLevel/X

Return - /enPPCFaderMessage/enVirtualAuxReturns/enFaderLevel/X

Aux Send - /enPPCFaderMessage/enVirtualSubMixes/enFaderLevel/X

Matrix - /enPPCFaderMessage/enVirtualMainOuts/enFaderLevel/X

Master - /enPPCFaderMessage/enVirtualMasters/enFaderLevel/X

To change a mute state you would send the following commands with an argument of 1. Where X is the channel number. You will need to be aware that Switches such as Mute are a toggle, so you always send 1 and it flips the state. This means that to set to a mute to a state explicitly you would need to check the state first and only send the toggle command it if it does not equal the state you want. To get the state you send the following commands with no argument and have a listener check the incoming values.

Input - /enPPCSwitchMessage/enVirtualMicInputs/enMuteStatus/X

Return - /enPPCSwitchMessage/enVirtualAuxReturns/enFaderMute/X

Aux Send - /enPPCSwitchMessage/enVirtualSubMixes/enFaderMute/X

Matrix - /enPPCSwitchMessage/enVirtualMainOuts/enFaderMute/X

Master - /enPPCSwitchMessage/enVirtualMasters/enFaderMute/X

Mute Group Mute - /enPPCSwitchMessage/enVirtualMuteGroups/enMuteGroupMute/X

Channel numbers represented in this explanation as X are 0 indexed. This means 1 = 0, 2 = 1, 3 = 2, etc, etc.

On Fri, Jan 29, 2021 at 3:55 PM Joseph Adams notifications@github.com wrote:

Please provide protocol documentation

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/bitfocus/companion-module-requests/issues/371#issuecomment-769818901, or unsubscribe https://github.com/notifications/unsubscribe-auth/ASTFQ3VNUXCCWBPVQLJKKWLS4K45FANCNFSM4WS4TWCQ .

mrveum commented 3 years ago

Is this possible to make? It would be amazing to use this in our setup!

kjetilpp commented 2 years ago

Want this! 👍

elraval commented 2 years ago

Hi. If i wanted to develop a module for this device what would be a good existing module to look at and start with? I’ve tried the documented OSC path commands with the generic OSC module and was successful in controlling the console.

josephdadams commented 2 years ago

Honestly I would start with the generic OSC module as a framework.

gkarasin commented 2 years ago

Answer from MIDAS: “The best way of doing this would be to use the remote control server and send messages as an iPad App would. This uses the OSC protocol which is messages consisting of “/“ separated path strings. A message with an argument would be a Set request and a message without would be a Get request. The connection to set values is made over Port 10002 to the IP given in the Remote Control Server setting in the Pro Series preferences page. So you need to set the IP you want to send to in the Pro Series Preferences and start the remote control server. Connect the Ethernet Port (Ethernet Port 2 on Larger Pro Series) to your computers ethernet port (which will need to have an IP in the same subnet, Example: Console IP 192.168.1.5, PC IP 192.168.1.10). If you need to receive information from the console (i.e.. Get request) then you will need to create a client that connects to the Remote Control Server and sends messages to the console using a user defined port on the PC end. The reason for this is that the Pro Series Remote Control Sever responds to the same ip and port as the request is sent from. For example, if you ask for the mute status of input 1 by sending “/enPPCSwitchMessage/enVirtualMicInputs/enMuteStatus/0” and that request is sent from port 8000 on your computer to the Pro Series IP address, port 10002, then the pro series will send the status of the mute back to your computer on port 8000. Normal operation of most OSC libraries/applications would be that messages are sent on an arbitrary free port which would mean you wouldn’t know what port to listen to the response on. So in order to set a fader value you will need the following commands where X is the channel number you wish to set. The argument to send with it would be a 0 to 1 float eg. 0.75 to set the value. For reference enVirtualMasters are 1/2/3 which correspond to L R and Mono respectively. Input - /enPPCFaderMessage/enVirtualMicInputs/enFaderLevel/X Return - /enPPCFaderMessage/enVirtualAuxReturns/enFaderLevel/X Aux Send - /enPPCFaderMessage/enVirtualSubMixes/enFaderLevel/X Matrix - /enPPCFaderMessage/enVirtualMainOuts/enFaderLevel/X Master - /enPPCFaderMessage/enVirtualMasters/enFaderLevel/X To change a mute state you would send the following commands with an argument of 1. Where X is the channel number. You will need to be aware that Switches such as Mute are a toggle, so you always send 1 and it flips the state. This means that to set to a mute to a state explicitly you would need to check the state first and only send the toggle command it if it does not equal the state you want. To get the state you send the following commands with no argument and have a listener check the incoming values. Input - /enPPCSwitchMessage/enVirtualMicInputs/enMuteStatus/X Return - /enPPCSwitchMessage/enVirtualAuxReturns/enFaderMute/X Aux Send - /enPPCSwitchMessage/enVirtualSubMixes/enFaderMute/X Matrix - /enPPCSwitchMessage/enVirtualMainOuts/enFaderMute/X Master - /enPPCSwitchMessage/enVirtualMasters/enFaderMute/X Mute Group Mute - /enPPCSwitchMessage/enVirtualMuteGroups/enMuteGroupMute/X Channel numbers represented in this explanation as X are 0 indexed. This means 1 = 0, 2 = 1, 3 = 2, etc, etc. On Fri, Jan 29, 2021 at 3:55 PM Joseph Adams @.***> wrote: Please provide protocol documentation — You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub <#371 (comment)>, or unsubscribe https://github.com/notifications/unsubscribe-auth/ASTFQ3VNUXCCWBPVQLJKKWLS4K45FANCNFSM4WS4TWCQ .

Can you write to Midas for the full specification of this protocol? I checked it and it works. However, I miss the syntax for sending in a given AUX path, and I really need it.

I will be grateful.

josephdadams commented 2 years ago

@jtf4

JTF4 commented 2 years ago

I'll write to Midas and see if I can get the full documentation. I've got a pro2 in my possession for a few months and I'll probably have time to work on this.

JTF4 commented 2 years ago

@Onescu9 Can you also reach out to Midas and see if they can send you over the documentation?

gkarasin commented 2 years ago

I wrote to Midas about the specification, but they say there is no OSC protocol in the pro series and they don't have such documentation.

Next week I have four concerts and in my spare time I will try to eavesdrop on Wireshark communication between the iPad and the console.

JTF4 commented 2 years ago

I wrote to Midas about the specification, but they say there is no OSC protocol in the pro series and they don't have such documentation.

Next week I have four concerts and in my spare time I will try to eavesdrop on Wireshark communication between the iPad and the console.

Hahahahaha

You gotta love musictribe. You can find one person that says "oh yea. It's all osc. Here's a few commands. " and then the others who go "osc? Never heard of it."

Guess I'm doing it the manual way. Only sad thing is that I probably won't be able to interact which is probably the most wanted feature.

gkarasin commented 2 years ago

They wrote back exactly the same to me. It's good that the first one was talkative :)

I will listen to the network traffic between iPad and Midas and within a week I will try to prepare the OSC specification. I will try to listen to all the options available from Midas and the phrases Midas gives to Ipad. As soon as I create something, I will write it.

JTF4 commented 2 years ago

@gkarasin would you be ok with uploading a pcap file so I can have a look at the network traffic for it as well?

gkarasin commented 2 years ago

Of course. I play concerts from Wednesday to Saturday, so I will send the files on Monday at the latest.

gkarasin commented 2 years ago

I intercepted some traffic and pulled some commands, in the link pcap files. I guess there are no arguments and it will take a bit of trial and error. I have a mixer today and tomorrow, if necessary, I can listen to something else.

/enPPCFaderMessage/enVirtualMicInputs/enFaderLevel /enPPCMeterMessage/enVirtualMicInputs/enCompGRMeter /enPPCSwitchMessage/enVirtualMicInputs/enMuteStatus /enPPCSwitchMessage/enVirtualMicInputs/enFaderSolo /enPPCSwitchMessage/enVirtualMicInputs/enMuteStatus /enPPCRotaryMessage/enVirtualMicInputs/enSubSendLevel6 /enPPCSwitchMessage/enVirtualMicInputs/enSubMixSendEnableIn6 /enPPCSwitchMessage/enVirtualMicInputs/enSubMixSendsPreFadeIn6 /enPPCRotaryMessage/enVirtualMicInputs/enSubSendLevel5

https://we.tl/t-daJPFSoslN

JTF4 commented 2 years ago

I now have a node js program that emulates the control server on the pro series. If you want to play with it and get raw captures of that data, I can send it to you.

gkarasin commented 2 years ago

I will try your solution. My email address: karas at tarnobrzeg.org

gkarasin commented 2 years ago

I now have a node js program that emulates the control server on the pro series. If you want to play with it and get raw captures of that data, I can send it to you.

Please send me a Midas Pro server emulation.

Norbertvp commented 2 years ago

Hello!

Could you send me the Midas Pro server emulation to my e-mail address?

JTF4 commented 2 years ago

So after I did some further experiments, it looks like the server doesn't work.

gkarasin commented 2 years ago

At the last concert, I managed to save some traffic between the tablet and the mixer. As soon as I find a moment to sort it out, I'll throw it in and we'll possibly fill in the missing things.

I've been using the stream deck as a shortcut to talkback for the last three shows and it works great.

Norbertvp commented 2 years ago

[JTF4] > So after I did some further experiments, it looks like the server doesn't work.

Sad to hear that.

kjetilpp commented 1 year ago

At the last concert, I managed to save some traffic between the tablet and the mixer. As soon as I find a moment to sort it out, I'll throw it in and we'll possibly fill in the missing things.

I've been using the stream deck as a shortcut to talkback for the last three shows and it works great.

Have you looked more at this?

gkarasin commented 1 year ago

I didn't look. On December 4, we finish the tour and we have a two-month break. I take the mixer with me to listen to the traffic and create a table of all OSC commands. It should be ready for publication in January.

kjetilpp commented 1 year ago

Amazing 😍

Guffawker commented 1 year ago

I didn't look. On December 4, we finish the tour and we have a two-month break. I take the mixer with me to listen to the traffic and create a table of all OSC commands. It should be ready for publication in January.

What's your current method in listening to traffic between the two? My new job has me in front of a Midas every day right now and would love to help contribute! I've tried a few methods without much luck (trying to avoid bringing hardware in to do it), but if you've got a method that's working I'd be happy to spend a few days pulling as much as I can!

kjetilpp commented 1 year ago

Wireshark maybe?

muffeeee commented 1 year ago

I have a Christmas present for you! 🎄

After doing some reverse-engineering, disassembling and heavy work, I have managed to discover most, if not all, OSC parameters. However, some of them are useless, and others not very descriptive, so I have started working through them in order to figure out what they do.

The results so far have been compiled into a JSON file that is both human and machine readable.

See https://github.com/muffeeee/midas-pro-series-osc-commands

For now, only microphone input commands have been fully added (enVirtualMicInputs), but I have already started working on the rest of the commands and will be adding them over the next few days. I just decided to share with you the progress so far, maybe someone can start writing a companion module based on the current work. Also, keep in mind that only for that group there are more than 300 commands, so there's definitely a lot you can control.

LukeSCC commented 1 year ago

Hi I am new to GitHub but a long time user of the pro series and companion. I will definitely be trying this out in the future and I would like to add that if anyone is able to develop a module that would be amazing. If anyone needs anything tested I could also be a resource as I own a pro 1.