Table of contents
Creating Effects with Gorilla Engine
Overview
Gorilla Engine SDK is not limited to creating virtual instruments and can be used to create VST/AU/AAX effect processing plugins like reverbs or distortions. Effect plugins are different from virtual instruments in three ways:
- Effect plugins usually do not generate their own sounds like a synthesizer. Instead, these plugins process audio received from the DAW.
- Effect plugins have one or more audio inputs that receive sounds from the DAW to be processed.
- Effect plugins are flagged as effects (not instruments) so that your DAW lists the plugin appropriately with other effect plugins.
Note that the process for creating effect plugins is similar to the creation of instruments. To minimize redundancy, this article will focus on the differences between instruments and effects. If you are new to Gorilla Engine, please refer to the Minimal example to learn more about the basics of creating instruments.
Opening the Reverb example (Gorilla Tester FX)
Let’s start by using Gorilla Tester FX to open the Reverb example that ships with the SDK. The Gorilla Tester FX plugin loads the Reverb example by default, so if you have not modified anything in the assets folder, you should see the following when loading Gorilla Tester FX in your DAW:
Note: If you have changed the example that is loaded into Gorilla Tester FX, you can change it back to the Reverb example by following the instructions in the Gorilla Tester User Guide. The Reverb example’s assets can be found under: SDK > Examples > Reverb FX > plugin_assets .
About Gorilla Tester FX
Gorilla Tester FX is a special version of the Gorilla Tester plugin that is designed to test effect plugins (i.e., not virtual instruments). It can be instantiated in your DAW just like the standard Gorilla Tester plugin. However, please note that Gorilla Tester FX is categorized as an effect and therefore appears in your DAW under the effects tab.

If you are unable to see the Gorilla Tester FX plugin:
- Make sure you have the latest version of the Gorilla Engine SDK installed.
- Ensure that you are looking under the effects (not instruments) tab of your DAW.
Opening the Reverb example (Gorilla Editor)
Once you have spent a moment with the plugin, let’s open the Reverb example in Gorilla Editor to see how it is constructed. It can be found under: SDK > Examples > Reverb FX > Instrument > ujam-reverb.inst 
If you have used Gorilla Editor to build any instruments, you’ll notice that this Reverb is similar to any other Gorilla Engine instrument (like Basic Synth or Minimal). In fact, if you expand the “Group 0” menu you may notice that it has the same defaults as a newly created instrument. This is normal. Like all instruments, effect plugins need to have at least one group to function, however, you are not required to use this Group for anything. For example, the Reverb example does not respond to any MIDI inputs
Pro Tip: While you are not required to use the Group features, some developers find it handy to load different kinds of samples (loops, one-shots, vocals, instruments, etc.) that they can run through their effect while the plugin is in development. The current version of Gorilla Editor does not feature a “live input” function so having samples can help you preview results instantly without having to use Gorilla Tester or Gorilla Compiler.
Bussing
For an effect to function, a bus needs to be created. 
- To create this basic effect, we have created a bus (Bus 1)
- We have added a Reverb module to Bus 1
- To the right, you can see all of the available parameters for the Reverb. We have selected three of these controls to expose to end users of the plugin. This is covered in the next section.
Note: This is a simple (one module) example but it’s possible to create far more complex effects by adding more than one module to a bus. It’s also possible to have multiple buses, each with its own set of modules. These modules (or groups of modules in separate buses) can then be interconnected or modulated for even richer sounds.
Gorilla Scripting to define and expose parameters
Just like with Instruments, we use Gorilla Script to define and expose parameters to users. 
- Click the ujam-reverb script (top left) to view this plugin’s script.
- You’ll notice the scripting for plugins is identical to that of instruments. Here we define the names of parameters we want to expose (“Pre Delay”, “Time”, “Dry/Wet”), define what type controls that we want them to be (squared, exponential, linear, etc.) and set their default values.
- At the bottom (3), you’ll see the three controls that we have created and exposed to users.
To learn more about how to work with Gorilla Script, please have a look at the Gorilla Engine documentation. The “Examples” section (particularly the Minimal example) covers this greater detail.
Opening the Reverb example (Gorilla Compiler)
Once we are happy with the effect we have created, it’s time to move the tested assets to the Gorilla Compiler to be compiled.
Let’s start by launching Gorilla Compiler. You’ll need to provide your login details to access the Compiler’s features.
Once you have logged in, click the “Open” button to open the Reverb.ugep project we have for this Reverb FX example. That file can be found under SDK > Examples > Reverb FX > Reverb.ugep
Next, let’s select Packaging (from the left column) and look at the first four tabs (UI Script, UI Layout, Assets, and Audio). These four tabs are where you can drag-and-drop the assets for your effect plugin.
-
UI Script is where your effect’s JavaScript file goes (Gorilla Tester FX.js). This file contains the logic of your plugin(e.g., blob loading, dynamic UI controls, UI resizing, Lottie animations), including paths and other basic information. This file can be very basic (as shown in this example) or far more complex depending on your instrument or effect.
-
UI Layout is your effect’s screen layout file goes (Reverb Example.yaml). This file specifies what assets (film strips, backgrounds, colors, etc.) you would like to bind to parameters of your effect and where you would like to place them on screen.
-
Assets simply points to where the fonts, images and other required assets of your plugin are located (it’s good practice to place these in an /assets subfolder). For example, film strips for knobs or sliders are usually placed in a subfolder /assets/images.
-
Audio is where the .blob files (audio samples) for your effect plugin are located. Note that blob files are required for the compiler to work properly, even if the effect has no samples. You can export an empty set of blob files from Gorilla Editor.
Finally, let’s select the Plugin Settings tab from the left column and have a look at the available options.
This page contains a number of important parameters that you can set for your plugin. These are all covered in detail in the Gorilla Compiler documentation. For this example, the important details to note are as follows:
- Select the format(s) you would like to create: AAX, AU, VST or VST3
- Ensure that the Effect check box is ticked. This ensures that the product is tagged and compiled properly, and that it appears as an effect (not instrument) in your DAW.
And that’s it! Once you are happy with your settings, you can click the Create Product button at the top to begin the compilation process.
For further information
Our documentation website has much more information about Gorilla Editor, Gorilla Compiler and other parts of the SDK so be sure to have a look if you need more information.