A simple monophonic synthesizer plugin with built-in step sequencer, per-note finetuning and note sliding
  • C++ 96.4%
  • CMake 3.1%
  • Makefile 0.5%
Find a file
Armin 342d413563 Add delay and reverb FX section with full DSP
Rename the DIST section to FX and expand it with tempo-synced delay
(Time/Strength/Sync) and Schroeder reverb (Roomsize/Strength/Diffusion).
New FxProcessor runs post-voice on the stereo bus; widen the editor to
1280px to fit the new section. Add a TestHost check that the FX tail
rings out after note release.
2026-08-06 16:35:34 +02:00
Source Add delay and reverb FX section with full DSP 2026-08-06 16:35:34 +02:00
tests Add delay and reverb FX section with full DSP 2026-08-06 16:35:34 +02:00
.gitignore add juce to gitignore 2026-08-05 23:45:59 +02:00
CMakeLists.txt Add delay and reverb FX section with full DSP 2026-08-06 16:35:34 +02:00
Makefile Prototype 2026-08-05 23:12:17 +02:00
monostepshot.png add screenshot 2026-08-05 23:40:43 +02:00
README.md add screenshot 2026-08-05 23:40:43 +02:00

Monostep

A monophonic 2-oscillator step-sequencer synthesizer implemented as a VST3 plugin with JUCE.

Screenshot

Monostep

Features

  • 16-step monophonic sequencer (pattern length 1-16)
  • 2 oscillators with sine / triangle / saw / square waves, detune, and mix
  • Subtractive filter (cutoff, resonance) with ADSR and glide
  • Per-step gates, pitches (+/- 6 semitones), fine tuning (cents), and slide (legato)
  • Matrix editor with click-to-toggle steps, drag-to-pitch, and a slide row
  • Rotary-knob GUI with zoom (100% - 200%), a step panel with fine-tune, and a live orange play-position highlight
  • Footer status bar showing the git commit and build date
  • Pattern stored in the plugin state (save/restore with the DAW)

Requirements

  • macOS 12.0 or later (arm64)
  • CMake 3.22 or newer
  • A C++17 compiler (Xcode command-line tools)
  • JUCE

Building

The build expects JUCE in ../juce relative to this repository. If JUCE lives somewhere else, point JUCE_DIR at it during configuration.

# 1. Get JUCE next to this repository:
git clone --depth 1 https://github.com/juce-framework/JUCE.git ../juce

# 2. Configure:
cmake -S . -B build

# or, for a custom JUCE location:
cmake -S . -B build -DJUCE_DIR=/path/to/juce

# 3. Build the plugin:
cmake --build build --target Monostep_VST3

The VST3 plugin is written to:

build/Monostep_artefacts/Release/VST3/Monostep.vst3

Quick start with make

A Makefile wraps configure, build, and install. Just run make:

make          # build the plugin and copy it into ~/Library/Audio/Plug-Ins/VST3/
make test     # build and run the headless host test
make clean    # remove the build directory

Installing (manual copy)

The VST3 plugin ships as a macOS bundle (Monostep.vst3). Copy the whole bundle into your DAW's VST3 directory:

cp -R build/Monostep_artefacts/Release/VST3/Monostep.vst3 \
      ~/Library/Audio/Plug-Ins/VST3/

Notes for macOS:

  • The per-user VST3 directory is ~/Library/Audio/Plug-Ins/VST3/; create it with mkdir -p if it does not exist. A system-wide copy would go to /Library/Audio/Plug-Ins/VST3/ but requires sudo.
  • When updating, remove the old bundle first (rm -rf on the Monostep.vst3 inside the target directory) so stale files do not remain.
  • Your DAW may cache the plugin list — quit and relaunch it (or rescan plugins) after installing before looking for Monostep.

Running the tests

Build the headless host test and run it against the built plugin:

cmake --build build --target MonostepTestHost
build/MonostepTestHost_artefacts/Release/MonostepTestHost \
    build/Monostep_artefacts/Release/VST3/Monostep.vst3

The host scans the VST3, renders a buffer, and verifies that the pattern survives a state save/load round-trip. Expect ALL TESTS PASSED.