Very simply OSC (Open Sound Control) is a command language that was designed to permit tools in the studio to control and be controlled in a consistent way. As the internet contains a large collection of resources dedicated to OSC, we will not re-invent the wheel and you can peruse these sites at your convenience:
Midi Quest and Midi Quest Pro are consumers of OSC messages. That is, they receive and respond to OSC commands but do not send OSC messages.
Sound Quest has provided a selection of OSC templates which can be used directly with TouchOSC and Lemur. These are two of the better known OSC applications however, Midi Quest can be controlled by any application that is capable of generating OSC messages. Applications you may be familiar with the support OSC include: Max/MSP, Bidule, CSound, and Pure Data. The Wikipedia page includes an extensive list of applications with OSC support.
Your OSC application (TouchOSC, Lemur, etc) must be set to output on port 7000.
Make sure your OSC application is set to output to the computer currently running Midi Quest.
Both Midi Quest and Midi Quest Pro have OSC implementations.
The difference between the two versions is that Midi Quest Pro also includes an OSC Editor which offers a very fast and easy way to create templates for TouchOSC and Lemur that can control either application. Control of Midi Quest via OSC is not limited to these two applications, Sound Quest simply offers a tool which makes it faster and easier to work with them. Effectively, if you need a tool to quickly and effectively create templates to control Midi Quest then you will want to use a combination of Midi Quest Pro with either TouchOSC or Lemur. If you have an OSC application and want to make templates using that application's development environment then you can use either Midi Quest or Midi Quest Pro. Both programs offer the same level of OSC support from the perspective of remote control.
Midi Quest and Midi Quest Pro currently receive OSC messages on port 7000. This port number is fixed so the application used to generate and send the messages will need to transmit using this port number. If you are currently familiar with OSC.
Midi Quest Pro only supports OSC within the main application. There is currently no support of OSC for Midi Quest plug-ins running in VST3, VST2, AU, AAX, or any other plug-in environment.
The Easy Way
If you would like to remote control a particular control in a Midi Quest editor and are creating the template yourself, you can do the following:
1) open the editor in Midi Quest
2) find the control and select it
3) from the menus (or context menu) choose Editor / Organize / Control Info...
4) A dialog similar to this will appear
5) The dialog shows the OSC address to use to edit the control remotely. In this case it is "/MQXL/ID246/SetVal/Ctl62"
6) Enter this address into your control application. (Note that at step 5, Midi Quest also copies this command to the computer's clipboard so you should be able to just paste it into the control application)
7) Along with a variable representing the new value for the control if necessary (depending on how the control application works)\
That's it. You're done. You can do this for as many or as few controls as you like.
If you would like to understand how this works and the commands available in Midi Quest, keep reading.
While the most obvious use of OSC with Midi Quest is to remotely control the editing of parameters in the instrument editors, Midi Quest is actually able to receive and respond to an extensive range of commands allowing much of the program's operation to be controlled remotely.
Currently, OSC commands can be sent to bank and editor windows in Midi Quest. These can be separate windows in Midi Quest or they can be contained within a Set or Collection. This is accomplished through the use of ID addressing. Every message that Midi Quest handles is assigned a unique ID number. This number is found in the Driver definition using the Instrument Creator window. It is this unique ID (in the example above, ID246) that allows Midi Quest to determine the destination an OSC message.
The command is broken down as follows
is the message header that allows Midi Quest to know it is the recipient
is the unique identifier of the SysEx in Midi Quest allowing the command to be routed to the correct destination(s)
following is the command to be executed. The most commonly used command will likely be /SetVal which is used to set the value of a control.
in some cases, an additional sub-command will be required to uniquely identify the function to be performed. in the case of the /SetVal command, we need to know which control to edit. This is handled with /Ctln which specifies the number of the control. Again, each control in a Midi Quest editor has a unique ID which allows commands to be sent to it. From the example above you will see that the control's ID is "62" and the OSC Address command end with "Ctl62".
For a complete list of available commands, see the new two pages are click on the links below.
OSC commands are routed to all open windows within Midi Quest and are addressed to a particular type of data. Consequently, if you have two M1 Program editors open and send an OSC edit message intended for an M1 Program, both editors will receive and respond to the command. As a result, it is recommended that while using OSC, just one editor for each instrument be open
OSC commands can be received by both Sets and Collections. The messages are then routed to the banks and parameter editors that they contain. There is one major difference in how OSC messages are routed between the two. A Set holds unique data so a message sent to it will only be processed by one element of the Set. A Collection, by design, can hold many items of a given type of SysEx. As a result and in order to minimize the opportunity for OSC messages to be sent to multiple editors, OSC messages are only send to SysEx that has been viewed and a window currently exists to receive the message.