TouchOSC to FMOD Studio using MIDI


TouchOSC enables me to create custom control surfaces. Using the TouchOSC MIDI Bridge, the computer can receive them as midi messages.

I was wondering: Can I control game parameters using midi? What MIDI messages does FMOD expect (when selecting the Mackie Control surface for example)? Or can I somewhere create my own mapping?


Hi Mark,

To control FMOD Studio via the Mackie Control protocol, you’d basically need to emulate a Mackie controller. I’d really advise against going down this route as it would be very complicated to set this up manually. For example, accessing the parameter requires emulating the “Instrument VPot Assign Button” then sending messages that emulate the Mackie dials.

As an alternative, I’d recommend going with a program designed to emulate Mackie. Other Studio users have been successfully able to work with DAW Remote ( so I’d suggest giving that a go.

Ah, that’s a nice tool, but unfortunately not a solution for me.

This is the problem: It is difficult to create automation curves for effects, when you cannot test using in-game interaction.

Turning knobs in the FMOD Studio (or a remote) is not an option, because some parameters are set simulaneously (XY input) or by using gestures such as pinch and rotate.

These are, I believe, my options:

a) Connect my game to FMOD (which is undocumented and seems hard, especially in releasing it, as he is not a XCode developer)
b) Have my game (or a interface mockup) send OSC messages, and translate those OSC messages to the required MIDI parameters.

The second options is relatively easy using tools such as OSCulator (osc -> midi mapper) or TouchOSC with the TouchOSC editor (where you can design custom controller surfaces and assign your own midi messages to it).

For option (b), are you trying to modify things in the FMOD Studio tool from your game? Option (a) would be the ideal way to live update Studio and it shouldn’t be too hard to do…

  1. In your game code, why you call initialize, pass in FMOD_STUDIO_INIT_LIVEUPDATE instead of FMOD_STUDIO_INIT_NORMAL.
  2. In the FMOD Studio tool, go to File -> Connect to game…
  3. Enter the IP address of your iOS device and hit OK.
  4. To test, try tweaking the mixer master bus volume – the game runtime should match what you set in the tool.

I am a little confused by your example though, in that it sounds like you are trying to modify parameters in the game’s runtime, but from an external device. Usually, either the game is driving the parameter values, or you are auditioning the event in the tool (hence, using the control surface to emulate game parameter values). Live update is designed for sending across values that your game isn’t in control of (volumes, automation curves, etc.) Maybe you could elaborate?

Step 3 fails - I receive a message that the studio cannot connect. My Mac and iPhone are on the same WIFI. My Macbook firewall is OFF. I am using the exact same FMOD Studio project (I build the banks and dropped them in the app). FMOD has been initialized on the app.

Any ideas?

I want to drive game-parameter values in FMOD Studio. Directly from the game would be great. As alternative, I might use a (virtual) control surface to emulate game parameter values. (I’d like this emulation to be as close to the real game interaction as possible). Does this clarify it for you?

Woops, I mixed up the FMOD_STUDIO_INIT and FMOD_INIT.

I can successfully connect to the game! That’s awesome!

However: Pressing solo on the event bus in the mixer crashes the app.

Also: Although the game parameters are updated, the control knobs in FMOD studio are not. Since the mapping from game to parameters is not obvious, the sound designer has no clue what the current game parameter values are. Is this another bug?

Hi Mark,

Thanks for the head up – we’ll have a look into this soon.

We have not currently addressed this as it is possible there would be multiple instances of an event active in the game (hence, we wouldn’t be able to resolve which one the tool would display). We have plans to address this when we introduce new profiler features that provide information about active event instances.