I’ll track releases in here.
Caldera Music Headless v1.0.44
Fixed
- The systemd service now works for any user, not just
pi, installing on a Pi with a different username no longer fails to start. The unit file uses the running user’s home directory instead of a hardcoded path. - A “play” command from a remote (e.g. Plexamp) is no longer created on a different Plex server than the one it asked for. If the requested server can’t be reached, the daemon now refuses instead of falling back to whichever server was selected.
- Signing into a different Plex account no longer leaves the daemon unable to play (the server rejecting requests with HTTP 401); it now re-fetches the device list and tokens for the new account.
- A pinned output device set in config is now honored, it no longer reverts to the system default when the set of audio devices changes (e.g. a USB DAC is plugged or unplugged).
Changed
--list-devicesand setup now explain why a device that appears inaplay -Lis missing — it reports per-device reasons (e.g. “Device or resource busy”, “Permission denied”) instead of silently dropping it, and hints to check for another player holding the device oraudio-group membership.
Caldera Amp v1.0.44
Fixed
- On Windows, turning on Exclusive Mode (Settings → Audio) no longer crashes Caldera Amp. Applying exclusive WASAPI output overran an internal list of candidate output formats and smashed the stack, so the app died the instant exclusive mode took effect; the list is now sized correctly.
- The output device picker now reflects and remembers your choice. It previously always showed the first device in the list — never the actual default, never the device you picked last session — and a manually selected device was forgotten on restart (playback fell back to the system default). The picker now has an explicit “Automatic (system default)” option, shows the currently active device on open, and a pinned device is reopened on the next launch. A saved device that’s since been unplugged now falls back to the system default instead of leaving the app with no audio.
- The Linux Flatpak now opens the visualizer window (and its drop-down menu) out of the box. The bundle never requested session-bus access, which GTK needs to export the app/window menus, so the visualizer menu and window did nothing until you granted “session bus” manually in Flatseal. The bundle now ships with that access built in.
- Switching Plex accounts no longer leaves Caldera Amp unable to play, with the server rejecting requests (HTTP 401). After signing out and into a different account, the app kept using the previous account’s saved per-server tokens; it now discards them and re-fetches the server list for the new account.
- A “play” command from a remote (e.g. Plexamp) is no longer created on — nor your token sent to — a different Plex server than the one it asked for. If the requested server can’t be reached, Caldera Amp now refuses instead of falling back to whichever server was selected.
- On Linux, the visualizer window can be reopened from the tray after you close it — previously, closing it once meant it would not come back.
- On Linux, signing out now returns to the sign-in screen instead of quitting the app.
- On Linux, album art now shows in the desktop’s media controls and notifications (GNOME’s clock/lock-screen widget, KDE’s media applet, etc.). The MPRIS art was published as a bare Plex path no notification daemon could load; the cover is now downloaded, cached locally, and exposed as a file:// image.
- Album art now loads on networks with DNS-rebinding protection (some routers, Pi-hole, NextDNS), where it previously stayed blank even though music and the rest of the library loaded fine.
- On Windows, playback no longer stays silent and stuck at 0:00 on audio devices with a multichannel shared-mode format (e.g. RME interfaces, HDMI 5.1/7.1); music now starts normally (stereo plays on the front L/R channels).
- The disk cache size limit (Settings → Storage) is now actually enforced. It was largely ignored before — the cache could grow to many times the configured size — because the entire upcoming-queue window (up to 30 tracks) was pinned against eviction and trimming ran only about once an hour. Now only the current and next track are pinned, and the cache is trimmed promptly back under the limit.
- With repeat-all on, pressing Previous on the first track (which wraps to the last track) no longer stops playback — the wrapped-to track now plays as expected, even while it’s still buffering.
- On Linux, a transient USB-audio glitch no longer leaves Caldera Amp silently “playing” with the position barely advancing. The audio device is now reset after an I/O error (recovering once it’s back), and the position freezes during the dropout instead of creeping forward with no sound.
- On Linux, the visualizer now scales its resolution and frame rate to the GPU and renders flicker-free, instead of tearing or stuttering on lower-end graphics.
- macOS: The visualizer window no longer flashes purple/pink the first time it opens — it now stays black until the first frame is drawn.
Changed
- macOS: Caldera Amp now ships as a universal binary — it runs natively on both Apple Silicon and Intel Macs (previously Apple Silicon only).
- The Linux Flatpak now builds against the GNOME 50 runtime (was 47), so it shares the newer freedesktop 25.08 GL/Mesa and Intel VAAPI drivers instead of pulling in a second, outdated copy. Users already on current GNOME apps no longer download a duplicate ~1.5 GB of runtime and graphics stacks.
Caldera Music Headless v1.0.45
Fixed
- The last track of an album no longer repeats forever; playback now stops when it ends.
- On launch, a paused restored session no longer shows as “playing” to Plex and remotes; it stays paused until you press play.
- Skipping into a track while it was crossfading in could leave playback silent for a minute or two (with the position still ticking) before sound returned. The skipped-to track now starts immediately.
- Periodic crackling on devices with a large hardware buffer is gone, and high-sample-rate tracks (176.4 / 192 kHz) glitch less. The mixer now sizes its safety buffer to the device and sample rate instead of repeatedly blanking the output to refill.
- Remote control and multi-room no longer become unreachable after other players on the network restart. A burst of reconnecting mesh peers could deadlock the control server until the daemon was restarted.
Caldera Amp v1.0.45
New
- macOS: Exclusive Mode (Settings → Audio): take exclusive ownership of the output device (Core Audio hog mode) so the app’s requested buffer size and sample rate hold without other apps renegotiating the shared device. The device is yielded again when playback is idle and re-claimed on resume.
Fixed
- macOS: output latency is now measured and reported accurately, sized from the device’s true callback instead of the AudioUnit’s render-slice size.
- The visualizer no longer gradually loses its audio reactivity after a pause, dropout, or silent gap, and now reacts correctly at high output sample rates (treble bands no longer fall into empty ultrasonic bins).
- On launch, a restored session no longer briefly plays audio; it now stays paused until you press play.
- On launch, a restored-but-paused session no longer reports itself as “playing” to Plex and remote controllers; they now show it paused until you press play.
- Skipping to the next track while it was crossfading in could leave playback silent for up to a couple of minutes (with the position still advancing as if it were playing) before sound returned. The skipped-to track now starts immediately.
- The last track of an album no longer repeats forever: when the final track drains, playback now stops instead of replaying it indefinitely.
- macOS: periodic audio crackling/stuttering on output devices with a large hardware buffer (e.g. some “System Default” routes at 96 kHz) no longer occurs. The mixer’s safety buffer now scales to the device’s actual callback size instead of a fixed duration, and a brief dip no longer blanks output to re-prime.
- Remote control and multi-room no longer become unreachable after other players on the network restart. A burst of mesh peers reconnecting could deadlock the control server until the app was relaunched; reconnect handling no longer blocks on itself.
- On Linux, the visualizer’s Preset Advance setting (Settings → Visualizer) now works and is remembered. It was stuck on “Timed” no matter what you picked: Per Track and Manual had no effect, and the choice was never written to the preferences file. The setting now applies immediately, persists across restarts, and is honored when the visualizer first opens.
- On Linux, the Settings window can be reopened after you close it. Closing it once destroyed the window but left the tray menu item pointing at the dead window, so selecting Settings again did nothing; it now hides on close and reopens correctly.
Caldera Music tvOS v1.0.4
New
- Settings → Now Playing controls what stays on screen when the player goes idle in album-art mode: a toggle each for the signal chain, track titles, and seekprint waveform. Defaults match the previous behaviour.
Fixed
- MP3 tracks now play on networks/devices that can’t resolve plex.direct hostnames (they previously failed to start).
- Multi-room and network audio no longer slip into a stuck, glitchy state after roughly 13.5 hours of continuous playback.
- Audio streamed to this Apple TV from another Caldera node no longer stays silent while it is itself casting to other speakers — it now plays the incoming audio on its own output while continuing to stream to the others.
- The visualizer no longer stutters or goes flat while playing audio received from another Caldera node.
- Customizing your home screen (reorder, hide) now sticks across month/year rotations of hubs like “On This Day” and “Most Played in June”, and survives transient empty hub responses that previously wiped your changes.
- Settings → Home Screen no longer pushes the top tab bar offscreen as you scroll, leaving it stranded out of reach when you back out. The list now scrolls under the tab bar like the rest of Settings.
- Settings → Home Screen now shows generic labels for hubs whose title rotates over time — e.g. “Most Played in … (month)” rather than “Most Played in June”. The home screen itself is unchanged; this is only in the reorder UI so you’re not chasing a moving target.
- Skipping to the next track while it was crossfading in could leave playback silent for a couple of minutes with the position still ticking. The skipped-to track now starts immediately.
- Remote control and multi-room no longer become unreachable after other players on the network restart — a burst of mesh peers reconnecting could deadlock the control server until the app was relaunched.
- The visualizer no longer gradually loses its audio reactivity after a pause or silent gap, and now reacts correctly at high output sample rates (treble bands no longer fall into empty ultrasonic bins).
- On launch, a restored-but-paused session no longer reports itself as “playing” to Plex and remote controllers — they now show it paused until you press play.
- The Play Queue carousel now opens centered on the currently-playing track instead of landing on the last (or near-last) track for any queue shorter than ~31 items.
- Album art now loads on networks with DNS-rebinding protection (some routers, Pi-hole, NextDNS), where it previously stayed blank even though music loaded fine.
- Settings → Music Library no longer traps you on a single-library account — the selected row stays focusable so pressing Menu backs you out instead of leaving you stuck.
- The sort menu on the Library tab’s Playlists view now actually takes effect — the picker was being ignored all the way down to the Plex API call.
- Switching Plex accounts no longer leaves Caldera Music unable to play (HTTP 401) — saved per-server tokens from the previous account are now discarded on sign-out.
- A “play” command from a Plex remote (e.g. Plexamp) is no longer created on a different Plex server than the one it asked for. If the requested server can’t be reached, Caldera Music now refuses instead of falling back to whichever server was selected.
- The disk cache size limit (Settings → Storage) is now actually enforced. It was largely ignored before — the cache could grow to many times the configured size — because the upcoming-queue window was pinned against eviction and trimming ran only about once an hour.
- With repeat-all on, pressing Previous on the first track (which wraps to the last) no longer stops playback — the wrapped-to track now plays as expected, even while still buffering.
Caldera Music Headless v1.0.46-beta.1
New
- Beta releases: install or upgrade with
--betato get pre-release builds early, or--stableto switch back. A beta box always runs the newest build across both channels, so it drops back to the stable release whenever that is the newest.
Fixed
- Log files no longer grow without bound (some reached several GB on long-running installs); the daemon now rotates its log at 5 MB and keeps the last 5, and it reports network-audio clock-sync status less often (every 30s instead of every 5s).
- An unavailable track no longer freezes playback (spinning and hammering the server); it is now skipped when it comes up and the rest of the playlist plays through.
- Stopping playback while a track was still opening on a slow or hung connection no longer crashes the daemon.
- Tracks in a format the player can’t decode itself now play (the server transcodes them) instead of failing to start.
- After the device moves between networks (e.g. LAN↔WAN, or onto a different Wi-Fi) while off, playback now reconnects to your Plex server on its own instead of failing to start until you sign out and back in.
- Resuming after a long pause no longer restarts the track from the beginning; playback picks up where you left off.
- Speakers on a machine with more than one network interface no longer drop out of multi-room or get probed over and over; a peer’s known addresses now accumulate instead of replacing each other, and a peer that changes IP is followed to its new address.
- A USB DAC that disappears during playback (unplugged, or its input switched away) now recovers on its own. Audio resumes a second or two after the device returns, instead of staying silent until the daemon is restarted.
- The playback position no longer keeps ticking forward during a buffering stall while no audio is playing; the transport now shows a buffering state and freezes the clock until sound resumes.
- MP3 tracks now play on networks that can’t resolve plex.direct hostnames (they previously failed to start).
- A device receiving audio from another Caldera node now resumes that stream on its own after a restart, instead of going silent until you re-select it in the controller.
- Multi-room and network audio no longer degrade into a stuck, glitchy state after about 13.5 hours of continuous playback.
- Audio streamed to this device from another Caldera node no longer stays silent while the device is itself casting to other speakers; the incoming source now plays on its own output while it keeps streaming to the others.
- Two players on the same machine (e.g. this daemon alongside Plexamp) no longer flicker between each other’s names in a remote’s speaker list.
- Casting to this device while paused part-way through a track, then pressing play, now resumes from that spot instead of restarting the track from the beginning.
- Switching the audio channel mode back to “Source” now takes effect immediately; it previously stayed on the fixed layout you had selected (e.g. 5.1) until you first switched to another layout.
Changed
- The disk cache now defaults to a 512 MB limit instead of growing without bound. Set
cache.maxSizeBytes=0for unlimited, or any size (e.g.2G) to raise it.
Caldera Music Headless v1.0.46-beta.2
Fixed
- Two Caldera players on the same machine that share one network address (e.g. the tvOS and Android TV apps running together) now both stay connected, instead of repeatedly knocking each other off that address.
Caldera Music Headless v1.0.46-beta.3
New
- The streaming quality settings (
streaming.maxBitrateWiFi,streaming.maxBitrateCellular,streaming.conversionBitrate,streaming.downmixToStereo) now appear in--prefsand return their defaults from--get, so you can see and tune the transcode thresholds.
Fixed
- Stopping and then replaying while sending audio to another speaker could occasionally start silent while showing as “playing”, needing a pause and resume to recover; it now plays reliably on the replay.
- An idle daemon that received a pause command no longer reports itself as “paused” with no track to remotes; it now correctly shows as stopped.
- Starting multi-room networking no longer intermittently crashes the daemon when its mesh services race the network event loop during startup.
Caldera Music for Google TV v1.0.0 (9)
New
- The visualizer runs noticeably smoother on Google TV: capable presets now reach up to 60fps (previously capped at 30), and each preset remembers the resolution and frame rate it settled on so it no longer has to hunt for it every time it plays.
- Turning the visualizer off on Now Playing now shows a colour wash drawn from the album art, matching the album and artist pages, instead of a plain dark background.
- The album page has a “…” menu next to Play, Shuffle and Radio with Go to Artist, Play Next and Add to Queue. Play Next and Add to Queue take the whole album in one go.
- Press and hold a track now offers Play Next as well as Add to Queue.
- Press and hold an artist, album or playlist in the Library now offers Play Next and Add to Queue; previously only playlists had a menu at all, with a single greyed-out entry.
Fixed
- The coloured glow around a focused card is now visible on every card. Cards whose art is dark, muted, grey, or deep blue used to get a glow so faint it looked like there was none; the glow tint is now brightened to a readable level while keeping the art’s colour.
- Moving between the Home tab and its rows no longer changes the selected card or makes the row lurch sideways.
- Returning from an artist, album or playlist now restores the exact card and scroll position you left on Home, Library, Charts, Search, artist pages and album pages; nested details stay in place instead of rebuilding underneath you.
- The visualizer no longer freezes for a second or two when a new preset loads.
- The visualizer no longer briefly stutters or drops to a blocky low resolution at random.
- Very demanding presets that used to crawl at a fraction of a frame per second now quickly scale back to a smooth frame rate instead of staying stuck.
- Starting a track sometimes stopped it again a fraction of a second later, seemingly at random. While a new queue loaded, Caldera briefly told the system nothing was playing, and the Google TV launcher answered that by sending a stop command that landed after the next track had already begun.
- After playback finishes, Now Playing no longer keeps showing the last track’s progress bar, elapsed and total time, signal path, and an empty album-art panel.
- Playback position and duration are no longer reported from a previously played track, which could make a newly started track look like it had already finished.
- Artist pages now show each release’s year under the album art instead of repeating the artist’s name on every card — on the discography row and on Singles & EPs, Live Albums, Compilations and Demos.
- The press-and-hold menu on a track no longer vanishes before you can choose an action, and no longer fires the top action the moment it opens, leaving no chance to scroll.
- The highlight in the album “…” and press-and-hold menus is now the same bright one used in Settings, instead of a tint that was nearly invisible.
- Back now closes the album “…” and press-and-hold menus on the first press instead of only clearing the highlight.
- The Library tab’s press-and-hold menus now look and behave like the ones on the album and artist pages — they were a separate, older implementation.
- The album page’s "Go to " text, which didn’t read or behave like a button, is gone; it’s now an entry in the album’s “…” menu.
- Settings › Music Library now opens with your current library focused and scrolled into view. When it sat far down the list, nothing was selectable and the D-pad did nothing.
- A long library name no longer pushes the “Music Library” title onto a second line or cuts it short in Settings; the library name itself now shortens instead.
Caldera Music for Apple TV v1.0.5
New
- Control the music visualizer from a Plex remote or app: switch to the next, previous, or a random preset, or jump straight to a specific one.
Fixed
- Starting multi-room networking no longer intermittently crashes when its mesh services race the player’s network event loop during startup.
- On a multi-disc album, the per-disc play button now starts that disc instead of just stopping whatever was playing.
- Tracks now credit their own artist wherever they appear (Now Playing, the play queue, playlists, search, and the home rows) instead of always showing the album artist. On compilations, features, and DJ mixes these differ. Album pages continue to credit a track’s own artist on a second line.
- The music visualizer now looks much closer to the original MilkDrop across a large number of presets. Many that used to animate at the wrong speed, leave trails that drifted or smeared, or draw their waveforms too thin or too thick now render the way they’re meant to.
- The visualizer now reacts more consistently to real music, including stereo and high-sample-rate tracks. Preset changes no longer get an exaggerated first-frame audio spike, and treble/bass motion stays tied to the audible music instead of drifting into empty ultrasonic ranges.
- Audio no longer goes permanently silent (while the player keeps showing it as playing) after the TV or receiver renegotiates HDMI — switching inputs, changing resolution, an ARC/eARC re-handshake, or a surround/format switch. The app now detects the audio-route change and restarts its output automatically instead of needing you to background and reopen it.
- Casting to Caldera Music while paused part-way through a track, then pressing play, now resumes from that spot instead of restarting the track from the beginning.
- Switching the audio channel mode back to “Source” now takes effect immediately; it previously stayed on the fixed layout you had selected (e.g. 5.1) until you first switched to another layout.
- After a network change — a Wi-Fi switch, or a router reboot that briefly makes your Plex server unreachable — the app now reconnects to your server on its own, instead of failing to play until you sign out and back in.
- The visualizer no longer flashes a pink frame when a preset first appears, and crossfades between presets now blend cleanly.
- In multi-room, a speaker on a device with more than one active network interface (e.g. Wi-Fi and Ethernet both connected) no longer drops out or gets probed over and over, and a speaker that moves to a new IP address (e.g. after a DHCP renewal) is now followed to its new address instead of going unreachable. A peer’s known addresses accumulate instead of replacing each other.
- The app’s diagnostic log no longer grows without bound during long, uninterrupted listening sessions. It previously rotated only at launch, so an all-day session that never restarted could balloon a single log to several gigabytes of device storage; it now also rotates once the log passes 5 MB (keeping the last five).
- A track in a format Caldera Music can’t decode itself now plays — Plex transcodes it on the fly — instead of failing to start.
- Stopping playback while a track is still opening on a slow or hung connection no longer crashes the app.
- When nothing is playing, a pause command from a remote no longer makes the app report itself as “paused” with no track; it now correctly shows as stopped.
- Customizing your home screen (reorder, hide) now sticks across month/year rotations of hubs like “On This Day” and “Most Played in June” — previously those would silently revert to default order each time the underlying identifier rotated, and a transient empty hub response could wipe your customizations entirely.
- Album and track artwork now loads from remote (over-the-internet) Plex servers again.
Caldera Music Headless v1.0.46
New
- The daemon now serves a full, self-describing settings API at
GET /api/prefs/schema: every setting grouped and typed with its current value, allowed choices, units, ranges, and dependencies, so a remote app can build a settings screen without hard-coding anything. Runtime choices such as the output-device list come fromGET /api/prefs/options. - The equalizer is now fully parametric: each of the 10 bands takes a filter shape (peaking, low shelf, or high shelf) and a movable center frequency, set over the EQ HTTP routes and exposed to multi-room peers.
- The streaming quality settings (
streaming.maxBitrateWiFi,streaming.maxBitrateCellular,streaming.conversionBitrate,streaming.downmixToStereo) now appear in--prefsand return their defaults from--get, so you can see and tune the transcode thresholds. - Beta releases: install or upgrade with
--betato get pre-release builds early, or--stableto switch back. A beta box always runs the newest build across both channels, so it drops back to the stable release whenever that is the newest.
Fixed
- Fixed a data race that could crash the daemon while multi-room networking is active, when broadcasting playback state to the other players.
- Fixed wrong playback position after a restart: the daemon could resume ahead of where you left off, and until playback started it reported a stale position to remotes (a point from the previously played track, or the end of a finished one).
- Playback no longer hangs when the daemon restores and resumes a session after a restart.
- The daemon no longer crashes on shutdown when a still-active remote-control listener is torn down after playback has already stopped.
- When playback stops, remotes now correctly show nothing playing instead of the finished track lingering in Now Playing.
- Stopping and then replaying while sending audio to another speaker could occasionally start silent while showing as “playing”, needing a pause and resume to recover; it now plays reliably on the replay.
- An idle daemon that received a pause command no longer reports itself as “paused” with no track to remotes; it now correctly shows as stopped.
- Starting multi-room networking no longer intermittently crashes the daemon when its mesh services race the network event loop during startup.
- Two Caldera players on the same machine that share one network address (e.g. the tvOS and Android TV apps running together) now both stay connected, instead of repeatedly knocking each other off that address.
- Log files no longer grow without bound (some reached several GB on long-running installs); the daemon now rotates its log at 5 MB and keeps the last 5, and it reports network-audio clock-sync status less often (every 30s instead of every 5s).
- An unavailable track no longer freezes playback (spinning and hammering the server); it is now skipped when it comes up and the rest of the playlist plays through.
- Stopping playback while a track was still opening on a slow or hung connection no longer crashes the daemon.
- Tracks in a format the player can’t decode itself now play (the server transcodes them) instead of failing to start.
- After the device moves between networks (e.g. LAN↔WAN, or onto a different Wi-Fi) while off, playback now reconnects to your Plex server on its own instead of failing to start until you sign out and back in.
- Resuming after a long pause no longer restarts the track from the beginning; playback picks up where you left off.
- Speakers on a machine with more than one network interface no longer drop out of multi-room or get probed over and over; a peer’s known addresses now accumulate instead of replacing each other, and a peer that changes IP is followed to its new address.
- A USB DAC that disappears during playback (unplugged, or its input switched away) now recovers on its own. Audio resumes a second or two after the device returns, instead of staying silent until the daemon is restarted.
- The playback position no longer keeps ticking forward during a buffering stall while no audio is playing; the transport now shows a buffering state and freezes the clock until sound resumes.
- MP3 tracks now play on networks that can’t resolve plex.direct hostnames (they previously failed to start).
- A device receiving audio from another Caldera node now resumes that stream on its own after a restart, instead of going silent until you re-select it in the controller.
- Multi-room and network audio no longer degrade into a stuck, glitchy state after about 13.5 hours of continuous playback.
- Audio streamed to this device from another Caldera node no longer stays silent while the device is itself casting to other speakers; the incoming source now plays on its own output while it keeps streaming to the others.
- Two players on the same machine (e.g. this daemon alongside Plexamp) no longer flicker between each other’s names in a remote’s speaker list.
- Casting to this device while paused part-way through a track, then pressing play, now resumes from that spot instead of restarting the track from the beginning.
- Switching the audio channel mode back to “Source” now takes effect immediately; it previously stayed on the fixed layout you had selected (e.g. 5.1) until you first switched to another layout.
Changed
- Settings written over HTTP or with
--setare now range-checked: out-of-range numbers are clamped and invalid choices fall back to the default, so a mistyped value can’t push the audio engine into a bad state. - The disk cache now defaults to a 512 MB limit instead of growing without bound. Set
cache.maxSizeBytes=0for unlimited, or any size (e.g.2G) to raise it.
Caldera Music for Google TV v1.0.0 (versionCode 10)
Fixed
- The whole UI no longer freezes (and the app no longer gets killed by the system) when leaving the Now Playing screen — or when the screensaver kicks in on it with nothing playing — on TVs whose GPU driver stalls mid-frame in the visualizer.
- The UI no longer freezes for several seconds while loading album art for items on a different Plex server than the one you’re signed into (search results, cross-library rows); that art now resolves in the background instead of blocking.
Caldera Music for Google TV v1.0.0 (versionCode 11)
Fixed
- The glow around a focused card is no longer clipped on its left edge, on the Search screen’s recent searches, and on the album rows of artist and album pages.
- On artist and album pages, the extra rows below the main content (Compilations, Live Albums, Soundtracks, Singles & EPs, Related) now load their full contents as you scroll instead of stopping after the first 10.
- On the Vulkan renderer, visualizer presets that rely on blur (including many reaction-diffusion and edge-styled MilkDrop2077 presets) now render their full detail instead of looking washed-out or oversimplified.
- Opening Now Playing no longer freezes the remote for several seconds while the visualizer’s first preset compiles; input stays responsive and the visualizer fades in a beat later.
- In the visualizer’s fullscreen mode, pressing up, down or back now lands the highlight straight on the Play/Pause button instead of leaving it hidden until you hunt for it.
- A home-screen row you’ve reordered (such as Mixes For You) no longer drifts down or jumps to the bottom when the server temporarily leaves it out of a refresh; it keeps its place and reappears where you put it.
- Improved reliability when switching the visualizer renderer between OpenGL ES and Vulkan in Settings.
Changed
- Home, Library, Charts, Search and the artist/album pages now share one left margin and one section-title size, so content lines up consistently as you move between tabs; previously each screen used slightly different spacing and title sizes.
- The visualizer preset name now only appears when Visualizer OSD is turned on (Settings › Visualizer), so you can keep the visualizer clean with no on-screen text.
Caldera Music Headless v1.0.47
Fixed
- When streaming audio to several speakers at once, one of them going offline no longer makes the others briefly play too fast and then too slow (an audible pitch shift) at track changes.
Caldera Amp v1.0.46
New
- Linux: Settings has a new Streaming section — cap the streaming quality (the bitrate above which remote playback transcodes to Opus), set the target transcode bitrate, and toggle downmixing to stereo. Brings Linux to parity with macOS and Windows.
- Linux: Settings › Visualizer now has Shuffle Presets and Preset Transitions toggles — turn shuffle off to step through presets in order, or transitions off for instant cuts instead of crossfades.
- Linux: Settings › Audio adds an FFmpeg option to Resampler Quality.
- Linux: Settings › Debug has a Send Debug Logs button that emails the app’s logs to the developer.
- macOS: Settings has a new Streaming section: cap the streaming quality (the bitrate above which remote playback transcodes to Opus to save bandwidth), set the target transcode bitrate, and toggle downmixing to stereo. Music on a local (LAN) server always plays at original quality.
- macOS: Settings › Visualizer now has Shuffle Presets and Preset Transitions toggles — turn shuffle off to step through presets in order, or turn transitions off for instant cuts instead of crossfades between presets.
- Settings has a “Receive beta updates” toggle (macOS and Windows). Turn it on to get pre-release builds early; turn it off to return to stable releases. A beta box always offers the newest build across both channels, so it drops back to a stable release whenever that is newest.
- Windows: the visualizer can now be remote-controlled over HTTP via the Plex Companion server (
/player/visualizer/*) — advance to the next/previous/random preset, jump to a specific preset, and read the current preset and full preset list. Brings Windows to parity with macOS, iOS, and Android. - A now-playing overlay over the visualizer: album art, title/artist/album, and a SoundCloud-style seekprint that fade in on track change. The layout re-flows for the window’s size and aspect (wide/TV, tall, square, tiny), there’s a compact corner-chip mode (press
c), and a show/hide toggle (presso). Works for both local playback and audio received over the mesh. Now available on Windows too (previously macOS/Linux only).
Changed
- Visualizer presets built from custom shapes or waves now use noticeably less CPU, most apparent on the busiest presets.
Fixed
- Linux: many visualizer presets no longer render black — the composite shader failed to link on the OpenGL backend.
- The now-playing waveform (seekprint) now appears for audio received from another Caldera speaker over the mesh, instead of showing a plain bar. It’s fetched from the track’s own Plex server (with a fallback to the sending speaker for streaming-service tracks).
- Fixed a data race that could crash the app while multi-room networking is active, when broadcasting playback state to the other players.
- The volume shown by a Plex remote and by a multi-room (Snapjack) speaker controller now stay in sync. Changing it from one — for example while playing a stream received from another Caldera speaker — no longer left the other reporting a stale, different level.
- The now-playing seekprint waveform now loads reliably; its fetch was being skipped when the play queue was started from a Plex remote, so the waveform never appeared.
- Windows: starting playback from a Plex remote is now reliable — it could previously come up silent (the audio backend failed to initialize on that thread) or never start at all (the request stalled behind other network work). Audio and the visualizer now start as expected.
- Windows: the visualizer preset-name pop-up is no longer tiny and stuck to the left on scaled/HiDPI displays — it now scales with the display and sits centered at the bottom of the window.
- Starting multi-room networking no longer intermittently crashes when its mesh services race the player’s network event loop during startup.
- Windows: with Exclusive Mode on, high-resolution audio (e.g. 24/96) now plays at the source rate again instead of getting stuck resampling to 48 kHz. If the exclusive device open failed once — e.g. the device was still held briefly after an abrupt restart — the app gave up on exclusive mode for the whole session and fell back to shared mode (which is locked to the system rate); it now retries exclusive on the next track/rate change. The reason an exclusive open fails is now written to the log.
- The visualizer no longer flashes pink/magenta for a frame when the window first opens — it now starts on black.
- Visualizer preset transitions no longer show briefly mis-composited garbage during the crossfade; the outgoing and incoming presets now blend cleanly.
- Windows: playback now recovers on its own when the audio device disappears and comes back — an HDMI display going to sleep, USB power management, or unplugging and replugging a USB DAC. Previously the app was left silent and required a full restart; it now rebuilds the audio output when the device returns and resumes from where it stopped.
- After the device moves between networks (e.g. LAN↔WAN, or onto a different Wi-Fi) while off, playback now reconnects to your Plex server on its own instead of failing to start until you sign out and back in.
- Windows: the log file now captures the full startup sequence — app version, output device, and config/cache paths — instead of starting partway through. The logger opened its file too late, so the early startup lines were dropped on this windowed (no-console) app.
- Windows: WASAPI exclusive mode on a 24-bit device is no longer drastically quiet. Output is a full-scale signal again; previously the 24-bit samples were placed in the wrong bits of the device’s 32-bit word, making playback roughly 48 dB too quiet.
- Windows: Caldera Amp now has its own icon in the taskbar, Start menu, shortcuts, and the system tray, instead of showing the generic default program icon everywhere except the installer.
- The now-playing overlay shows the track’s own artist on compilations, features, and DJ mixes, instead of always showing the album artist.
- The visualizer now looks much closer to the original MilkDrop across a large number of presets. Presets with sprites, glassy blends, feedback trails, custom waves, and fine line details now render with the intended shape, brightness, and motion instead of looking smeared, too thin, or missing effects.
- The visualizer now reacts more consistently to real music, including stereo and high-sample-rate tracks. Preset changes no longer get an exaggerated first-frame audio spike, and treble/bass motion stays tied to the audible music instead of drifting into empty ultrasonic ranges.
- Linux: a range of visualizer presets that rendered incorrectly on the Linux backend — soft or low-resolution, collapsed into a flat smear or to black, washed out to white, the wrong hue, or mis-tiled — now render correctly, matching macOS. Several shader-translation bugs specific to the Linux/Vulkan path are fixed.
- Windows: the visualizer (and its now-playing overlay) now render at full resolution on HiDPI displays. The app was DPI-unaware, so on a scaled display (e.g. 200%) the visualizer window was drawn at half resolution and stretched up by Windows — soft and blocky, the overlay text and album art especially. The app is now per-monitor-DPI-aware, so the window renders natively (sharp), at the correct size, and re-adapts when moved between monitors of different scale. The Settings window likewise opens at its intended size on HiDPI displays instead of half-size.
- macOS: “Match Source” sample rate now actually switches the output device’s rate to match each track, instead of leaving the device at its previous rate and resampling underneath. Changing the device rate no longer requires Exclusive Mode.
- A device receiving audio from another Caldera node now resumes that stream on its own after a restart, instead of going silent until you re-select it in the controller.
- Windows: Caldera Amp now exits cleanly when installing an update, instead of getting stuck so you had to end it from Task Manager. The updater’s shutdown step could deadlock — WinSparkle waited for the app to exit so it could launch the installer, while the app waited for WinSparkle to finish cleaning up — so the process never terminated and the update couldn’t proceed. Updater cleanup no longer blocks shutdown.
- Two players on the same machine (e.g. Caldera Amp alongside Plexamp) no longer flicker between each other’s names in a remote’s speaker list.
- Casting to Caldera Amp while paused part-way through a track, then pressing play, now resumes from that spot instead of restarting the track from the beginning.
- Switching the audio channel mode back to “Source” now takes effect immediately; it previously stayed on the fixed layout you had selected (e.g. 5.1) until you first switched to another layout.
- An unavailable track no longer freezes playback (spinning and hammering the server); it is now skipped and the rest of the queue plays through.
- Stopping playback while a track is still opening on a slow or hung connection no longer crashes the app.
- A track in a format Caldera Amp can’t decode itself now plays — Plex transcodes it on the fly — instead of failing to start.
- MP3 tracks now play on networks that can’t resolve plex.direct hostnames (they previously failed to start).
- In multi-room, a speaker on a machine with more than one network interface no longer drops out or gets probed over and over, and a speaker that changes IP address (e.g. after a DHCP renewal) is now followed to its new address. A peer’s known addresses accumulate instead of replacing each other.
- The log file no longer grows without bound over long-running sessions. It previously rotated only at launch, so an always-on menu-bar session could balloon a single log to several gigabytes; it now also rotates once the log passes 5 MB (keeping the last five).
- Stopping and then replaying while sending audio to another speaker could occasionally start silent while showing as “playing”, needing a pause and resume to recover; it now plays reliably on the replay.
- When nothing is playing, a pause command from a remote no longer makes the app report itself as “paused” with no track; it now correctly shows as stopped.
- Fixed playback sometimes resuming far ahead of where you left off after the app was restarted.
Caldera Music for Google TV v1.0.0 (versionCode 13)
Fixed
- The visualizer now draws through the same display path video players use: less flicker, no more blank or black visualizer on the TVs where it misbehaved, and it keeps animating smoothly while the rest of the interface is busy.
- Some visualizer presets looked wrong — a muddy or washed-out glow, and on some TVs parts of the picture missing altogether. They now render as intended.
Changed
- The visualizer now favours a sharp picture over a high frame rate: on a demanding preset it settles at 30fps at close to full resolution instead of running faster and much blurrier, and it only goes back to 60fps when it can hold that without giving the sharpness back. Previously a preset that was slightly too heavy for 60fps could get stuck at a quarter of the resolution for as long as it was on screen.
- On 32-bit TV boxes the visualizer is no longer capped at 720p. Presets that have the headroom now render up to the TV’s full 1080p instead of being drawn at 720p and stretched, so they look noticeably sharper; heavier presets are unaffected.
Caldera Music for Google TV v1.0.0 (versionCode 14)
New
- Now Playing’s seekprint has a second look: Settings › Appearance › Player › Seekprint Style switches between the existing bars and a new smooth flowing waveform.
- Pressing DOWN from Now Playing’s button bar goes full-screen.
- Settings › Visualizer › Maximum Resolution caps how sharp the visualizer renders, for boxes that struggle at full resolution. Left on Auto it reports what it has settled on for your box, and picking a resolution yourself overrides it, so you can force it lower, or push it back up to see whether your box copes.
Fixed
- Fixed a rare crash while streaming, caused by a threading race in the audio cache’s background fill task (most likely on 32-bit devices).
- Now Playing no longer freezes for seconds at a time while upcoming tracks download in the background.
- Changing the visualizer preset with LEFT/RIGHT in full-screen no longer brings the controls back with it.
- Track changes no longer pull the whole Now Playing interface back out of full-screen, the album art and details briefly appear to show what came on, then fade away again.
- With the visualizer turned off, full-screen showed nothing but the background. It now shows the album art and the Now Playing details you’ve enabled in Settings.
- Fixed a torn or garbled Now Playing background on boxes that run out of graphics memory at full resolution, the visualizer now permanently steps its resolution down on those TVs instead of continuing to draw broken frames.
Changed
- With the visualizer switched off, Now Playing no longer keeps drawing it invisibly behind the album-art background, the box stays cooler and the rest of the interface gets the graphics power back.
- With the visualizer switched off, the album-art background is no longer dimmed, it was being darkened to keep a visualizer readable through it, which just muted the colours when there was no visualizer to see.
- Debug logs now start with the app version, Android version, box model and memory, so a submitted log identifies what it came from.
- The small triangle marking the crossfade point above the seekprint is gone.
- Skipping through tracks now stops downloading the ones you’ve skipped past.
- The precache speed limit reads in Mbps (the old labels were eight times too low) and defaults to 20 Mbps on 32-bit boxes.