# 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](https://github.com/juce-framework/JUCE) ## Building The build expects JUCE in `../juce` relative to this repository. If JUCE lives somewhere else, point `JUCE_DIR` at it during configuration. ```sh # 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`: ```sh 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: ```sh 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: ```sh 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`.