# Saftpumpe

A VCA-style bus compressor plugin for macOS (arm64). Built with JUCE.

Saftpumpe delivers the analog punch of classic rack-mounted bus compressors — soft-knee compression, program-dependent auto-release, and subtle tanh saturation for warmth. The skeuomorphic UI features silver metal faders on a brushed aluminum faceplate.

![Saftpumpe](saftpumpe.png)

## Screenshot

![Saftpumpe](saftpumpenshot.png)

## Obligatory AI slop disclaimer

Yes, this software was built with the help of AI. If that is an issue for you, please use a different plugin. Thank you for your understanding.

## Compatibility

I have tested this on macOS (M2 Pro Mac Mini) with FLstudio. That's it. If it breaks on your setup, well, that's bad, I probably can't do much about it.

## Features

- **Analog-modeled VCA compression** with soft-knee transition
- **Program-dependent auto-release** — faster for transients, slower for sustained material
- **Tanh saturation** for musical harmonic coloring
- **7 parameters:** Threshold, Ratio, Attack, Release, Knee, Makeup Gain, Dry/Wet Mix
- **Auto Release** toggle switch
- **Real-time waveform scope** (input + compressed output overlay)
- **LED-style meters:** Gain Reduction, Input, Output
- **HiDPI scaling** (0.75x – 2.0x)

## Formats

- VST3
- Audio Unit (AU)
- Standalone application

## Build

Requires CMake and JUCE (cloned into the project directory).

```bash
# First time only — clone JUCE
git clone --depth 1 https://github.com/juce-framework/JUCE.git

# Build
make

# Or manually
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
cmake --build . -j$(sysctl -n hw.ncpu)
```

The build automatically installs VST3 and AU to:
- `~/Library/Audio/Plug-Ins/VST3/Saftpumpe.vst3`
- `~/Library/Audio/Plug-Ins/Components/Saftpumpe.component`

## Makefile Targets

| Target | Description |
|---|---|
| `make` | Build the plugin |
| `make clean` | Remove build directory |
| `make reinstall` | Clean build |
| `make uninstall` | Remove installed plugins |
| `make run` | Launch standalone app |

## Parameters

| Parameter | Range | Default | Description |
|---|---|---|---|
| Threshold | -48 dB – 0 dB | -20 dB | Compression onset level |
| Ratio | 1:1 – 20:1 | 4:1 | Compression ratio |
| Attack | 1 ms – 100 ms | 30 ms | Attack time |
| Release | 50 ms – 1.5 s | 300 ms | Release time (when auto is off) |
| Knee | 0 dB – 12 dB | 6 dB | Soft knee width |
| Makeup | 0 dB – 24 dB | 0 dB | Output gain compensation |
| Mix | 0% – 100% | 100% | Dry/wet blend |
| Auto Release | On/Off | On | Program-dependent release timing |

## License

MIT

