Skip to content

Synth One 0.2.0 — audio device picker, Windows build, Raspberry Pi

Pre-release
Pre-release

Choose a tag to compare

@caseypaite caseypaite released this 05 Aug 17:08

Second 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 at bl_power=4 and 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_required below 3.5, which broke both fetched dependencies, and
    the audio-config path assumed POSIX filesystem::path semantics.
  • 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.