Reaper is a popular DAW in the game audio community. This is due in no small part to its extensive scripting capabilities, crucial when working with thousands of assets. Even better, you can now call the GameSynth Tool API from its scripts, and leverage the power of procedural audio in your projects. Create new workflows that will save you a lot of time: from automatically producing sound variations to generating unique, non-repetitive audio for as long as you want.
The GameSynth Tool API comes with examples of scripts written in EEL2, a native scripting language used in Reaper. Although scripts can be written in other languages, EEL2 does not require any special extension or environment to be downloaded and installed.
Make sure to get the latest scripts from the GameSynth Tool API web site. Importing the scripts into Reaper can be done via the Action List, by clicking on the New action button and selecting Load ReaScript.
Once installed, the scripts can be run directly from the Action List. Of course, it is also possible to assign a keyboard shortcut to them, or to trigger them from a toolbar. In the latter case, GameSynth-themed icons are available in the \toolbar_icons folder. To access them, simply copy the folder into \AppData\Roaming\REAPER\Data\. To create a custom toolbar, select Customize menus/toolbars from the Options menu. Choose the toolbar you want to edit, add a script, and click the Icon button to open Reaper’s toolbar icon browser. The icons should appear there automatically.
Rendering unique audio of any length
The Render Current Patch script will generate the current GameSynth patch as a wave file in your project’s media folder, and will insert it at the cursor position on the selected Reaper track. The bit depth, number of channels, file name and number of variations can be set. When generating several variations, they will be placed sequentially on the same track.
If the GameSynth patch is infinite, you can specify the duration of the wave file to generate. If you made a time selection on Reaper’s timeline, you will have the option to generate audio that exactly matches that selection. It is one of the strengths of procedural audio, and this is especially useful for ambiences.
Alternatively, the Render Repository Patch script allows you to access the patches of the GameSynth repository instead of rendering the current one. After searching for the right patch by name, and filtering by categories or tags, the selected patch will be loaded in GameSynth, and the Render Current Patch script will be triggered – providing the same rendering options than described above – and it will generate the sound on Reaper’s timeline.
Rendering sound variations at markers
The advantage of using a DAW like Reaper is that you can easily sequence and synchronize audio to video, for example when working on a game animation. If you need sound variations that are perfectly in sync with the picture, such as a weapon hits or footsteps, you can create sync points using Reaper’s markers. Then, call the Render Variations at Markers script to generate a new sound variation of the current GameSynth patch at each marker position on your timeline.
Creating matching layers
When creating assets in Reaper, you will most likely automate track or effect parameters. With its many types of modules, GameSynth can be a great tool to add original layers to your sound. With the Automation Export script, you can export the envelopes in Reaper’s automation items as GameSynth’s own Automation Curves and use them to drive the synthesis parameters.
Thanks to Reaper’s scripting capabilities and the ease of use of the GameSynth Tool API, new game audio workflows can be created that will save you a lot of time, allowing you to focus on creative tasks.
These examples of scripts barely scratch the surface of what can be achieved by combining Reaper and GameSynth. Feel free to use these scripts and to adapt them to your needs. Should you wish to share your own scripts with the community, they can be featured on the API ‘s web site. Furthermore, if you have any questions about the API or any requests, join our Discord server where our team will be more than happy to assist you!