Synth One 0.2.0 — audio device picker, Windows build, Raspberry Pi
Pre-releaseSecond pre-release of the Linux/Windows port. Adds output device selection, a
Windows cross build that works on current toolchains, and the fixes needed to
run on a Raspberry Pi with a DSI panel.
Pick your audio output
The GUI has an AUDIO dialog listing every output the backend can open,
grouped by driver family, with sample rate and buffer size and a readout of
what the running stream actually settled on. Both hosts also take
--list-devices and --device (an index, or any unambiguous part of a device
name).
The choice is remembered in $XDG_DATA_HOME/synthone/audio.json —
deliberately outside the preset directory, since which speaker a machine uses
must not travel with a preset collection. Device indices are not stable, so the
name is stored alongside the index and both must still agree.
Applying reopens the stream between frames; a sample-rate change rebuilds the
DSP kernel and restores the preset and tuning. Every failure path leaves the
synth audible on the device it had before.
Raspberry Pi
- OpenGL 3.1 fallback. The GUI asked for 3.2 core unconditionally. A Pi 4's
V3D driver tops out at 3.1 and the request does not degrade — it fails with
GLXBadFBConfig, so the window was never created and the kiosk restart-looped.
It now tries 3.2 core, falls back to 3.1, and carries the matching GLSL
version with the context. - The kiosk no longer blanks its own display. X blanked after ten minutes
and powered the panel down after twenty. On a DSI panel that is a one-way
trip: the backlight lands atbl_power=4and nothing wakes it. The X server
now runs with-s 0 -dpms. - Larger controls on roomier panels. Compact sizing scales with the display
rather than being fixed at 800x480. A Waveshare 7" (C) at 1024x600 gets knobs
and panel tabs a quarter larger; FX, which had no room to spare at 800x480,
reflows to three shelves there and takes 72px faces instead of 40px. 800x480
renders exactly as before.
Tested end to end on a Pi 4 Model B, Raspberry Pi OS Bookworm (arm64), with a
Waveshare 7" DSI LCD (C). That panel needs its own overlay — see the kiosk
section of linux/README.md. Driving it with the official display's
vc4-kms-dsi-7inch renders correctly but never lights the backlight, because
that overlay binds an ATTINY at 0x45 which the panel does not have.
Fixes
- Windows cross build repaired. CMake 4 dropped compatibility with
cmake_minimum_requiredbelow 3.5, which broke both fetched dependencies, and
the audio-config path assumed POSIXfilesystem::pathsemantics. - Sequencer step indicator. The kernel's beat counter free-runs — a single
held note walks it past 260 — and the UI never folded it back, so the lit step
went dark once a held note outlasted one pass of the sequence. It now wraps,
and rests on step 1 when nothing is held, matching the iOS panel. - Audio config moved out of the preset directory, where a bank named
"audio" would have collided with it.
Downloads
| file | platform |
|---|---|
synthone-linux-x86_64.zip |
Linux x86_64 |
synthone-linux-aarch64.zip |
Linux arm64 (Raspberry Pi 4/5, 64-bit OS) |
synthone-windows-x86_64.zip |
Windows 10/11 x86_64 |
Linux: unzip and run ./install.sh (add --kiosk on a Pi to boot straight
into the synth). Windows: unzip and run synthone-gui.exe — the binaries are
statically linked and import only Windows' own DLLs.
Each archive has a .sha256 beside it; verify with sha256sum -c.
The aarch64 archive was compiled natively on a Raspberry Pi 4; the other two
were built on Linux x86_64, Windows cross-compiled with MinGW-w64.