Releases: twojstar/wambridge
Release list
WAM Bridge alpha
Rolling alpha, rebuilt from main. Currently 0.0.5-alpha.20260903.48afda9.
The foobar2000 component and the Android APK always come from the same commit. The tag is replaced in place, so these download links keep working.
v0.1.2-alpha — the light goes out
Built from 05806ab, run 31968404676.
The speaker is told the stream is over (#48)
Until now nothing on the PCM path ever said so. Every session left the M5 holding a
SetUrlPlayback whose source had simply vanished — and a speaker in that state never starts
its idle countdown, so the front light stayed on until somebody dealt with it by hand. That
was the "it never sleeps by itself" the notes had been repeating for a week; it was ours.
Each session now ends over the connection the listener already holds, and says what happened:
WAMBRIDGE STOPPED stop=sent sleep=off holding=0
Measured on the physical M5 the same evening, same speaker, two sessions:
| session ended | front light |
|---|---|
| on a build sending no release | still lit 33 minutes after the last audio |
on this build, stop=sent holding=0 |
dark after 17 min 4 s |
Seeking was the risk, since a seek replaces the helper and therefore pauses the speaker before
the next SetUrlPlayback is offered. Four seeks, audio back every time, about a second each.
sleep_after_stop arms SetSleepTimer when you want the speaker down on demand. In normal use
it is not needed — a released speaker gets there on its own.
Also in this build
- A start no longer arrives loud (#52). With the slider routed to the speaker, an explicit
level was handed over before the startup cap was consulted, so the one guard that existed was
bypassed exactly where it was needed.start_volume_maxcaps the first helper of a session,
raw step, default3. - Diagnostics survive the startup window (#51). The
CLOCKline used to stop dead after 240
lines, about four minutes in, which made a stream that died at minute ten look identical to a
healthy one. It now continues at a slower rate for as long as the stream lasts. - One silent command no longer fails the whole status read (#50).
GetPowerStatusdoes not
exist on this firmware and answers with silence; letting that timeout propagate reported a
perfectly healthy speaker as unreachable.
Notes
Pre-release, and honest about it: this is a driver for one speaker model, tested by one person
on one M5. The transport has passed the physical checklist repeatedly, but wav/wav24 remain
opt-in and flac stays the default.
If a stream drops mid-playback, read the CLOCK line before suspecting this component: a full
buffer with submitted frozen means the speaker stopped pulling, which is the network rather
than the encoder. docs/WAM_PROTOCOL.md explains the signature and how to read the speaker's
own radio with GetApInfo.
v0.1.1-alpha — the slider catches up
Second alpha snapshot, built from tested main at fec7253 (Build #327).
Highlights
- Foobar's volume slider can route hardware volume through the PCM helper's existing control connection.
- Tested M5 response drops to about a second, without a process or extra
55001connection per slider update. - Safer dB mapping, slider/menu synchronization, coalescing and volume cap handling.
- Shared CLI/connection plumbing and a substantially expanded test suite.
Still alpha
hardware_volume remains opt-in and volume_max keeps the hardware ceiling conservative (default 10). PR #48, which releases the speaker on stream teardown, is intentionally not included yet because it is still awaiting hardware validation.
v0.1.0-alpha — it plays
First release. A Windows bridge that streams audio over Wi-Fi to Samsung Wireless Audio Multiroom speakers, as a foobar2000 output component and as a CLI.
Everything here was measured against one physical Shape M5 (SPK-WAM550, firmware WAM550WWB-3117.1). Other models in the family are untested — if you have one, I would genuinely like to know what happens.
What works
The foobar2000 component passed its full physical checklist on 2026-08-02: a complete 213-second track start to finish at a median 1.00x with every sample between 0.9x and 1.1x, seek, pause and resume, an unattended transition into the next track, internet radio across a 44.1 to 48 kHz sample-rate switch, and a clean shutdown leaving no FFmpeg or helper process behind.
Also here: SSDP discovery, saved devices resolved by stable device ID, custom radio stations, native TuneIn presets, and a Playback → WAM Bridge menu with emergency stop, standby and raw volume steps.
Read this before installing
Audio reaches the speaker about 13 seconds after foobar plays it. Measured, not estimated. Roughly 7-8 s sits inside the speaker's own prebuffer where no host-side accounting can reach.
Playback is unaffected — the stream runs at wall-clock speed and the seekbar is honest. What suffers is control latency: pause, stop, skip and the volume slider all act on audio the speaker will not play for another thirteen seconds. A lower bitrate makes it worse rather than better; that was measured too, at 16.9 s for MP3 320k against FLAC's 13.4.
The fix is to route each control onto the speaker's own TCP 55001 command path instead of shortening the audio path. Volume already works that way on a branch; pause, stop and skip are next.
Install
Open foo_out_wam.fb2k-component with foobar2000 2.x x64, then pick Preferences → Playback → Output → Samsung M5 (Wi-Fi). FFmpeg must be on PATH. Configuration is an INI file at %LOCALAPPDATA%\WAMBridge\foobar.ini — there is no preferences page yet. See foobar/README.md and foobar/foobar.ini.example.
Alpha means alpha
One person, one speaker, no preferences UI, and a known control-latency limitation. It works and it is honest about where it does not. Failed approaches and their measurements are kept in docs/DEVELOPMENT_STATUS.md and docs/WAM_PROTOCOL.md rather than quietly deleted.
Built from 65ea962.
a27752f0d3fab5a0347e6d36e528fe5eb9aa9bde0288339eb473f9b60b0233ef foo_out_wam.fb2k-component
1ae272df9bc3298234fb3d2bb1e021d04e7f8791b2b189df4c5ea59e53d09e51 wambridge-source.zip