mirror of
https://codeberg.org/armin/sm-26.git
synced 2026-10-11 17:01:53 +02:00
2.1 KiB
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