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
2026-08-05 20:05:38 +02:00
Source MonoStep: monophonic 2-oscillator step-sequencer synth 2026-08-05 19:55:57 +02:00
tests MonoStep: monophonic 2-oscillator step-sequencer synth 2026-08-05 19:55:57 +02:00
.gitignore Add vim swap ignore and README build/install instructions 2026-08-05 20:05:38 +02:00
CMakeLists.txt MonoStep: monophonic 2-oscillator step-sequencer synth 2026-08-05 19:55:57 +02:00
Makefile Add Makefile for build/install and update README + gitignore 2026-08-05 20:03:37 +02:00
README.md Add vim swap ignore and README build/install instructions 2026-08-05 20:05:38 +02:00

MonoStep

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

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 red play-position marker
  • 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.