Repository navigation
Releases: sanchezfauste/fauste-player
Releases · sanchezfauste/fauste-player
Release list
v0.7.0
0.7.0 (2026-10-15)
Features
- analysis: measure and cache each track's loudness (392d7dc)
- analysis: measure each file's loudness and cache it (8dbcaf8)
- analysis: run loudness-only jobs below every analysis (7a03837)
- app: measure the loudness of tracks analysed before (f65dbf6)
- backends: report the frames a stream holds before the device plays them (b459bc8)
- control: ignore a MIDI fader bound to a locked player (a50a00b)
- decode: refuse encoded bitstreams stored as PCM (a6903be)
- dsp: add fp-dsp with a gated integrated loudness meter (05bb677)
- dsp: measure the gated integrated loudness of a programme (12e100a)
- engine: follow the rate under a hard start on a bit-perfect bus (1563566)
- engine: give each mixer slot a fixed gain (4dafd85)
- engine: play each source at its loudness normalization gain (551464d)
- engine: play each source at its normalization gain (3671658)
- engine: prepare the next track at the rate of a planned cut (7ce125a)
- engine: reopen a bit-perfect device between two tracks (366b377)
- engine: reopen bit-perfect devices at each track's rate (9417adb)
- engine: report each bus's stream rate and refused rates (9ba5121)
- model: add limits.max_log_file_mb and limits.max_log_files (1c9a379)
- model: add the loudness normalization settings (3561e7b)
- model: decide each source's loudness normalization gain (c802f39)
- model: decide the normalization gain of a track (272edd4)
- model: exclude a track from normalization or trim it (104c532)
- model: hold a bit-perfect player's fader at 100 % (90e133a)
- model: keep each device's stream rate (1dce66c)
- model: keep each source's gain while it sounds (3101716)
- model: keep each track's loudness measurement (e0ced2e)
- model: list the faders Apply now would reset (67e404e)
- model: plan bit-perfect players hard and lock their fader (6913310)
- model: plan every transition of a bit-perfect player hard (f543338)
- model: send each source's normalization with its request (b9feced)
- model: start Next and Previous hard on a bit-perfect player (c2c9eb9)
- model: tell bit-perfect players and the rate a cut reopens at (65fa2b2)
- new app icon (9adcae0)
- new app icon (d030af5)
- remote: read the loudness and set a track's loudness edit (daa2574)
- remote: respect the locked fader of bit-perfect players on MIDI and remote control (2fa2500)
- remote: show and enforce the locked fader of bit-perfect players (8b27053)
- store: read the log limits before logging starts (ebc626a)
- ui: add a one-line hint to every analysis setting (8b7c1a6)
- ui: add the Loudness tab to Settings (7191ab6)
- ui: create a playlist from the player's tab strip (8b1802f)
- ui: describe the normalization of a player and a track (918a308)
- ui: drain a bar on Fade stop while a fade runs (b802ed8)
- ui: draw a bit-perfect player's fader locked at 100 % (de6f194)
- ui: exclude a track from normalization or trim it (c4f07c3)
- ui: fader level, analysis hints, new playlist button and fade progress (82bd95e)
- ui: name the faders Apply now resets to 100 % (83aa4fa)
- ui: say in Settings what bit-perfect output costs (4d684db)
- ui: show and control loudness normalization (555b563)
- ui: show that a bit-perfect player does not mix (4842921)
- ui: show the author, the licence and a disclaimer in About (58ccb43)
- ui: show the locked fader and what bit-perfect output costs (7876b14)
- ui: show the normalization gain and a track's loudness (47fb32b)
- ui: show the volume level under the player's fader (ab51890)
Bug Fixes
- analysis: cache only real loudness answers and re-measure old entries (e0ad8f4)
- analysis: drop a loudness measurement that is not finite (8c85bc7)
- analysis: never analyse a promoted track twice, and make the analysis tests timing-free (c11edf3)
- analysis: never start a track again that ends while it is promoted (a62e7c8)
- app: bound the log: quiet pulseaudio, collapse repeats, cap file size ([fc7f6e0](fc7f6e02d0...
v0.6.0
0.6.0 (2026-10-08)
Features
- analysis: follow the configured limits while running (fb08eb9)
- analysis: take new cover and tag limits while running (7f466d5)
- app: add nine AI-translated European languages (6932087)
- app: add the Basque translation (bb9a22e)
- app: add the Catalan translation (8554987)
- app: add the Dutch translation (0b62057)
- app: add the French translation (c6e575a)
- app: add the Galician translation (dc19d3c)
- app: add the German translation (3a78c3b)
- app: add the Italian translation (2c7f9fc)
- app: add the Polish translation (ef45d20)
- app: add the Portuguese translation (8966ff3)
- app: follow the configured crash report cap (066dce4)
- app: prepare the interface for more European languages (ffe3b5f)
- app: read each new track's length from its file header (bb9866e)
- decode: the length a file's header declares (7255747)
- engine: apply a device change once nothing sounds on it (2c936b8)
- engine: apply output changes while running when nothing they affect plays (de03623)
- engine: keep the running settings on a refusal, the new ones for an absent device (edbf23f)
- engine: leave DSD before a device change (099437e)
- engine: let the mixer take new tuning while it runs (25e34d2)
- engine: move a player or the cartwall to another output while running (5afaa5e)
- engine: open each device at its own rate and buffer (38c47eb)
- engine: report placements and keep each bus's running settings (2ac0898)
- engine: report placements and take new settings while running (f8dc6d2)
- engine: switch the audio system while running (5c3f335)
- engine: take new settings and tuning while running (109db4f)
- model: a seek on a stopped player sets where Play starts (770e8c4)
- model: a track's length from its file header until its analysis (f38fd81)
- model: add the live settings state and device settings (3dff01f)
- model: apply output changes now on request (14ef7b3)
- model: forget a device's own settings when it leaves every route (e9cbaf7)
- model: give each output device its own rate and buffer (0d3e13d)
- model: keep a stopped player's pending start across a restart (d97d457)
- model: keep what the engine reports about its outputs (28ccb88)
- model: list the output changes the engine does not run yet (37a11e8)
- model: rules for applying restart settings live (102baeb)
- model: say why a DSD mode is not offered (2d6fcc4)
- model: say why a holder or a device is busy (da5d1a4)
- model: send output changes as soon as nothing they affect plays (c717b49)
- play before analysis and choose where Play starts (feedback 4, plan 2) (50cc55c)
- remote: seek a stopped player to choose where Play starts (cb1a810)
- site: open the guide in the browser's language (69a8d41)
- site: open the guide in the browser's language with localized screenshots (c0a24eb)
- ui: a muted hourglass marks a track whose analysis is pending (ca3a78c)
- ui: a Re-analyse item in the track row menu (f53eb9b)
- ui: basic and advanced outputs settings with per-device rate and buffer (94d2090)
- ui: click a stopped player's waveform to choose where Play starts (72627d1)
- ui: countdown and seek before the analysis; an unknown total reads a dash (d2757fc)
- ui: describe pending output changes and what they wait for (e20c8d4)
- ui: give each device its rate, buffer and DSD row (37ac076)
- ui: give the CUE window view its markers and badges (ed73536)
- ui: label the digital meter scale more densely when it is tall (5ae7361)
- ui: lay the meter out with a ruler on each side (7afb8b5)
- ui: pure geometry for the drop index of a dragged entry (2f92fea)
- ui: scroll a playlist table while dragging over it (38ed70b)
- ui: scroll a table while dragging and label the digital meter more densely (482bbb8)
- ui: show pending settings and apply them now instead of restarting (8437d58)
- ui: show pending settings and apply them now instead of restarting (7136a8b)
...
v0.5.0
0.5.0 (2026-10-03)
Features
- analysis: read and write the whole tag sheet and its cover through the safe copy (bd030ca)
- analysis: read more tags and write them through a synced copy (999b064)
- app: a tag worker and the tag-only pass for tracks with unread tags (e358e3b)
- app: build the Windows release as a GUI program without a console (a86dee7)
- app: list No output (silent) after the real audio systems (O27) (bd94f26)
- app: start again after Restart now (a16d8eb)
- app: the tag worker reads and writes whole tag sheets and loads covers (b5f385a)
- audio path audit and DSD output on bit-perfect devices (O25, O26, O27, O34) (8cf858b)
- backends: DoP and native DSD encoders and the DSD stream flag (O25) (281d789)
- backends: native DSD output through ALSA on Linux (O25) (00bba3a)
- decode: a thread priority module over thread-priority (O21) (79858fc)
- decode: raw DSD reading and the DSD rate of analysed files (O25) (528632f)
- engine: decoder threads above normal priority, the analysis pool low (O21) (50d4792)
- engine: DSD reaches bit-perfect devices as DoP or native DSD (O25) (9b77218)
- engine: DSD sources carry raw words beside their PCM conversion (O25) (96259e0)
- engine: seek and pause the player CUE (5476856)
- engine: the mixer copies DSD words and the renderer encodes DoP (O25) (deb70cd)
- model: add the use_cue_markers setting and Track::play_range (fabd331)
- model: allow stop after current in Single mode while the entry repeats (302d685)
- model: DSD output settings per bit-perfect device (O25) (7e60275)
- model: let players ignore cue-in and cue-out (1ec5a60)
- model: list the settings that wait for a restart (e2b009f)
- model: list what is on air (5748bbb)
- model: play the entry on air once more when it is set as next (352a1fb)
- model: players play the whole file when cue markers are off (7d0367c)
- model: replay the entry on air once and stop after current in Single mode for a repeating entry (15ffce0)
- model: ResetPlayed clears the played marks of a playlist (O22) (c601f9a)
- model: restore one settings section to its defaults (62ce785)
- model: rules for DSD reaching a device unchanged (O25) (7a34468)
- model: the table column list and its rules (O24) (fe39535)
- model: the tag sheet, its 36 fields, its cover and its pure rules (866ac15)
- model: track tag fields, ApplyTags and the tag edit rule (de29844)
- site: landing page with per-platform downloads (5907db4)
- site: project website, user guide online and screenshots (57a704c)
- track tooltip and tag editor with front cover (88c3cd1)
- ui: a Reset played button with a question (O22) (a2c8708)
- ui: a single click moves a running CUE to the clicked row (bfff0fc)
- ui: a tooltip with the tags, format and path on each table row (5530a72)
- ui: add a cartwall Stop all button and one icon table for transport actions (1f8df9e)
- ui: add a CUE window, per-entry notices and click-to-seek waveform (2ace796)
- ui: add a Stop all button with a count to the cartwall bar (ea87ea7)
- ui: add the CUE window with seek, pause, stop and load as next (a4b8c12)
- ui: add the Use cue-in and cue-out switch to Settings (1c42cf8)
- ui: an About button in the top bar (cc5402a)
- ui: ask before closing while audio is on air (2f84376)
- ui: click seeks on the waveform and a drag pans the zoomed view (d405831)
- ui: configurable track table columns, live resize, reset played and scroll to next (dbcd8b6)
- ui: confirm before closing while on air, About button, Wayland window buttons (2785473)
- ui: countdowns and the remote API follow the play range (4b77fcc)
- ui: dim the cue marks on the waveform while they are ignored (9126227)
- ui: DSD mode per bit-perfect device, the DSD badge and the muted notice (O25) (255ac10)
- ui: edit a track's tags and cover from the row menu, saved off the UI thread (052d14e)
- ui: hide the silent backend from the audio systems (4f540b9)
- ui: mark the playing row as next and allow Set as next on it (a72ac3c)
- ui: reorder, show and hide the table columns (O24) (b4e4e51)
- ui: restore defaults per settings section (e39690c)
- ui: settings restore defaults, fixed window and restart now ([15bb1d1](https://github.com/sanchezfauste/fauste-player/comm...
v0.4.0
0.4.0 (2026-10-01)
Features
- analysis: trimming never removes audio; shorter segues (c8fa45b)
- app: ask before analysing tracks of an older version (08212f1)
- app: look for missing files again (4de2bb4)
- app: start the remote control server (0c6f587)
- control: a control-surface crate that reads MIDI messages (c88dae5)
- control: a MIDI service with hot-plug, feedback and learn (c87a68e)
- control: LED feedback for bound buttons (76418d6)
- control: MIDI faders move volumes with soft takeover (5a4fb66)
- control: route MIDI buttons to player commands (0696431)
- control: which control a message offers to MIDI learn (bd5f32c)
- MIDI control surfaces (24bf6a0)
- missing files explained and recovered, loaded waveforms first, stopped players show their next (47dba88)
- model: insert and assign tracks already in the library (a2e0728)
- model: MIDI configuration and a shared fader curve (5eda331)
- model: OSC remote configuration and source allow-lists (775725d)
- model: record each player's history (53f7414)
- model: remote control configuration (f2c2b93)
- model: repeat an entry until the operator moves on; stop after it (ff56fbf)
- model: repeat and stop-after flags on playlist entries (a0f9659)
- model: restart the current entry and go back to the previous one (04d91d8)
- model: say which transport actions are available (f1a35ba)
- model: tuning.missing_recheck_ms (6ef70b4)
- per-track repeat and stop after (75003af)
- remote: crate with the control trait and the API's JSON contract (03b02aa)
- remote: edit playlists, cart pages and markers (d8a774d)
- remote: editing routes and Settings > Remote (3338789)
- remote: event stream over SSE (be49a10)
- remote: HTTP API to read and operate the player (ee97a9e)
- remote: HTTP routes to read and operate players and carts (0085f00)
- remote: live events over SSE and OSC control (4c2a5ed)
- remote: OSC addresses, values and subscriptions (fb0e6bb)
- remote: OSC server with subscriptions (e8f1bae)
- remote: reduce a waveform to n buckets, and send it without a JSON tree (68dd94a)
- remote: resource events from snapshot diffs (ec53675)
- remote: server thread that follows the configuration (9f1bffc)
- remote: token, origin and host checks with CORS and limits (5ed95c2)
- remote: turn operations into checked model commands (88ae81f)
- restart and previous with button availability (8704ec2)
- store: drop config fields this version does not use (953dd24)
- ui: a stopped player shows the track Play will start (756a3bc)
- ui: a view mapping for waveform zoom (417a2da)
- ui: drag on the waveform to seek on release; dim trimmed audio (a98031a)
- ui: elapsed / total under the waveform (a543b08)
- ui: give the meter muted zone colours (e6dde85)
- ui: interface polish from operator feedback (bc576b2)
- ui: make slate the default waveform colour (e5803f7)
- ui: meter and fader column with a dB scale (d9d16f0)
- ui: move the meter and fader into a column on the right (bcf9d3e)
- ui: own icons for missing files and outdated analyses (bf9fe46)
- ui: proportional playlist columns (81739e5)
- ui: proportional playlist columns and follow the current track (075da68)
- ui: repeat and stop-after in the track table (e726520)
- ui: restart and previous buttons, dimmed when unavailable (9d9d855)
- ui: restart and previous shortcuts, ignored when unavailable (12e9a5d)
- ui: say why a track is unavailable (c6db4c1)
- ui: Settings > MIDI and MIDI control at start-up (9acba92)
- ui: Settings > Remote (ab35d3c)
- ui: show the version and an About window (34fc916)
- ui: the playlist follows the current track (8f39032)
- ui: waveform drag, zoom and trimmed regions (a038b48)
- ui: zoom and pan the waveform with the wheel ([7de230a](7de230a...
v0.3.1
0.3.1 (2026-09-30)
Bug Fixes
- ui: settle the meter and waveform review minors (821044c)
- ui: settle the meter and waveform review minors (c926384)
Documentation
Unsigned installers
- the Windows installer (SmartScreen warns about an unknown publisher)
- the macOS app (not signed or notarised: macOS asks before its first start)
How to open them: Getting started.
v0.3.0
0.3.0 (2026-09-29)
Features
- analysis: keep the RMS level of each waveform bucket (a806936)
- app: accept the new audio formats, read DSF tags, document decoding (59715d2)
- decode: play DSD, WavPack, Monkey's Audio and Opus (9149106)
- engine: K-System meters and a maximum level per player (bc68eea)
- ui: draw the waveform continuously with its RMS body (df8bd1c)
- ui: meters on their standard's scale, with a maximum readout (0373c72)
- ui: standard meter scales, the K-System and a maximum readout (de93d65)
- ui: waveform with a peak outline and an RMS body, drawn continuously (b345cef)
Bug Fixes
- analysis: read the INTRO tag from Opus, WavPack, Monkey's Audio and DSF (3555ca0)
- ci: build the release packages on every platform, and run the nightly fuzz (0a2b870)
- decode: look past a leading ID3v2 tag, and never guess a format (91075a5)
- decode: place surround DSD channels by their layout (0622f2d)
- decode: refuse DSDIFF property chunks that overrun their parent (493cdcb)
- decode: trim encoder delay once, in the decoder (1bc8c8b)
- packaging: give each installer notice its own component (759dcd2)
- ui: mark the alignment level on every meter, and turn red where each scale does (7e77951)
Documentation
v0.2.0
0.2.0 (2026-09-27)
Features
- analysis: read the INTRO tag as the intro end (b2772ab)
- app: application id, icon, desktop entry and playlist arguments (184399e)
- backends: Core Audio hog mode for bit-perfect devices on macOS (cb19d50)
- backends: exclusive access, real sample formats and exclusive-capable devices (ac5036e)
- backends: offer every audio system of the platform (d29f5af)
- backends: WASAPI exclusive mode for bit-perfect devices on Windows (cd3a7a8)
- engine: a VU that moves like IEC 60268-17 (18af556)
- engine: bit-perfect buses follow the file rate while idle (6cd5387)
- engine: bound worker sources and loop them gaplessly (c41ec6a)
- engine: loudness that meets EBU Tech 3341 as a live meter (44e2e5b)
- engine: measure what each source puts out for the level meters (c9df38b)
- engine: play the cartwall on its own routes (cd7e825)
- engine: programme meters that meet EBU Tech 3205 (31d4c14)
- engine: report when a player is bit-perfect, and prove the output is bit-exact (50299c2)
- engine: standard meter ballistics and EBU R128 loudness (c4f5099)
- engine: the conductor runs each player's meter and publishes its reading (a31cb0f)
- engine: true peak with the ITU-R BS.1770-5 interpolator (4478418)
- model: add cartwall pages, carts and rules C1–C10 (c12a941)
- model: add configurable keyboard shortcuts (cb724ed)
- model: add manual marker commands (b25218f)
- model: configurable level meters (e642051)
- model: record each file's rate and sample size and pass it to the engine (577fa28)
- store: persist cart pages and the cartwall session (d57d115)
- store: read M3U/M3U8/PLS and cart page files, write M3U8 (039b0db)
- ui: add Cartwall and Keyboard shortcuts settings, and a language selector (a174e64)
- ui: add the cartwall strip (6a30ccd)
- ui: dispatch keys from the configured shortcuts (6ba70f7)
- ui: edit markers on the waveform (039af23)
- ui: import M3U/M3U8/PLS playlists and export M3U8 (7d4cc05)
- ui: light the BP badge and choose bit-perfect devices in Settings (3f85b0c)
- ui: standard level meters and a Meters section in Settings (855d532)
Bug Fixes
- address review of hardening, docs and release pipeline (e675712)
- address review of the Phase 2 engine and analysis (405103e)
- address review of the Phase 2 model and store (6d87c9d)
- app: one instance per data folder, and packaging fixes from review (21c2a49)
- backends: harden the exclusive modes after review (7b716df)
- backends: treat systems without output devices as unavailable and recover lost hosts (ea1fdb4)
- close Phase 1 review minors and avoid duplicate on-air next (aa44115)
- engine: a transition at the next frame to play has not happened yet (e03d5ad)
- engine: make bit-perfect output work on real devices (c78b56d)
- engine: meter review fixes (c4e1ed5)
- engine: meter review fixes for the standards work (4e893d2)
- model: players are independent, even on the same playlist (da2f331)
- model: players are independent, even on the same playlist (315d865)
- store: bump the playlists schema for per-player played marks (4ae97d8)
- ui: address review of the Phase 2 interface (850d39c)
Code Refactoring
- engine: time every source in the frames of its own bus (9394b44)
Documentation
- add Phase 1 plan 5 (hardening, documentation, release) (41eaca7)
- add Phase 2 plan 2 (engine and analysis) (a12b706)
- add README, user guide, technical docs and agent guides (128e53b)
- bit-perfect output on Windows and macOS (3d9f55b)
- design and plan standard level meters (f4b09fc)
- design Phase 4 (bit-perfect output) and plan its portable core (5eb2736)
- document bit-perfect output for users and developers (fe7f583)
- document carts.json, shortcuts, cartwall config and playlist files (6a9ed59)
- document the cartwall, shortcuts, marker editing and playlist files (9f686bd)
- level meters for users and developers (5e373e9)
- meters faithful to ITU-R BS.1770-5, EBU Tech 3341 and Tech 3205 (81ba542)
- plan Phase 3 (native audio systems through cpal hosts) ([e2b7808](https://github.com/sanchezfauste/fa...