Control sounds with MetaPlanes

The GameSynth Tool API offers an easy way to integrate GameSynth with your favorite creative tools, improving your sound design workflow with procedural audio generation. This is usually done by writing a simple script in Python or a similar language.

However, you can also write your own standalone applications that control GameSynth remotely. In this post, we did exactly this with MetaPlanes, a small control surface for GameSynth that you can download here.

Using MetaPlanes

MetaPlanes offers 4 planes on which you can move your mouse to control the meta-parameters of the current patch in GameSynth.

There are 2 playback modes. You can click directly on one of the planes to start the patch’s playback. Then, the position of the mouse, its angle and distance from the center, and the speed of the movement can all be used to send values to the patch’s meta-parameters. As soon as you release the mouse, the playback will stop. This is ideal for short sounds with a limited number of meta-parameters (e.g., hits on various surfaces).

For longer sounds, such as ambiences, press the Play button and then adjust the meta-parameters using all 4 surfaces while the patch is playing. When you are done, press the Play button again to stop the patch.

Various modes can be selected, offering different mappings and backgrounds. For instance, the “circular” mode allows you to map the angle and distance to the center to the meta-parameters, while the “4-way mixer” mode lets you adjust meta-parameter values based on the distance of the mouse from the 4 corners.

It is also possible to automate the movements on some of the planes while you move your mouse on others, allowing for the creation of more complex modulations.

The GameSynth Tool API currently does not send a notification when a new patch has been loaded in GameSynth and the meta-parameters potentially changed (this will be added to the API in the next version). Therefore, press the Sync button in MetaPlanes if the meta-parameters list has changed in GameSynth.

Under the hood

Since the GameSynth Tool API uses TCP to send commands to remotely control GameSynth, you can write your application in any language. Here, we developed MetaPlanes in C# using WinForms. It only uses 4 of the commands of the GameSynth Tool API.

When the program starts (and when you press the Refresh button),  the list of meta-parameters in the current GameSynth patch is retrieved via the get_metanames command.

Then, when the user clicks on a plane or on the Play button, the patch’s playback is initiated with the play command.  When the mouse moves, the set_metavalue command is called to update the values of the meta-parameters based on their mappings

The playback will stop naturally when the patch’s duration has been reached, when the mouse button is released, or when the Play button is pressed again, in which case the stop function is called.

You can download MetaPlanes from the GameSynth Tool API’s examples page. Please refer to the documentation for the full list of features and keyboard shortcuts. Let us know how you are using it, and if you are also developing your own scripts or tools that use the GameSynth Tool API!