Skip to content

SimonBuechner/simpleCompressor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

76 Commits
 
 
 
 
 
 
 
 

Repository files navigation

EXPCompressor

EXPCompressor

Description

This repository contains a basic Compressor and Expander VST Plugin developed using the JUCE framework. The plugin provides dynamic audio processing tools for use in any Digital Audio Workstation (DAW) that supports VST plugins.

Features

Controls:

  • Compressor Threshold
  • Compressor Ratio
  • Expander Threshold
  • Expander Ratio
  • Attack Time
  • Release Time
  • Make-up Gain

Meters:

  • Input Gain
  • Reduction Gain
  • Output Gain

Both the compressor and expander use Root Mean Square (RMS) values to calculate gain adjustments and reduction gain.

Compatibility

The plugin is designed to work on both macOS and Windows platforms. However, it has only been tested on macOS.

The plugin can be used in any DAW that accepts VST plugins.

Installation

  1. Clone the repository:

git clone <https://git.iem.at/s12401618/audio-datenanalyse-kompressor.git>

  1. Open the project in Xcode (for mac) or VSCode (for Windows).

  2. Build the plugin project to generate the VST plugin file.

  3. Load the plugin in your DAW and start using the EXPcompressor.

Usage

Both the compressor and the expander are tools used in audio production to manage the dynamic range of audio signals. They have exactly the opposite function to each other. They are often for speech and music signals, for example to level out the overall dynamic range (compressor) or for noise reduction (expander).

Compressor: A compressor reduces the dynamic range of an audio signal by attenuating loud parts while leaving quieter parts unaffected (up to a defined threshold). This helps to even out volume inconsistencies and makes the dynamics more controlled. Key parameters include:

  • Threshold: The level above which the signal is compressed.
  • Ratio: Determines the amount of compression applied (e.g., 4:1 means for every 4 dB above the threshold, only 1 dB comes out). In this compressor the values of this compressor lay between 1 and 30.

Expander: An expander increases the dynamic range of an audio signal by attenuating signals below a certain threshold. It makes quiet parts quieter, useful for reducing noise or adding contrast to the sound. Key parameters include:

  • Threshold: The level below which the signal is expanded.
  • Ratio: Defines the degree of expansion (e.g., 0.5 means a 1 dB reduction below the threshold results in a 2 dB reduction in output). In this expander the values of this expander lay between 0 and 1.

Both the compressor and the expander rely on the attack and release time.

  • Attack: The time it takes for the compression or expansion to start after the signal exceeds the threshold.
  • Release: The time it takes for the compression or the expansion to stop after the signal drops below the threshold.

Development Process

MATLAB Prototype

Initially, a sketch of the code was tested in MATLAB to better understand the behavior and implementation of compressor and expander algorithms. The MATLAB prototype was based on example code from Udo Zölzer’s book "DAFX: Digital Audio Effects" (Chapter 4, Non-Linear Processing, p. 110-113).

JUCE Implementation

Using the insights gained from the MATLAB prototype, the compressor and expander functionality was implemented as a new JUCE audio project. Additional features such as rotary knobs and meters were also added to provide user-friendly controls and visual feedback.

Evaluation

To find out if the EXPCompressor works as expected an audio signal processed with the EXPCompressor plugin was compared with the same audio signal processed with the MATLAB code. The deviation was calculated by comparing the relative deviation of the normalised auto-correlation maximum of the reference signal (MATLAB signal) and the normalised cross-correlation maximum between the reference and the output signal of the plug-in. The result was a relative deviation of 1-2% (depending on the signal). This is due to the expander. In the VST plug-in the expander is limited to -80dB, whereas in Matlab the expander is not limited and can theoretically go as far as -inf dB.

Authors

Acknowledgments

This project was used for an exploration within the 'audio data analysis' seminar at the IEM, under the supervision of Alois Sontacchi.

About

Simple JUCE VST for Audio RMS Compression & Expansion

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •