Covers overview, features, build instructions (Linux + Windows cross-compile), patch system, MIDI/CC Learn setup, and credits. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
SoundThing
A polyphonic subtractive synthesizer for Linux, written in C with Raylib.
v0.9.5 beta | Linux | Windows (cross-compile) | C11 | Raylib
What is SoundThing?
SoundThing is a self-contained polyphonic synthesizer application. It runs standalone on Linux, receives MIDI input from any connected device, and produces audio through your system's default output. No plugin host, no runtime dependencies beyond the system libraries — just a binary and a folder of patches.
The UI is built with a custom pixel-art sprite sheet and an embedded 8×8 pixel font, giving it a deliberately retro character while remaining fully functional as an instrument. All assets are compiled directly into the binary; nothing loose needs to ship alongside the executable.
Features
| Module | Description |
|---|---|
| Polyphony | 8 voices, round-robin stealing |
| Oscillators | 2 per voice — Sine, Triangle, Saw, Ramp, Pulse, Noise |
| Envelopes | 2 × ADSR — Amp and Mod, independently routable |
| LFOs | 2 × LFO with the same six waveforms as the oscillators |
| Filter | TPT state-variable filter — LP, HP, BP; cutoff and resonance both modulatable |
| Modulation | Per-parameter routing to Amp Env, Mod Env, LFO 0, or LFO 1 |
| MIDI | In-app device picker with rescan; CC Learn maps any knob to any CC |
| Patch browser | Save, load, favourites, and folder-based organisation navigable in-app |
Building from Source
Dependencies (Linux)
gcclibraylib-dev— or build Raylib from sourcelibasound2-dev— ALSA
git clone https://github.com/Anachronaut/soundThing
cd soundThing
make
./bin/soundThing
Windows (cross-compile from Linux)
Additional dependencies:
x86_64-w64-mingw32-gccx86_64-w64-mingw32-windres- Raylib win64 MinGW distribution — set
RAYLIB_WINin the Makefile to point at it
make PLATFORM=windows
Note: Run
make cleanwhen switching between platforms to avoid mixing object files from different toolchains.
Makefile targets
| Target | Action |
|---|---|
make |
Build for Linux (default) |
make PLATFORM=windows |
Cross-compile for Windows |
make clean |
Remove build/ and the binary |
make run |
Build and run immediately |
Running & Distributing
The Linux binary dynamically links against Raylib and ALSA as system libraries. The Windows .exe is statically linked and fully self-contained.
In both cases, the patches/ folder must sit alongside the executable. SoundThing changes its working directory to the executable's location at startup, so double-clicking from a file manager works correctly.
soundThing/
├── soundThing (or soundThing.exe)
└── patches/
├── Classic/
├── Atmospheric/
└── ...
The Patch System
Patches are plain JSON files stored in patches/ and its subdirectories. Organise them however you like in your filesystem — SoundThing's built-in browser lets you navigate into folders, save into whichever directory you're currently viewing, and mark favourites.
- Open the patch browser from the Master panel.
- Click a folder row (shown in blue) to navigate into it; click
..to go back. - Type a name in the save field and press the save button to write a new patch.
- Star any patch to add it to your favourites list.
SoundThing ships with a library of presets across several categories: Classic, Atmospheric, Chiptune, and Keys.
MIDI Setup
Open the MIDI panel from the Master section to scan for and connect to an input device. The last-used device is remembered between sessions.
CC Learn
Any knob or slider can be mapped to a MIDI CC:
- Enable MIDI Lrn in the Master panel (it will pulse yellow).
- Click the knob or slider you want to control.
- Wiggle the physical control on your MIDI device.
- The mapping is saved automatically and restored on next launch.
The modulation wheel (CC 1) is pre-mapped to oscillator pulse width.
Built With
- Raylib — graphics, audio streaming, and windowing (zlib license)
- ALSA — Linux audio/MIDI (LGPL, dynamically linked)
- WinMM — Windows MIDI (system library)
If SoundThing has been useful to you, consider supporting Raylib's development.
License
License TBD. All rights reserved until stated otherwise.
Made by Anachronaut — anachronautics@gmail.com