A versatile audio saturation/distortion plugin built with JUCE framework, offering multiple saturation algorithms with fine-grained control over the distortion character.
Saturator is an audio effect plugin that adds harmonic saturation and distortion to audio signals. It features three different saturation algorithms, customizable drive, curve shaping, asymmetry control, and a dry/wet mix parameter. The plugin uses 4x oversampling to minimize aliasing artifacts and includes DC blocking to prevent DC offset buildup.
-
Multiple Saturation Types:
- Custom - A custom saturation curve with adjustable characteristics
- Tanh - Smooth hyperbolic tangent saturation
- Hard Clip - Aggressive hard clipping distortion
-
Comprehensive Controls:
- Drive (0.0 - 50.0 dB) - Controls input gain before saturation
- Curve (0.0 - 10.0) - Adjusts the saturation curve shape (Custom mode)
- Asymmetry (-1.0 to +1.0) - Creates asymmetric distortion for even harmonics
- Mix (0.0 - 1.0) - Dry/wet blend control
- Amount (0.0 - 1.0) - Clip/boost amount control
-
High-Quality Processing:
- 4x oversampling to reduce aliasing
- DC blocking filter to prevent DC offset
- Smooth parameter transitions (20ms smoothing)
- Support for mono and stereo processing
-
Plugin Formats:
- VST3
- AU (Audio Units)
- Standalone application
- CMake 3.24 or higher
- A C++17 compatible compiler (Xcode, Visual Studio, GCC, Clang)
- Git
-
Clone the repository:
git clone https://github.com/eren-darici/saturation-plugin.git cd saturation-plugin -
Create build directory:
mkdir build cd build -
Configure with CMake:
cmake ..
-
Build the plugin:
cmake --build . --config Release
The plugin will be automatically copied to your system's plugin directory after building (controlled by COPY_PLUGIN_AFTER_BUILD in CMakeLists.txt).
Pre-built plugin binaries for all supported platforms are available for download on the releases page.
After downloading, place the plugin file in the appropriate location for your operating system:
- macOS: Copy the
.component(AU) or.vst3file to~/Library/Audio/Plug-Ins/ - Windows: Copy the
.vst3file toC:\Program Files\Common Files\VST3\ - Linux: Copy the
.vst3file to~/.vst3/
- macOS: Xcode is recommended but not required. AU and VST3 formats will be built.
- Windows: Visual Studio 2019 or later is recommended. VST3 format will be built.
- Linux: GCC or Clang can be used. VST3 format will be built.
- Load the plugin in your DAW (Digital Audio Workstation)
- Select a saturation type from the dropdown menu:
- Custom for flexible curve-based saturation
- Tanh for smooth, tube-like saturation
- HardClip for aggressive digital distortion
- Adjust the Drive to control how hard the signal hits the saturation
- Fine-tune the Curve parameter (in Custom mode) to shape the saturation response
- Use Asymmetry to add even harmonics for a more colored sound
- Blend with the dry signal using the Mix control
- Adjust Amount for additional clipping/boosting effect
- Built with JUCE framework (latest version from master branch)
- Uses CPM (CMake Package Manager) for dependency management
- Implements
AudioProcessorfor plugin hosting - Custom UI with rotary sliders and dark theme
- Parameter automation via APVTS (Audio Processor Value Tree State)
- Oversampling: 4x oversampling using polyphase IIR filters
- DC Blocking: High-pass filter to remove DC offset
- Parameter Smoothing: 20ms linear smoothing for all parameters
- State Management: Full plugin state saving/loading support
saturation-plugin/
├── CMakeLists.txt # Build configuration
├── README.md # This file
├── src/
│ ├── PluginProcessor.h/cpp # Audio processing logic
│ ├── PluginEditor.h/cpp # GUI implementation
│ ├── effect/
│ │ └── Saturator.h/cpp # Core saturation algorithm
│ ├── ui/
│ │ ├── CustomLookAndFeel.h/cpp # Custom UI styling
│ │ └── Colors.h # Color definitions
│ └── utils/
│ └── DCBlocker.h # DC blocking filter
Contributions are welcome! Feel free to open issues or submit pull requests.
Developed by Eren Darici (@eren-darici)
This project is open source. Please check the repository for license information.
