Godot and the GameSynth Tool API EN

Godot & the GameSynth Tool API

The GameSynth Tool API facilitates the interfacing of GameSynth with other creative tools such as game engines. In a previous post, we saw how it allowed us to generate sound variations directly in the Unity Editor. This time, we will describe two new plug-ins for Godot Engine that will improve your audio workflow when making games.


GETTING STARTED

The plug-ins are scripts written in GDScript, Godot’s built-in scripting language (similar to Python), that extend the editor’s functionality. They can be enabled or disabled at any time from the Godot settings.

To get started, download the scripts from our examples page on the GameSynth Tool API website. For these scripts to be recognized by the game engine, create a new folder called “addons” at the root of your Godot project, and copy the scripts there.

To enable the plug-ins in the editor, first make sure that GameSynth is running so that the scripts can communicate with it. Then, inside Godot, click on “Project” > “Project Settings…” and open the “Plugins” tab. Tick the boxes under the “Status” column to enable the plug-ins.

A message appears in the Output dock to confirm that the connection with GameSynth has been established.

RENDERING PATCHES WITHIN GODOT

The GSAPI_RenderCurrentPatch plug-in will render the current GameSynth patch and automatically assign the resulting WAV file to an audio node. This feature is available via a “Render GameSynth Patch” button that is added to the inspectors of the AudioStreamPlayer, AudioStreamPlayer2D, and AudioStreamPlayer3D nodes.

render_button

Once the button is pressed, the rendering settings, such as the sample rate, bit depth, and number of channels of the wave file to generate, as well as its destination folder, can be selected. Note that if the GameSynth patch is infinite, the rendering duration must be specified as well.

Once generated, the WAV file will automatically be added to the project and assigned to the “Stream” property of the audio node.

If the GameSynth patch contains randomized parameters, you will be able to specify the number of sound variations to generate. All the variations will be rendered at once and assigned to a Stream of type AudioStreamRandomizer in Godot. Each time the audio node is played, a new variation will be randomly selected. This is great for avoiding repetition in often-triggered sound effects such as impacts or footsteps!

DRIVING SOUNDS FROM GODOT’S ANIMATION CURVES

The GSAPI_ExportAnimationCurve plug-in lets you select a track from an AnimationPlayer node, and export its curve to GameSynth. There, it will appear as an automation curve that can be used to control audio parameters. This will allow you to create sound effects that perfectly match your animations!

An “Export Curve to GameSynth” button has been added to the inspector of the AnimationPlayer node.

Before starting the export, make sure that the right animation is selected in the Animation dock. It must contain at least 2 keys, and be of type “Bezier Curve”, “3D Position”, “3D Rotation”, or “3D Scale”.

Curve segment types differ between Godot and GameSynth. Therefore, the Godot curve will be evaluated at regular intervals (i.e., sampled) to generate a similar curve in GameSynth. In the settings window, the “number of points per second” will determine these intervals.

Once the OK button is pressed, an identical automation curve will be added to the current GameSynth patch.

You can now use this automation curve to control one or more synthesis parameters and generate sound effects that are driven by your animation.

We hope these examples of integration gave you an idea of what you can achieve with the GameSynth Tool API in Godot. We are curious to see what plug-ins and scripts you will build!

GameSynth

discord