Main Menu

OSC Control

Started by David, May 18, 2020, 01:22:51 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

David

** Please see post # 6 and the help file for the new command format **

Here's a list of commands that MultiPlay 3 accepts via OSC:

This activates the Emergency Stop function (any arguments are ignored):
/cue/estop

These activate the relevant action for the current cue if no argument is used.
/cue/go
/cue/stop
/cue/fade
/cue/pause
/cue/resume
/cue/restart
/cue/jumpfwd
/cue/jumpback

These activate the relevant action for the current cue if an argument of 0 (zero) is used.
/cue/go 0
/cue/stop 0
/cue/fade 0
/cue/pause 0
/cue/resume 0
/cue/restart 0
/cue/jumpfwd 0
/cue/jumpback 0

These activate the relevant action for all cues that it would apply to:
/cue/stop all
/cue/fade all
/cue/pause all
/cue/resume all
/cue/restart all
/cue/jumpfwd all
/cue/jumpback all

These activate the relevant action for a specific cue where ARG is the cue's Q text:
/cue/go ARG
/cue/stop ARG
/cue/fade ARG
/cue/pause ARG
/cue/resume ARG
/cue/restart ARG
/cue/jumpfwd ARG
/cue/jumpback ARG

These move the cue list selection (GO position):
/cue/up
/cue/down
/cue/pos ARG

David

#1
To enable OSC control of MultiPlay, go into Production Properties > Network > Control > OSC Control.  Select the port number that MultiPlay should listen on for OSC messages and enable the Active checkbox. If Windows pops up and asks if MultiPlay can access the network, say yes. That's pretty much it!

Use the port number you keyed in above as the destination port in whatever OSC control program you use. If the OSC control program is on the same computer as MultiPlay, you can use 127.0.0.1 as the destination IP address. If the OSC control program is on another computer / device, you'll need the IP address of the computer that MultiPlay is on. This can be found on the Statistics window in MultiPlay as Local IP Address.

David

I've been made aware that some of the OSC control apps only allow numeric arguments for their controls, even buttons.

This means you can't type in "all" as the argument for an action (to do a Stop All for example).

To get around this, MultiPlay will also accept -1 (minus one) as an alias for "all" with the stop, fade, pause and resume actions.

An argument of 0 (zero) or a blank argument still means the currently selected cue.

caleb_hopper

#3
I have created a TouchOSC custom Multiplay layout for anyone who is interested.

Here are the links to the apps:
https://play.google.com/store/apps/details?id=net.hexler.touchosc_a&hl=en_US
https://apps.apple.com/ca/app/touchosc/id288120394

There is also a page on the layout that requires a separate piece of software called TouchOSC Bridge, which basically allows multiplay to accept MIDI commands over the network as well. You have to set that up in the shortcut preferences and then "capture" each midi command one by one. That may or may not be necessary in the future, if more osc commands arise. Anyway, that software can be found here:
https://hexler.net/pub/touchosc/touchosc-bridge-1.5.0-win32.zip

Here is the link to my template, as well as some screen shots:https://drive.google.com/drive/folders/1Hdp1ZAZwnFyZBa_e9UwsZBhz2VpDu1ea?usp=sharing

David

I've rewritten the OSC command parser to make it extendable. This change is effective as of beta release 129.

Please note that none of the osc command text is case sensitive.

Cue actions targeted at a specific cue where {cue} is the Q# text (no spaces allowed):
/cue/{cue}/{action}

Cue actions targeted at the currently selected (GO position) cue:
/cue/playhead/{action} or /cue/current/{action}

Cue actions targeted at all playing or paused cues:
/cue/active/{action}

The {action} can be stop, start (or go), fade, pause, pausetoggle, resume, restart, jumpfwd, jumpback, cuepoint, position

Please note that /cue/active/start, /cue/active/go, /cue/active/cuepoint and /cue/active/position do nothing as those actions target a single cue.

Most of the new commands don't require an argument (and will ignore them), so should be easier to implement in OSC apps.

The cuepoint action requires an integer argument of the cue point you want. Cue points out of range are ignored.

The position action can use an integer or float argument that represents the time in seconds you want to jump to.

You can also move the GO position with these commands (no spaces allowed for {cue}):
/select/next
/select/prev or /select/previous
/select/{cue}

The GO action is triggered by /go
The e-stop action is triggered by /estop or /panic
The Stop All action is triggered by /stopall
The Fade All action is triggered by /fadeall

Some of these last commands are the same as /cue/current/{action}, just shorter.

David

These are the OSC commands as of beta release 130.

