- C++ 88%
- C 9%
- Objective-C++ 1.9%
- CMake 1%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
StbFontAtlas::setBaseFont(name,size) overrides the text face for the next build (winning over SND_UI_FONT); GlWindow::setUiFont rebuilds the atlas and re-uploads the texture live, building into a probe first so a bad face leaves the current one intact. Vendor 31 faces into third_party/fonts (IBM Plex Sans/Mono, Inter, Cooper Hewitt, Centre Forward, Bluu Next, Advent Pro, Source Code Pro, JetBrains Mono, Barlow, Rajdhani, Titillium, Oxanium, Alatsi, Open Sans, Sugar) so the app can offer them by name. widget-shots gains specimen/label/chromerow shots used to compare faces on the real bar. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> |
||
| .claude | ||
| cmake | ||
| docs | ||
| examples/snd-example | ||
| include/snd | ||
| site | ||
| src | ||
| test | ||
| third_party | ||
| tools | ||
| .gitignore | ||
| AUDIT.md | ||
| CMakeLists.txt | ||
| DESIGN.md | ||
| LICENCE | ||
| PROGRAMMING-GUIDE.md | ||
| README.md | ||
| ROADMAP.md | ||
| UI_PROGRAMMING_GUIDE.md | ||
SND
SND is a small, in-house audio+UI foundation library — cross-platform audio I/O, a GUI shell, plugin hosting, and a write-once plugin SDK. Apps build on SND instead of on JUCE/iPlug. Free for any noncommercial use; commercial use needs a licence — see License.
Modules
snd::audio— device playback/capture, file decode (wav/aiff/flac/mp3/ogg), streaming reads, encoders (FLAC, MP3), resampling, a gaplessPlayersnd::ui— shared audio UI toolkit with two front ends: retained/aGooey (snd_ui_retained_gl, no ImGui target) and Dear ImGui compatibility (snd_ui_imgui). Widgets share paint helpers for knobs, meters, faders, keyboard, pattern grid, sequencer matrix, envelope editor, graph surface, menus, and custom painter hooks. The retained tree adds layout, keyboard focus, and accessibility semantics. SeeUI_PROGRAMMING_GUIDE.md.snd::plugin— VST3 + AU hosting (editor GUIs in native windows, MIDI, host transport) and a client SDK: write aProcessor+ ImGui editor once and build it as VST3, AU, and a standalone app. Multichannel buses, an inter-plugin control-bus API, out-of-process crash-safe scanning.snd::midi— MIDI events + CoreMIDI/ALSA/WinMM device I/Osnd::dsp— real FFT + COLA STFT (PFFFT)snd::state— a ValueTree-shaped state tree with XML round-trip + undosnd::platform— native file dialogs, per-OS config dir
Mac, Linux, and Windows are supported. DESIGN.md records the architecture,
PROGRAMMING-GUIDE.md the how-to, and AUDIT.md the current architecture
audit.
Build & test
tools/build.sh # configure + build + run --selftest
tools/build.sh --no-test # configure + build only
Or by hand (same steps — use these on Windows):
cmake -S . -B build
cmake --build build
./build/snd-example --selftest # headless checks
./build/snd-example --selftest-retained # focused retained UI contract
./build/snd-example # window + audio device demo
--selftest verifies real behaviour, not just compilation: decode+playback,
capture, VST3/AU hosting (parameter behaviour + stable-ID state round-trip),
and the plugin-client SDK.
There is no CI here, and there won't be — private-repo Actions minutes are metered and easy to over-trigger. This repo only builds when someone runs the script by hand.
What's vendored vs. original
- Vendored, unmodified, pinned (via CMake
FetchContent): miniaudio, Dear ImGui, GLFW, VST3 SDK, Apple AudioUnitSDK, PFFFT, NFD, imgui-knobs, libFLAC - Original: everything under
include/snd/andsrc/— SND's own API and the backends behind it
Dev workflow
See AGENTS.md for the multi-agent dev workflow that applies to work in this
repo.
License
SND is source-available, not open source. It is licensed under the PolyForm Noncommercial License 1.0.0: free to use, modify, and share for any noncommercial purpose (personal projects, research, education, non-profits, evaluation).
Commercial use requires a separate commercial licence from the author. If you want to ship SND — or anything built on it — in a product or service for commercial advantage or monetary compensation, open an issue at https://github.com/100mountains/snd or contact @100mountains on GitHub to arrange one.
Copyright 2026 100mountains. The dependencies SND fetches keep their own licences (mostly permissive: ImGui, GLFW, miniaudio, PFFFT, NFD, libFLAC, imgui-knobs, nanosvg, stb_image, AudioUnitSDK). One to note: the VST3 SDK is GPLv3-or-Steinberg — if you build VST3 targets, your use of that SDK is governed by Steinberg's terms, separately from SND's licence.