β οΈ Licensing Notice: This project is Source Available for professional evaluation and portfolio review purposes only. It is not an Open Source project. Graphical assets, compiled binaries, and third-party framework dependencies have been excluded from this repository. Please refer to theLICENSEfile for full terms.
SLGain is a utility plugin designed to provide precise control over signal levels. Unlike standard gain plugins, it allows users to define custom Minimum and Maximum gain ranges, making it an essential tool for automation and gain-staging within a DAW (Digital Audio Workstation).
- Commercial Product: sinewavelab.com/products/slgain-free-gain-vst/
- Framework: Built using the WDL-OL (IPlug) framework.
- Language: C++
This repository showcases the handling of specific challenges of real-time audio programming and Digital Signal Processing (DSP):
-
Custom DSP Signal Smoothing: Implementation of a First-Order IIR Filter (
CParamSmoothclass) to handle parameter changes. By calculating coefficients based on the sample rate ($a = e^{-2\pi \cdot F_c}$ ), the plugin ensures that gain adjustments are click-free and prevent "zipper noise" during real-time processing. -
Non-Linear Knob Tapering: A power-curve algorithm (
findShape) to map linear UI movements to logarithmic audio scales. This ensures the "feel" of the gain knob is consistent and intuitive, regardless of the user-defined dB range. -
Serialization: State management (
SerializeStateandUnserializeState) to ensure the plugin's "memory" is preserved across DAW sessions. -
Thread Safety: The code utilizes Mutex Locks (
IMutexLock) to ensure thread safety between the GUI thread and the high-priority audio processing thread.
This repository is intended for code review. To compile a functional binary, the following dependencies are required:
- WDL-OL Framework: (zlib license).
- Steinberg VST3 SDK:.
- Proprietary Resources: Graphical assets (bitmaps) and
resource.hdefinitions are excluded from this repository.
SLGain.h: The architectural core. It contains the DSP smoother class, custom UI control classes, and the mathematical logic for logarithmic knob tapering.SLGain.cpp: The implementation layer. It manages the plugin lifecycle, the real-time audio processing loop (ProcessDoubleReplacing), and parameter-to-GUI synchronization.LICENSE: The custom "Read-Only" license for portfolio review.
