Skip to content

Create a Custom Plugin

Raphael Knoop edited this page Nov 28, 2021 · 2 revisions

In this tutorial you will learn how to build your own DSP plugin for your Aurora DSP.

This tutorial requires the following software:

  • Aurora Repository Release v2.2.0 or higher
  • Sigma Studio 4.5.x
  • Python 2.7

This tutorial requires the following skills:

  • Some basic knowledge about HTML if you want to build your own GUI
  • Knowledge how to work with the command line (terminal)

Additionally required:

  • A good coffee machine and delicious chocolate

Building DSP Schematic with SigmaStudio

First you should visit the directory SOURCES/SIGMASTUDIO/template of the Aurora repository. Copy the content of this directory to a new directory and rename the file template.dspproj to a name you like for your plugin, e.g. myplugin.dspproj.

Now open the file myplugin.dspproj in Sigma Studio and switch to the schematic page plugin. This is where you define your plugin by inserting DSP blocks and connecting them by wires. You can have a look into the plugins that come with the Aurora repository to see some examples.

After you have finished the design of your plugin (and hopefully saved it) click on Link Compile Connect. Sigma Studio will now compile your design for the DSP and report errors, if you did something wrong. Please, fix these errors first before you proceed. After successful compilation click on Export System Files and select the same directory where myplugin.dspproj is located.

Congrats, the first step on your way to your own plugin is done. Take a coffee and some chocolate.

Naming Convention

In order to make the new plugin working you have to follow a naming convention for the DSP blocks. The following table specifies prefixes for each supported dsp block. After that prefix you can specify any name you like.

DSP function Prefix
High Pass HP
Low Pass LP
High Shelving HighShelv
Low Shelving LowShelv
Parametric EQ PEQ
Parametric EQ Bank PeqBank
Phase (Allpass) Phase
Delay  Delay
Gain  Gain
FIR FIR
Crossover High Pass XOHP
Crossover Low Pass XOLP

Some DSP functions require multiple blocks in SigmaStudio, e.g. low pass and high pass filters which are made from multiple biquad stages depending on their order. These blocks need an additional suffix to define the stage. This suffix is a : followed by a number, e.g. :1,:2,:3,:4. Currently the following DSP functions support multiple blocks: High Pass, Low Pass, Crossover High Pass, Crossover Lowpass.

Please evaluate the example plugins in the repository to learn which SigmaStudio block you have to use for each function. You can simply copy & paste them into your own plugin and adjust the names.

Building HTML GUI

The next (optional) step is to build a html gui for your plugin. This is the step where you need some basic html skills. You can find a template for this in the directory SOURCES/WEBAPP/plugins/template. For each DSP function of your plugin you define a button tag (see table below). For the id you specify the full name (including prefix but without suffix) of the dsp function in you Sigma Studio project. For the inner html you can write any label you want. It is up to you how you layout the buttons on your GUI.

DSP function Tag
High Pass <button class="hp" id="HP...">HP</button>
Low Pass <button class="hp" id="LP...">LP</button>
High Shelving <button class="shlv" id="HighShelv...">HighShlev</button>
Low Shelving <button class="shlv" id="LowShelv...">LowShelv</button>
Parametric EQ <button class="peq" id="PEQ...">PEQ</button>
Parametric EQ Bank <button class="peq" id="PeqBank...">PEQ</button>
Phase (Allpass) <button class="phase" id="Phase...">Phase</button>
Delay  <button class="delay" id="Delay...">Delay</button>
Gain  <button class="gain" id="Gain...">Gain</button>
FIR <button class="fir" id="FIR...">FIR</button>
Crossover High Pass & Low Pass <button class="hp" id="XO...">XO</button>

There is one exception: The id of the crossover block starts with the prefix XO because a crossover always uses a low pass and a high pass branch. It is recommend that you check out the example plugins of the repository to get an impression how a GUI for a plugin is made. Now remember your chocolate and your coffee.

Compiling the Aurora Plugin

The final step is to compile the Aurora plugin. Therefore, you call the python script sigma2aurora.py, which you can find in SOURCES/sigma2aurora. Call it with the following arguments:

python sigma2aurora.py <path_to_myplugin/myplugin.dspproj> <myplugin> --gui <path_to_my_html/dsp.html> --version <version>

<path_to_myplugin/myplugin.dspproj> This is the path to your SigmaStudio project you made in the fist step.

<myplugin> The name of your plugin that will be printed on e.g. the display (if you have connected one).

--gui <path_to_my_html/dsp.html> This optional argument is the path to your HTML GUI that you have built in step 2. If you don't specify it, sigma2aurora.py will make a default GUI only with a minimum set of controls.

--version <version> Specifies the firmware version that you plugin requires.

After running sigma2aurora.py check the output for errors and fix them. You may also check for warnings and decide for each warning if you want to fix it or not.

If everything worked well you can find your custom plugin in a folder with the plugin name you specified. Upload this directory to your Aurora DSP like you would do it for any other plugin. Now put away you chocolate and enjoy your custom plug in. Happy DSP'ing!