Multi-Fader Drone Plugin
Close

Project Description

The goal of this project was to make a fun GUI display using the JUCE Framework.

The plugin is a drone synthesiser, designed to produce constant sound formed by 2-100 sine oscillators.
I add and remove the oscillators from the plugin in pairs, with each pair oscillating their levels in tandem like a siren. This way, I can ensure that the level of each pair was capped at a certain level, which is set according to the total number of pairs.

The user is given control for:

  • Num Voices - the number of oscillators active.
  • Frequency Range - this determines the range from which an oscillator will choose a new frequency (oscillators reset when their volume reaches 0)
  • Lock Range - this button locks the min and max values for the frequency range together so that when you move one the other moves with it. This allows for quick scanning around.
  • LFO Rate - this increases the range of frequencies used to oscillate the volumes of each pair of oscillators. This is a range rather than a simple scale factor, therefore even at the highest rate values, there will be some oscillators which remain slow.
  • Stereo Width - this determines the range from which an oscillator will choose a new pan position from (oscillators reset when their volume reaches 0)
  • Light/Dark Mode - the moon/sun icons in the top right corner toggle the UI colour theme.
The visualiser in the centre of the plugin provides a visual representation of the oscillators that are currently playing.
A screenshot of the drone visualiser in light mode, showing a cluster of circles of different shades and sizes, representing the oscillators A screenshot of the drone visualiser in dark mode, showing a cluster of circles of different shades and sizes, representing the oscillators
Each oscillator is represented by a circle in the visualiser. The diameter of the circle is determined by the oscillator's level, the brightness of the circle is determined by the frequency of the oscillator, and the position of the circle is determined by the stereo position of the oscillator (the distance from the centre of the visualiser is determined by the absolute stereo position, therefore the visualiser does not show you whether an oscillator is positioned left or right, but just gives an idea of how wide the sound is).

You can view the code and fork the repo yourself on my GitHub.