Please note that none of the osc command text is case sensitive.

Cue actions targeted at a specific cue where {cue} is the Q# text (no spaces allowed):
/cue/{cue}/{action}

Cue actions targeted at the currently selected (GO position) cue:
/cue/playhead/{action} or /cue/current/{action}

Cue actions targeted at all playing or paused cues:
/cue/active/{action}

The {action} can be stop, start (or go), fade, pause, pausetoggle, resume, restart, jumpfwd, jumpback, jumpend, cuepoint, position

Please note that /cue/active/start, /cue/active/go, /cue/active/cuepoint and /cue/active/position do nothing as those actions target a single cue.

Most of the new commands don't require an argument (and will ignore them), so should be easier to implement in OSC apps.

The cuepoint action requires an integer argument of the cue point you want. Cue points out of range are ignored.

The position action can use an integer or float argument that represents the time in seconds you want to jump to.

You can also move the GO position with these commands (no spaces allowed for {cue}):
/select/first
/select/prev or /select/previous
/select/next
/select/last
/select/{cue}

The GO action is triggered by /go
The e-stop action is triggered by /estop or /panic
The Stop All action is triggered by /stopall
The Fade All action is triggered by /fadeall

Some of these last commands are the same as /cue/current/{action}, just shorter.

David

#6
As of beta release 3.0.154.0 an action of exitloop can be used with the current or specified cue.

David

In v193 I've added OSC control of the stopwatch:

/stopwatch/start
/stopwatch/stop
/stopwatch/reset

SynthKeyWizard

I'm trying to learn how MP OSC works, but can't see any info about oncoming messages. Can you share with us an outcoming OSC chart?

I try to make a TouchOSC layout, have some success, but I want to make it more useful, with feedback from MP.
Dmitry Yeryomin, sounddesigner.

David

Do you mean OSC messages that MultiPlay sends that are not OSC network cues?

SynthKeyWizard

#10
Quote from: David on February 15, 2023, 08:45:09 AMDo you mean OSC messages that MultiPlay sends that are not OSC network cues?

Yes. Would be great to know these messages, to implement some of them in TouchOSC layout.

Yesterday I did my own MP control layout, using caleb_hopper layout as a basis, but I want to make it more informative, using feedback from MP.You cannot view this attachment.
Dmitry Yeryomin, sounddesigner.

David

I halted work on the OSC feedback as it was causing some issues.

What sort of information are you wanting MultiPlay to send as OSC ?

jim10705

SynthKeyWizard,

I have also used TouchOSC.  I took a look at the touchosc layout/scripting you included (based on caleb_hopper) and tried it out. I wanted to double check because I had to modify some of the code to get it working:
1. I renamed "Show Cue Controls" to "ShowCueControls" because generally OSC does not allow spaces.  However if you have script that sends/receives without spaces then it should be fine.
2.  The script for setting GO label2 needs to refer to self.textColor instead of self.color.
3. Multiple OSC messages were defined for GO button and label2 ("Go"). So, whenever the button or label is pressed all the OSC messages were fired.  MultiPlay would receive multiple "go" commands (with slight variation in OSC syntax) instead of one.  I removed the OSC messages so that there was just one for button.
4. The trigger for button was defined as ANY.  So it would trigger twice if testing with a PC and mouse.  I haven't yet tested on smartphone yet to know for sure if it behaves the same way. I did do some experimenting so I might have messed it up myself  :-(

I am still checking out the code and experimenting.

I was able to setup network cues in MultiPlay to send to TouchOSC to change the colors.  However, it is a bit tricky on changing control properties depending on the scope of the script that is running.  I am still learning TouchOSC  :-)

jim10705

I have added code to the TouchOsc template I have been working on to be able to receive osc network message from MultiPlay.  In MultiPlay a network cue, type osc, is used with text "/status 'this is some message' " (The quotes around the 'this is a message is needed).  See attached.  Let me know if it works, I am still in beta development of it.

EdK

David, 

I think what Synthkeywizard may be referring to is the ability to send various values from MP to TouchOSC like I was looking for a couple years ago.  At that time I was only looking for a way to display MP's "Description" field of the currently active cue on TouchOSC. 

If you recall, we had a discussion about this in this thread:
https://da-share.com/forum/index.php?topic=348.msg1727#msg1727

At the time you mentioned you had to cleanup old spaghetti code before you could look into this further.

Like some of the other users here, I agree there's a pretty steep TouchOSC learning curve.
Windows 10 Home x64
Dell XPS 7590 Intel i7-9750H
16gb RAM - 1tb SSD
GeForce GTX 1650