<< Click to Display Table of Contents >> Navigation: Appendices > Appendix K: OSC and External Controls |
OSC (Open Sound Control) is a network messaging protocol originally designed for musical performances or show control. Its non-standardised messages make it a dynamic, configurable and low-latency interface for Delta External Control commands. Using a cross-platform control applications such as Touch OSC or Medialon Manager allows Delta controls and Delta Sequences to be run alongside other applications for show control.
OSC messages employ an address pattern, similar to URIs, a type tag (i=integer, f=float, s=string, b=blob). Messages are user-defined, so 7thSense has established all the common commands for you to operate with Delta, which can be supplemented or replaced. These create the equivalences for the common Delta External Controls.
There is no acknowledgement response in OSC, which listens on all available NICs.
Full specifications, syntax and usage for OSC can be found at OpenSoundControl.org.
Multi-platform TouchOSC modular control surface toolkit is available from Hexler, along with a complete manual for building interfaces on Windows, Mac or Android.
Delta OSC Commands
A help file of all Delta OSC commands is installed in
C:\Program Files\7thSense\Delta\System\DeltaOSCCommands.html
➢Click here for this same file DeltaOSCCommands.html on the user portal
All basic commands are installed with Delta 2.8, along with a user-configurable file, DeltaUserOSC.xml in the same place, into which any additional user commands can be written, for example to run your own specific Delta sequences. This user file is not overwritten when Delta is reinstalled or updated, but keep a safe backup.
The help file shows how commands and arguments must be structured:
Examples
From the help file, we can see that the OSC command to set an audio level will generate the external control AUDIOLEVEL which requires an argument with an (i)nteger value to complete Delta control %VAR1%.
If we want to move and resize a piece of media, more information is required for /media/move/xywh:
Here we need a (s)tring for the media External Control name, and four following (i)ntegers for the respective VAR values.
For complex controls you can choose whether to build a sequence and use OSC to run it, or to construct more complex OSC commands of your own.
Implementation with TouchOSC
First of all ensure that TouchOSC and Delta are communicating. The default Delta port is 57120 (Communication Configuration) but is configurable in Delta. Set the same value for the TouchOSC Send Port in Edit > Connections (there is no receive for OSC):
TouchOSC has a graphical working space into which controls can be added, (box, button, label, text, fader etc.). It is the name of the control, in the TouchOSC Document Tree, that must match the DeltaOSC command. Thus a button to ‘go to a Delta timeline marker’ must be named: ‘transport/gotomarker’ (no preceding /).
The arguments are added to the Messages values in TouchOSC.
Example
Here, in a TouchOSC file called ‘Delta’, there is a control to move media along x and y axes (OSC command ‘media/move/xy’):
In the Messages > OSC section, the address inserts a / followed by the name (the control is named to be the actual OSC command).
Arguments are then added, in this case sii (string integer integer).
The string is the Delta external control name – in this example what is to be moved – (selected, yellow above) with a ‘Constant’ type and with its value entered in the Constant field.
The X and Y arguments are integer type: again select each and add its values in the field below.
When operated in TouchOSC run mode, the control in this example will send the message that contains the media/move/xy command for ‘image 1’ to new x and y position values (seen in the purple message bar above).
Custom OSC
There is a user-configurable file, DeltaUserOSC.xml in C:\Program Files\7thSense\Delta\System that can be edited to add user-customised external control arguments. Edit this file to see the example structure given, and save to the same location:
Page edited [d/m/y]: 13/03/2023