I have been using the JUCE framework to develop VST audio plugins and will be posting them here from time to time. These plugins should work with systems that support VST plugins, but have only been tested to a limited extend with Audacity and Ableton Live 9 Lite. Feel free to download and try out these plugins, understanding that they come with no guarantees of any kind.
Reverb Effects
This section includes two new feedback delay network (FDN) reverb plug-ins:
Both new plug-ins have the same control parameters, which differ slightly from the parameters of the older version of Multiverb. The new parameters are:
Links to both 64 bit and 32 bit versions of the plug-ins are provided below. I have done my usual limited amount of testing with Ableton (64 bit versions) and Audacity (32 bit versions).
This section includes two new feedback delay network (FDN) reverb plug-ins:
- A plug-in based on a standard FDN
- A modification of the Multiverb Dual FDN plug-in described in the next section
Both new plug-ins have the same control parameters, which differ slightly from the parameters of the older version of Multiverb. The new parameters are:
- High frequency absorption coefficient (dB/m)
- Room area (sq m)
- Percent reverb
- Level (dB)
Links to both 64 bit and 32 bit versions of the plug-ins are provided below. I have done my usual limited amount of testing with Ableton (64 bit versions) and Audacity (32 bit versions).
Multiverb Dual FDN Reverb Effect
This is an earlier version of the dual FDN reverb plugin. It offers a different set of control sliders than the newer version. I recommend the newer version, but will leave this one available.
Multiverb is an audio plug-in that produces a reverb effect on a monaural or stereo audio track. Multiverb implements an acoustic system that is an interconnection of multi-port acoustic elements. It can also be described as a dual feedback delay network. For a full technical description of the Multiverb algorithm please see my paper in the Journal of Multidisciplinary Engineering Science and Technology (JMEST). Some minor changes in the algorithm are described here. See also here for additional technical information and notes on the MATLAB and C++ implementations.
Multiverb has 5 user parameters that can be adjusted with sliders:
Multiverb is the my first audio plugin and I have updated it several times, most recently on 4/24/2019.
The 32 bit version has been tested to a limited extent with Audacity 2.3.1. The 64 bit version of this plugin has been tested to a limited extent with Ableton Live 9 Lite.
This is an earlier version of the dual FDN reverb plugin. It offers a different set of control sliders than the newer version. I recommend the newer version, but will leave this one available.
Multiverb is an audio plug-in that produces a reverb effect on a monaural or stereo audio track. Multiverb implements an acoustic system that is an interconnection of multi-port acoustic elements. It can also be described as a dual feedback delay network. For a full technical description of the Multiverb algorithm please see my paper in the Journal of Multidisciplinary Engineering Science and Technology (JMEST). Some minor changes in the algorithm are described here. See also here for additional technical information and notes on the MATLAB and C++ implementations.
Multiverb has 5 user parameters that can be adjusted with sliders:
- Low and high frequency reverberation time - these control the rate of decay of the reverberation and account somewhat for frequency dependence.
- Room area - the area of the room in square feet.
- Percent reverberation - determines the relative mix of dry and wet signal in the output from totally dry (0 %) to totally wet (100 %).
- Level - the degree of gain or attenuation applied to the output signal in dB.
Multiverb is the my first audio plugin and I have updated it several times, most recently on 4/24/2019.
The 32 bit version has been tested to a limited extent with Audacity 2.3.1. The 64 bit version of this plugin has been tested to a limited extent with Ableton Live 9 Lite.
Schroeder/Moorer Reverb
This reverb plugin is similar to Freeverb in that it is constructed from a bank of 8 low pass feedback comb filters and a cascade of 4 modified all pass filters. Unlike Freeverb, the all pass filters are the "low pass all pass" filters described on my tutorial page. Also, the filter design method is my own, as also described on my tutorial page.
The plugin has five sliders that affect the amount and type of reverb:
This reverb plugin is similar to Freeverb in that it is constructed from a bank of 8 low pass feedback comb filters and a cascade of 4 modified all pass filters. Unlike Freeverb, the all pass filters are the "low pass all pass" filters described on my tutorial page. Also, the filter design method is my own, as also described on my tutorial page.
The plugin has five sliders that affect the amount and type of reverb:
- HF Absorption (dB/m) - the loss at the Nyquist frequency due to absorption during propagation through air.
- Reflection (unitless) - the amount of reflection from surfaces in the space.
- Room Area (m^2) - the size of the room.
- Percent Reverb - the mix between the wet and dry signal
- Gain (dB) - a parameter to adjust the overall level of the mixed signal.
Netverb - Yet Another Reverb Effect Plugin
This plugin uses a network of multi-port elements, as described in the Tutorials section, to create a reverb effect. The effect parameters are the same as those used by the FDN reverb plugins described above. As usual, I have tested it minimally with Ableton (64 bit version) and Audacity (32 bit version).
Use buttons below to download a copy.
This plugin uses a network of multi-port elements, as described in the Tutorials section, to create a reverb effect. The effect parameters are the same as those used by the FDN reverb plugins described above. As usual, I have tested it minimally with Ableton (64 bit version) and Audacity (32 bit version).
Use buttons below to download a copy.
Parametric Equalizer with Frequency Response Display
This plugin is a multi-band parametric equalizer with a near real-time graphic display of the magnitude of the frequency response. The equalizer is a cascade of four biquadratic filters: a bass shelf filter, two peak filters, and a treble shelf filter. Controls are provided to set the gain and critical frequency of each filter. There is also a master gain control.
Use buttons below to download .dll files. For most systems, just put the file in the plugin folder and check for new plugins. Click the image to view a demo.
This plugin is a multi-band parametric equalizer with a near real-time graphic display of the magnitude of the frequency response. The equalizer is a cascade of four biquadratic filters: a bass shelf filter, two peak filters, and a treble shelf filter. Controls are provided to set the gain and critical frequency of each filter. There is also a master gain control.
Use buttons below to download .dll files. For most systems, just put the file in the plugin folder and check for new plugins. Click the image to view a demo.
Real Time Spectrogram Display
This plugin displays the spectrogram of the audio in real time as it is playing. The vertical axis is frequency ranging logarithmic-ally from Fn/1000 to Fn where Fn is the Nyquist frequency. The horizontal axis is time and the intensity is indicated by color.
Use buttons below to download .dll files. Click the image to view a demo.
This plugin displays the spectrogram of the audio in real time as it is playing. The vertical axis is frequency ranging logarithmic-ally from Fn/1000 to Fn where Fn is the Nyquist frequency. The horizontal axis is time and the intensity is indicated by color.
Use buttons below to download .dll files. Click the image to view a demo.
Compressor with Animated Display
This plugin provides and displays a compression effect. At lower input levels, the output level matches the input level, but when the input level exceeds a threshold, the output level rises more slowly. The threshold and the post threshold slope are adjustable with sliders. A third slider adjusts the power-averaging time that in turn affects how rapidly the compressor responds to level changes.
The display shows the desired input - output relation as a piece-wise linear curve. When the audio is played, periodic measurements of the input and output level are displayed as dots.
Updated 8/28/2818 to improve display format.
Use button below to download .dll files. Click the image to view a demo.
Wah-Wah Effect
This plugin provides a wah-wah effect by band-pass filtering the audio signal with a center frequency that varies sinusoidally with time. Sliders control the minimum and maximum center frequency, the effect frequency, the filter damping coefficient, and the percent effect applied. It includes an animated display that tracks the variation of the BPF center frequency and the damping coefficient.
The BPF is a second order state space filter described in Section 6.5.2 of my book.
Updated 9/19/2018 to fix bug that could cause a loud pop at beginning. Hint: When using a state space filter, don't forget to initialize the state variables!
Use buttons below to download .dll files. Click the image to view a demo.
This plugin provides a wah-wah effect by band-pass filtering the audio signal with a center frequency that varies sinusoidally with time. Sliders control the minimum and maximum center frequency, the effect frequency, the filter damping coefficient, and the percent effect applied. It includes an animated display that tracks the variation of the BPF center frequency and the damping coefficient.
The BPF is a second order state space filter described in Section 6.5.2 of my book.
Updated 9/19/2018 to fix bug that could cause a loud pop at beginning. Hint: When using a state space filter, don't forget to initialize the state variables!
Use buttons below to download .dll files. Click the image to view a demo.
Convolution Reverb
A convolution reverb unit is a finite impulse response (FIR) filter that adds a reverb effect to the applied signal. The FIR filter coefficients are simply the samples of an impulse response that is usually derived from measurements made in a real space. The effect is obtained by convolution of the impulse response with the input audio samples. However, this kind of convolution is a bit different than the convolution you learned in Signal Processing 101. For one thing, the number of impulse response samples can be huge. For example, the impulse response of a live space may have a duration of several seconds and the sampling rate may be 48 kHz or higher, leading to IR lengths of over 100K samples. Secondly, the audio samples are delivered to the plugin as a stream of blocks of samples. For each input block, the plugin must produce an output block of the same size. In a real-time application, the plugin must complete processing of the block within the time period of the block, which is the block size divided by the sampling rate. Fortunately, a lot of smart people have worked on this problem and the art of fast convolution is quite mature at this time. Check out this publication by F. Wefers for more information on this topic. JUCE includes a convolution class based on partitioned convolution using equal size partitions of the impulse response. This seems to work well with impulse response duration of a second or so. I have also tried FFTconvolver by HiFi-LoFi and it seems to work well too. However, the current version of my plugin is pure JUCE.
The plugin comes up with no IR loaded. If you play audio with no IR loaded, there is of course no effect. The Open IR button opens a file chooser dialog that you use to locate and select an IR file. The chooser currently only displays .wav files, but JUCE supports a number of audio file formats. The leading and trailing samples of the IR are trimmed according to a trim factor that can be adjusted with a slider. The trim factor does not affect an already loaded IR, so to re-trim, you must adjust the trim slider and then re-load the IR. The trimmed IR is displayed as a stem plot. The JUCE convolution class handles adjusting the IR sampling rate to match the audio sampling rate. The plugin also includes a gain slider and a percent reverb slider.
The 32 bit version has been tested to a limited extent with Audacity 2.3.1. The 64 bit version of this plugin has been tested to a limited extent with Ableton Live 9 Lite.
Use buttons below to download .dll files (currently based on the JUCE convolver). Click the image to view a demo (coming soon).
A convolution reverb unit is a finite impulse response (FIR) filter that adds a reverb effect to the applied signal. The FIR filter coefficients are simply the samples of an impulse response that is usually derived from measurements made in a real space. The effect is obtained by convolution of the impulse response with the input audio samples. However, this kind of convolution is a bit different than the convolution you learned in Signal Processing 101. For one thing, the number of impulse response samples can be huge. For example, the impulse response of a live space may have a duration of several seconds and the sampling rate may be 48 kHz or higher, leading to IR lengths of over 100K samples. Secondly, the audio samples are delivered to the plugin as a stream of blocks of samples. For each input block, the plugin must produce an output block of the same size. In a real-time application, the plugin must complete processing of the block within the time period of the block, which is the block size divided by the sampling rate. Fortunately, a lot of smart people have worked on this problem and the art of fast convolution is quite mature at this time. Check out this publication by F. Wefers for more information on this topic. JUCE includes a convolution class based on partitioned convolution using equal size partitions of the impulse response. This seems to work well with impulse response duration of a second or so. I have also tried FFTconvolver by HiFi-LoFi and it seems to work well too. However, the current version of my plugin is pure JUCE.
The plugin comes up with no IR loaded. If you play audio with no IR loaded, there is of course no effect. The Open IR button opens a file chooser dialog that you use to locate and select an IR file. The chooser currently only displays .wav files, but JUCE supports a number of audio file formats. The leading and trailing samples of the IR are trimmed according to a trim factor that can be adjusted with a slider. The trim factor does not affect an already loaded IR, so to re-trim, you must adjust the trim slider and then re-load the IR. The trimmed IR is displayed as a stem plot. The JUCE convolution class handles adjusting the IR sampling rate to match the audio sampling rate. The plugin also includes a gain slider and a percent reverb slider.
The 32 bit version has been tested to a limited extent with Audacity 2.3.1. The 64 bit version of this plugin has been tested to a limited extent with Ableton Live 9 Lite.
Use buttons below to download .dll files (currently based on the JUCE convolver). Click the image to view a demo (coming soon).
Under construction
This plugin uses a phase vocoder algorithm described in MATLAB documentation to adjust the pitch of an audio stream by n semitones where n ranges from -6 to +6. For more information about the phase vocoder algorithm, click here.
There is currently only a 64 bit version, which has been tested to a limited extent with Ableton Live 9 Lite.
This plugin uses a phase vocoder algorithm described in MATLAB documentation to adjust the pitch of an audio stream by n semitones where n ranges from -6 to +6. For more information about the phase vocoder algorithm, click here.
There is currently only a 64 bit version, which has been tested to a limited extent with Ableton Live 9 Lite.