This topic includes:
▪Introduction
▪Configuration
▪Sample
▪Address Space & Available Commands
▪Troubleshooting
Introduction
OSC stands for OpenSoundControl.
OSC is a widespread format to communicate between systems, and used for remote control of MADRIX 5.
There are many software applications or hardware controllers available, which offer support for OSC.
The remote sender controlling MADRIX 5 is called client.
MADRIX 5 is the receiver and called server.
Configuration
General
Make sure to start MADRIX 5 first, and then the third-party controller.
In MADRIX 5
In order to use remote control over OSC, you need to set the correct settings.
▪Go to the menu Preferences > Remote Control > OSC
▪A new window will open.
▪Enable Server - Activates reception of OSC messages and input. Is required for the main functionality of remote controlling MADRIX 5.
- Network Port - Defines the network port on which the OSC server is listening for messages. The default value is 9001.
▪Enable Feedback - Activates sending out OSC messages and output.
- It sends states and data from the MADRIX 5 Software back to the remote controller, such as the value of the Master.
- Controller and MADRIX 5 can therefore automatically be in sync.
- This also means, that even changes to MADRIX 5 via another remote-control instance, such as MIDI, will be synced with OSC.
- Destination Network Port - Defines the network port to which the OSC server is sending messages. The default value is 9002.
Your settings will be saved in the MADRIX 5 Setup file.
In Third-Party Controllers
Make sure to configure your remote controller [client]!
For example, in TouchOSC:
▪Go to the menu Edit > Connections > OSC
▪Set up
- Connection 1: UDP
- Host: 127.0.0.1 [127.0.0.1 is the local host, meaning the same computer if you are running MADRIX 5 and TouchOSC on the same computer. Enter the correct host address of the computer running MADRIX 5 if both applications are on different computers.]
- Send Port: 9001 [Use the same Server Network Port as set up in MADRIX 5, as explained above.]
- Receive Port: 9002 [Use the same Feedback Network Port as set up in MADRIX 5, as explained above.]
- Zeroconf: Default
▪Confirm with Done
Sample
The MADRIX 5 Installer includes a sample file, which you can load in TouchOSC.
1] During the setup of MADRIX 5, choose Examples from the list of components.
2] After the installation, you can find the example on your hard disk.
▪Navigate to C:\Users\Public\Documents\MADRIX5 Samples\remote\osc\madrix.tosc
3] Load the sample in TouchOSC via menu File > Open...
4] This is what the sample user interface looks like:
Address Space & Available Commands
Since OSC is a very open protocol, there are many feasible possibilities, and implementations are often based on best practices.
In order for you to control MADRIX 5 remotely, you need to know the available address space and list of commands. You will find the complete list and more details below.
Details
▪Support: MADRIX 5 supports OSC clients, whose address space can be freely configured, since it is a custom address space defined by MADRIX 5.
▪Case Sensitivity: The address space is case-sensitive. [Make sure to correctly use capital and small letters.]
▪Data Types: OSC offers usage of several data types. MADRIX 5 is using values of the types integer [i, int, INT, INT32] and float [f, float, FLOAT, FLOAT32].
- All other OSC data types are currently not used.
- See the following examples to identify which data type is required as listed in the address space below.
- Examples for integer values: 0, 55, 255, -10
- Examples for float values: 0.0, 1.84, 20.0, -2.72
▪Address Patterns: Each OSC address starts with / and separates items also via /
- The last item of an address pattern is called the Method, which is the function or functionality.
- All items before the Method are Containers, basically grouping items together.
▪Values To Pass: Methods often require one or more Arguments, which is the exact values that should be used.
- In the table below, arguments are listed as single arguments [...] or multiple arguments [...] [...] [...], which would be three arguments in this case.
▪Arguments: x means a value you can define individually.
▪Arguments: N means the last index number that is available, which depends on how you are using the software; for example, as to how many Cue Lists you have created.
▪Arguments: N-1 means that the function works with an index, and this index starts with 0.
- You will have to calculate the regular number minus one to get the last available index number.
- For example, you may have two Cue Lists, which are normally written as 1 and 2. Since it is a zero-based index, they are 0 and 1 instead.
▪Address Space: The table below includes Containers, Methods, Arguments and additional comments for more information, which are indicated with //
▪Feedback: In general, building OSC user interfaces without expecting and including Feedback from MADRIX 5 is easier than building them with Feedback from MADRIX 5.
Example
▪Address: /Output/Master
Valid Range Of Integer Arguments: (From) 0 (To) 255
Address Space
/Audio
|
/Input
|
/Agc [0 or 1]
|
/Level [0 ... 100]
|
/Level/Offset [-x ... +x]
|
/Mute [0 or 1]
|
/Output
|
/Level [0 ... 100]
|
/Level/Offset [-x ... +x]
|
/Mute [0 or 1]
|
/DeckA or /DeckB
|
/Pause [0 or 1]
|
/SpeedMaster [-20.0 ... 20.0]
|
/SpeedMaster/Offset [-x ... +x]
|
/Submaster [0 ... 255]
|
/Submaster/Offset [-x ... +x]
|
/Filter [0 ... 102] //UI Values: None ... SwapHVD5
|
/Filter/Up
|
/Filter/Down
|
/FilterColor
|
/Mode [0 ... 3] //UI Values: Thru ... Ignore
|
/Mode/Up
|
/Mode/Down
|
/GlobalId [1 ... N]
|
/GlobalId/Up
|
/GlobalId/Down
|
/Red [0 ... 255]
|
/Red/Offset [-x ... +x]
|
/Green [0 ... 255]
|
/Green/Offset [-x ... +x]
|
/Blue [0 ... 255]
|
/Blue/Offset [-x ... +x]
|
/White [0 ... 255]
|
/White/Offset [-x ... +x]
|
/Rgb [0 ... 255] [0 ... 255] [0 ... 255]
|
/Storages
|
/Index [0 ... 255]
|
/Index/Up
|
/Index/Down
|
/Places
|
/Index [0 ... 255]
|
/Index/Up
|
/Index/Down
|
/StoragePlace
|
/SpeedPitch [-10.0 ... 10.0]
|
/SpeedPitch/Offset [-x ... +x]
|
/Submaster [0 ... 255]
|
/Submaster/Offset [-x ... +x]
|
/Filter [0 ... 102] //UI Values: None ... SwapHVD5
|
/Filter/Up
|
/Filter/Down
|
/Chaser
|
/PlaybackState [0 ... 2] //UI Values: Stopped, Paused, Playing
|
/SpeedPitch [-10.0 ... 10.0]
|
/SpeedPitch/Offset [-x ... +x]
|
/Steps
|
/Index [0 ... N-1]
|
/Index/Up
|
/Index/Down
|
/Layers
|
/[0 ... N-1]
|
/Submaster [0 ... 255]
|
/Submaster/Offset [-x ... +x]
|
/Opacity [0 ... 255]
|
/Opacity/Offset [-x ... +x]
|
/Blind [0 or 1]
|
/Solo [0 or 1]
|
/Filter [0 ... 102] //UI Values: None ... SwapHVD5
|
/Filter/Up
|
/Filter/Down
|
/MixMode [0 ... 21] //UI Values: Normal ... NegativeMask
|
/MixMode/Up
|
/MixMode/Down
|
/Chaser
|
/PlaybackState [0 ... 2] //UI Values: Stopped, Paused, Playing
|
/SpeedPitch [-10.0 ... 10.0]
|
/SpeedPitch/Offset [-x ... +x]
|
/Steps
|
/Index [0 ... N-1]
|
/Index/Up
|
/Index/Down
|
/Output
|
/Freeze [0 or 1]
|
/Master [0 ... 255]
|
/Master/Offset [-x ... +x]
|
/Blackout [0 or 1]
|
/Filter [0 ... 102] //UI Values: None ... SwapHVD5
|
/Filter/Up
|
/Filter/Down
|
/FilterColor
|
/Mode [0 ... 3] //UI Values Thru ... Ignore
|
/Mode/Up
|
/Mode/Down
|
/GlobalId [1 ... N]
|
/GlobalId/Up
|
/GlobalId/Down
|
/Red [0 ... 255]
|
/Red/Offset [-x ... +x]
|
/Green [0 ... 255]
|
/Green/Offset [-x ... +x]
|
/Blue [0 ... 255]
|
/Blue/Offset [-x ... +x]
|
/White [0 ... 255]
|
/White/Offset [-x ... +x]
|
/Rgb [0 ... 255] [0 ... 255] [0 ... 255]
|
/StrobeColor
|
/Mode [0 ... 2] //UI Values: OutputAndColor ... BlackAndColor
|
/Mode/Up //Scroll direction correlates visually to direction on the user interface, but as such contrary to other remote-control options, like DMX-IN or MIDI
|
/Mode/Down //Scroll direction correlates visually to direction on the user interface, but as such contrary to other remote-control options, like DMX-IN or MIDI
|
/GlobalId [1 ... N]
|
/GlobalId/Up
|
/GlobalId/Down
|
/Red [0 ... 255]
|
/Red/Offset [-x ... +x]
|
/Green [0 ... 255]
|
/Green/Offset [-x ... +x]
|
/Blue [0 ... 255]
|
/Blue/Offset [-x ... +x]
|
/White [0 ... 255]
|
/White/Offset [-x ... +x]
|
/Rgb [0 ... 255] [0 ... 255] [0 ... 255]
|
/Strobe [0 ... 9] //UI Values: Off, Every Tenth Frame ... Every Second Frame
|
/Strobe/Offset [-x ... +x]
|
/Fade
|
/Time [0.0 ... 3600.0] //In Seconds
|
/Time/Offset [-x ... +x]
|
/Type [0 ... 14] //UI Values: CrossFade ... ZCrossSlide
|
/Type/Up
|
/Type/Down
|
/Value [0 ... 255]
|
/Value/Offset [-x ... +x]
|
/Automatic
|
/ToLeft
|
/ToRight
|
/ToCenter
|
/ColorKit
|
/GlobalColors
|
/[1 ... N]
|
/Red [0 ... 255]
|
/Red/Offset [-x ... +x]
|
/Green [0 ... 255]
|
/Green/Offset [-x ... +x]
|
/Blue [0 ... 255]
|
/Blue/Offset [-x ... +x]
|
/White [0 ... 255]
|
/White/Offset [-x ... +x]
|
/Alpha [0 ... 255]
|
/Alpha/Offset [-x ... +x]
|
/Rgb [0 ... 255] [0 ... 255] [0 ... 255]
|
/GroupControl
|
/Defaults
|
/Groups
|
/[0 ... N-1]
|
/Value [0 ... 255]
|
/Value/Offset [-x ... +x]
|
/Flash [0 or 1]
|
/Chaser
|
/PlaybackState [0 ... 2] //UI Values: Stopped, Paused, Playing
|
/SpeedPitch [-10.0 ... 10.0]
|
/SpeedPitch/Offset [-x ... +x]
|
/Steps
|
/Index [0 ... N-1]
|
/Index/Up
|
/Index/Down
|
/FadeTime [0.0 ... 3600.0] //In Seconds
|
/FadeTime/Offset [-x ... +x]
|
/Presets
|
/Index [0 ... 255] //No Feedback Wanted
|
/Index/Up
|
/Index/Down
|
/DmxFaderTool
|
/Faders
|
/[0 ... 23]
|
/State [0 or 1]
|
/Value [0 ... 255]
|
/Value/Offset [-x ... +x]
|
/CueLists
|
/Index [0 ... N-1]
|
/Index/Up
|
/Index/Down
|
/PlaybackState [0 ... 2] //UI Values: Stopped, Paused, Playing
|
/PlaybackMode [0 or 1] //UI Values: Loop, Shuffle
|
/TimeCodeSource [0 ... 4] //UI Values: None ... SMPTE
|
/TimeCodeSource/Up
|
/TimeCodeSource/Down
|
/Cues
|
/Index [0 ... N-1]
|
/Index/Up
|
/Index/Down
|
/Timelines
|
/Index [0 ... N-1]
|
/Index/Up
|
/Index/Down
|
/PlaybackState [0 ... 2] //UI Values: Stopped, Paused, Playing
|
/AudioSegments
|
/Index [0 ... N-1]
|
/Index/Up
|
/Index/Down
|
/CueSegments
|
/Index [0 ... N-1]
|
/Index/Up
|
/Index/Down
|
/Markers
|
/Id [1 ... N]
|
/Id/Up
|
/Id/Down
|
/SetupRegisters
|
/Id [1 ... N]
|
/Id/Up
|
/Id/Down
|
/Trigger
|
/Ports
|
/[0 ... 63]
|
/PositionAndValue [0.0 ... 1.0] [0.0 ... 1.0] [0 ... +x = 0] //The Three Arguments Are: Position, Value, Number Of Segments
|
/Main
|
/View [0 ... 5] //UI Values: Layers ... Scheduling
|
/View/Up //Scroll direction correlates visually to direction on the user interface, but as such contrary to other remote-control options, like DMX-IN or MIDI
|
/View/Down //Scroll direction correlates visually to direction on the user interface, but as such contrary to other remote-control options, like DMX-IN or MIDI
|
/FeedbackAll
|
Notes
▪FeedbackAll - Is a single command to initially sync all available functions with the client once in order to update the values of the client with the current values of the MADRIX 5 server. It is an initialization.
- Is sent automatically by MADRIX 5 once if the connection, including Feedback, has been established successfully.
[TouchOSC supports this message, since it is useful and important to start MADRIX 5 first, and then TouchOSC, since this will ensure that the connection and sync work successfully right away.]
- Otherwise, Feedback usually works after a value has been changed on the MADRIX 5 user interface in order to send out data at least once.
TouchOSC Examples
Crossfader > Fade To Left
|
Master
|
|
|
Cue List > Play/Pause/Stop
|
Audio Input Level > AGC
|
Notes:
▪In TouchOSC, do not activate Messages > OSC > Feedback, but only Receive. Otherwise, you could create an endless feedback loop!
▪While TouchOSC is opened, you will probably not be able to find MIDI devices in MADRIX 5, due to a restricted or exclusive access from TouchOSC.
Troubleshooting
▪You can use the Logfile for troubleshooting as it will include many messages regarding OSC.
- Learn more »Tools
▪One such message in the Logfile is: 'The OSC sender has subscribed to this session and will get feedback.' It confirms that the client has successfully connected and registered this session with the server to receive feedback.
|