sm-26/README.md

2.1 KiB

SM-26

A simple subtractive synthesizer plugin built with JUCE / C++.

  • VST3 + Audio Unit (macOS arm64), VST3 (Linux)
  • 4 rotary knobs on the front panel whose meaning follows the selected preset
  • 52 factory presets (Bass / Lead / Pad / Keys / Pluck / FX / Stab / Arp)
  • tempo-synced delay (follows the host transport / BPM)
  • 4x80 HD44780-style pixel display with a cascaded on-screen menu
  • left/right/up/down navigation diamond + ENTER / ESC controls the menu
  • status footer with the git revision and local build time

Build

Requires a C++17 compiler, CMake >= 3.22 and (on Linux) X11/ALSA dev headers.

make            # clones JUCE (once) into deps/ and builds
make install    # installs + ad-hoc signs + un-quarantines
make uninstall  # removes the installed plugins
make distclean  # wipes build/
  • macOS installs to ~/Library/Audio/Plug-Ins/ (AU + VST3).
  • Linux installs to ~/.vst3/.

If a freshly installed AU is not visible to auval / your DAW:

sudo killall -HUP coreaudiod

Usage

  • Ship MIDI into the plugin; the 4 front-panel knobs drive whichever parameters the current preset maps them to (e.g. cutoff/resonance/ envelope/delay, but many other routings exist).
  • Nav diamond + ENTER/ESC drive the on-screen menu:
    • root menu -> PRESETS / OSCILLATORS / FILTER / ENVELOPE / DELAY / SYSTEM
    • up/down = move, left/right = adjust value, ENTER = open/confirm, ESC = back
  • The LCD shows the current preset, the four knob mappings with live values, host BPM and voice count. The delay can be set to a rhythmic subdivision (SYNC) and locks to the host tempo.

Layout

Build: Makefile -> CMake -> JUCE (deps/juce)
Source/
  PluginProcessor.*   audio processor + DSP shell
  SynthEngine.*       osc/filter/ADSR/delay voice engine
  Presets.*           52 preset definitions + knob routings
  SynthParams.*       parameter model + formatting
  PluginEditor.*      panel, knobs, nav diamond, footer
  LcdDisplay.*        4x80 HD44780-style display renderer
  MenuSystem.*        cascaded menu state machine
tools/gen_buildinfo.sh  generates git-version + build-time header