Another sound module, written in C++ with JUCE.
  • C++ 96.3%
  • Makefile 1.9%
  • CMake 1.3%
  • Shell 0.5%
Find a file
2026-09-11 16:49:43 +02:00
Source Add README, thread-safe engine, standalone format 2026-09-11 16:49:43 +02:00
tools SM-26 synthesizer: initial implementation 2026-09-11 16:38:28 +02:00
.gitignore SM-26 synthesizer: initial implementation 2026-09-11 16:38:28 +02:00
CMakeLists.txt Add README, thread-safe engine, standalone format 2026-09-11 16:49:43 +02:00
Makefile Add README, thread-safe engine, standalone format 2026-09-11 16:49:43 +02:00
README.md Add README, thread-safe engine, standalone format 2026-09-11 16:49:43 +02:00

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