Fauste Player — User guide
Fauste Player is a playout application for radio studios. It runs several independent players side by side. Each player has its own playlists and transport. Players can chain tracks with overlapping mixes, pre-listen on a separate CUE output and survive crashes without putting anything on air by themselves.
Built with AI assistance, provided as is. Fauste Player, this guide and its translations were developed with substantial help from AI tools. It comes without any warranty and you use it at your own risk: see the Disclaimer.
| Guide | What it covers |
|---|---|
| Getting started | Installing, first start, adding music, playing |
| Players | The player column: transport, modes, countdown, waveform, CUE |
| Playlists | Tabs, the track table, drag and drop, the context menu, M3U/PLS files |
| Cartwall | Instant carts: firing, pages, loops, exclusive carts, setup |
| Markers and mixing | Cue in/out, the MIX point, intro and outro, automatic analysis |
| Settings | Audio outputs, players, analysis, playlists, MIDI, remote control |
| Loudness normalization | Every track and cart at the same loudness with a fixed gain per track: the gain badge, excluding and trimming a track, bit-perfect outputs |
| Bit-perfect output | A special mode: no crossfades, volume at 100 %. Exclusive devices that follow each file’s rate, the BP badge, DSD output, checking a chain |
| Keyboard | Shortcuts |
| MIDI control surfaces | Buttons, faders and lights on MIDI controllers |
| Remote control | Operating Fauste Player over the network: HTTP API, security |
| Data and backups | Where files live, autosave, crash recovery, portable mode |
| Troubleshooting | No sound, device lost, files marked unavailable, logs |
The interface is available in English, Spanish, Catalan, Dutch, French, Galician, German, Italian, Basque, Polish and Portuguese. It follows the language of the operating system unless you choose one in Settings. The interface in every language, English and Spanish included, was produced with AI and may contain errors. Corrections are welcome as issues or pull requests.
The guide is also available in other languages, translated with AI from this English guide: in the online guide, choose one with the globe button in the top bar. A translated page says so at the top and links to the English page, which is the reference when the two differ.
Getting started
Install
Download a package for your system from the project’s Releases page.
Every file has a .sha256 next to it. To check a download, run
sha256sum -c <file>.sha256 on Linux, or shasum -a 256 -c <file>.sha256
on macOS.
Linux
| Package | Install | Update | Remove |
|---|---|---|---|
.deb (Debian, Ubuntu) | sudo apt install ./fauste-player_<version>_amd64.deb | install the newer .deb the same way | sudo apt remove fauste-player |
.rpm (Fedora, openSUSE) | sudo dnf install ./fauste-player-<version>-1.x86_64.rpm | install the newer .rpm | sudo dnf remove fauste-player |
| AppImage (any distribution) | chmod +x fauste-player-<version>-x86_64.AppImage, then run it | replace the file | delete the file |
| Flatpak bundle | flatpak install --user fauste-player-<version>-x86_64.flatpak | install the newer bundle | flatpak uninstall org.fauste.FaustePlayer |
| Archive | extract it and run fauste-player | extract the newer one | delete the folder |
- Desktop integration: the packages add Fauste Player to the
applications menu, and let you open
.m3u,.m3u8and.plsplaylists with it, which imports them as new playlists. - Libraries needed: the ALSA and D-Bus libraries. Every desktop has them, and the packages declare them. JACK is used when it is installed, and is never required.
- AppImage: if it does not start because FUSE is missing, run it with
--appimage-extract-and-run. - Flatpak:
- The bundle needs the freedesktop runtime from Flathub. If the Flathub
remote is not set up, run
flatpak remote-add --user --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepofirst. - The sandbox can read your home folder (to play your music where it is).
- It plays through PulseAudio, or through ALSA directly for bit-perfect devices.
- The bundle needs the freedesktop runtime from Flathub. If the Flathub
remote is not set up, run
- Desktop libraries: the window uses libxkbcommon and EGL or OpenGL, with
Wayland or X11. Every desktop has them, and the
.deband.rpmdeclare them. On a very minimal system, install them before using the AppImage.
Windows
Run fauste-player-<version>-x86_64-pc-windows-msvc.msi. It installs for
all users under Program Files and adds a Start menu entry.
- Updating: run the newer installer. It replaces the installed version.
- Removing: use Settings → Apps.
- Unsigned installer: if the release is not signed, SmartScreen warns about an unknown publisher. Choose More info → Run anyway.
The .zip archive is a portable alternative: extract it and run
fauste-player.exe.
macOS
Open fauste-player-<version>-macos-universal.dmg and drag Fauste
Player to Applications. The same app runs on Apple silicon and Intel
(macOS 11 or later).
- Updating: replace the app the same way.
- Removing: move it to the Bin.
- Unsigned app: if the release is not signed and notarised, macOS refuses
the first start.
- macOS 15 and later: open System Settings → Privacy & Security, scroll to the message about Fauste Player, choose Open Anyway, and confirm.
- macOS 14 and earlier: right-click the app, choose Open, then confirm.
- Or run
xattr -dr com.apple.quarantine "/Applications/Fauste Player.app".
- JACK on macOS: a signed and notarised app can only load a JACK library that is itself signed. Otherwise JACK shows as unavailable; use Core Audio.
- Playlists: on macOS they are imported from Settings → Playlists. Opening a playlist file with the app from Finder is not supported.
One instance at a time
Only one Fauste Player runs per data folder. Opening a playlist from the file
manager while it runs imports that playlist into the running application.
Starting it again with no playlist shows a message that it is already
running. To run separate instances side by side (for example two studios on
one computer), give each its own folder with FAUSTE_HOME.
Command line
fauste-player --version prints the version. The window’s title bar shows
the name and the version, and the About button (an info icon, left of
Settings) opens About, with the author, the copyright, the licence
(GNU GPL version 3 or later; Read the licence online opens its text), a
short disclaimer and the licence notices (Third-party licences opens the
notices file installed with release packages). Close it with Close or
Esc. fauste-player --help lists
the options. Playlist files given as arguments are imported as new
playlists.
On Windows the release program opens no console window: --version,
--help and start-up errors appear in a message box instead.
When a change to the outputs waits for something on air, a Settings pending pill appears in the top bar; it says what waits (see Settings).
Closing while audio is on air
Closing the window while something is on air does not quit. The window comes
to the front (even if it was minimised) and an Audio is on air dialog
lists what is sounding: players that are playing or paused (P1 — title),
and playing carts with their number on the page (Cart 3 — title). A player
or cartwall CUE does not count. Choose Cancel (or Esc, or click outside
the dialog) to keep playing, or Stop and close to stop every player on
air and all carts and then quit. The session is saved as on any other exit.
With nothing on air the window closes at once. The dialog takes precedence
over Settings and About, and keyboard shortcuts do nothing while it is open
(MIDI and remote commands still act).
First start
The window opens with four players, each showing an empty playlist. Nothing plays until you press Play: this is also true after a restart or a crash.
Add music
- Click + Add at the bottom of a player and pick files, or
- drag audio files or folders from your file manager onto a track list. Folders add the audio files directly inside them, not their sub-folders.
Supported formats: WAV, AIFF, CAF, FLAC, MP3 (and MP1/MP2), AAC/M4A, ALAC, Ogg Vorbis, Opus, WavPack, Monkey’s Audio (APE), DSD (DSF and DFF) and Matroska audio (MKA). DSD files play converted to PCM at their rate divided by 32 (88.2 kHz for DSD64), or unchanged as DoP or native DSD on a bit-perfect device set to do so (see Bit-perfect output). Opus always plays at 48 kHz. WavPack files must be lossless and mono or stereo; hybrid and multichannel WavPack show as unreadable, as do DST-compressed DFF files. A WAV or FLAC that holds a DTS (or other encoded surround) bitstream instead of audio, as some DTS-CD rips do, also shows as unreadable (the log says why): convert it to ordinary PCM first.
Each file is analysed in the background. The analysis reads the title, artist, album and cover art, draws the waveform, and finds where the sound starts and ends and where to mix into the next track. You can play a track before its analysis finishes.
Play
- Press Play (or the number key of the player,
1for P1) to start the next track, marked green in the list. - Press Play again while a track is on air to fade into the next one.
- Double-click a track to make it the next one.
In CONT (continuous) mode the player mixes into the next track by itself at the MIX point. In SINGLE mode it stops at the end of every track. Continue with Players.
Players
Each column is one player. Players are independent: each has its own playlist tabs, transport, volume and outputs.
Header
| Element | Meaning |
|---|---|
P1 … Pn | Player number (the number key that plays it) |
| Status dot and label | On air (red), Paused (amber), Stopped (grey) |
| Mixing / Fading badge | A crossfade into the next track, or a fade stop, is running. Mixing never lights on a player whose Main output is bit-perfect: it does not crossfade (see What it costs) |
| Stop after badge | The player stops when the current track ends |
| Repeat / Stop after track badge | The current track repeats, or stops the player when it ends, because of its own mark in the playlist menu. Hover for the full sentence. The player’s own Stop after button wins: while it is on, only its badge shows |
| Gain badge | With loudness normalization on, the gain the track on air plays with (+4.0 dB), or Not normalized: amber while the track has no measurement yet, grey on a bit-perfect output or for a track excluded from normalization. Hover for the reason. Shown while the player is playing or paused |
| BP / DSD | BP is lit while the current track reaches its Main device unchanged. DSD replaces it while a DSD track goes out as DSD, unchanged (see Bit-perfect output). Others muted shows beside it when that DSD stream keeps other sources off the output |
| SINGLE | CONT | Play mode (see below): one joined control, the lit half is the active mode |
| CUE | Pre-listen the next track on the CUE output |
Info row
- Cover of the track on air, or a vinyl placeholder.
- Title and artist of the track on air. A stopped player shows the track Play will start (its next), with its cover, its length and its waveform, ready at the cue-in, or where you clicked its waveform.
- A track played or loaded before its analysis has finished already has its
length when its file’s header gives it: the countdown,
elapsed / totaland click to jump work at once, over a flat line until the waveform is ready. When the header does not store it (raw AAC files, MP3 files with no length frame, Matroska and WebM), the total reads “—” and the waveform cannot be clicked until the analysis ends. - Stereo meter (in the column at the right of the player, next to the
fader; it spans the info row and the transport): the level the player
puts out, after its volume.
- One continuous bar per channel, on the scale of the meter type’s standard (the digital peak meter by default: −60 to 0 dBFS, with the top 20 dB taking half the height). The scale is a ruler on each side of the bars, labelled in the meter’s own units on both sides. Its top and its bottom (for the digital meter, the scale floor) are always marked; every label has a tick on each ruler, and shorter ticks between the labels work like those of a measuring ruler: evenly spaced on round values, every 1 dB on the EBU meter and every 5 dB below −20 on the digital one when the meter is tall enough, and every 2, 2.5, 5 or 10 dB (or none) where it is too short for them. On the digital (and custom) meter, a tall meter labels more values: every 1 dB from −20 to 0, and every 5 dB between the 10 dB marks below −20 (−45, −55), always evenly spaced and only where they fit without the labels touching; the other meter types keep the labels their standard gives. The alignment level (−18 dBFS on the digital meter) is a thicker white tick on both rulers. Nothing is drawn over the bars or between them, so what you see in the bars is only the level, the peak hold and the colours.
- The bar is green, yellow from the warning level (−9 dBFS), and red from the danger level (−3 dBFS). The other meter types turn red where their scale does (from 0 VU, from the permitted maximum on a PPM).
- K-System meters show two sections: the solid bar is the average (RMS) level and the dimmer part above it reaches the peak. Their colours are the K-System’s: green below 0, amber from 0 to +4, red above.
- Digital peak, K-System and custom meters keep the highest level lit for a moment as a line (the peak hold; its length is Peak hold in Settings → Meters, and 0 turns it off). EBU PPM, DIN PPM and VU meters have no hold.
- The number above is the highest level since the entry started, in dBFS, red in the danger zone. It stays after a stop and starts again when an entry plays (the next one or the same again), or when you click it.
- The number underneath is the loudness in LUFS (EBU R128), green within ±1 LU of the target (−23 LUFS).
- The meter type and every level can be changed in Settings → Meters.
- Readings above 0 dBFS. The meter shows what the player puts out, and
that can exceed full scale. The bar stops at the top of the scale, so
the same red shows 0 dBFS and anything above it; only the number above
tells how far, with its sign (for example
+3.5).- A file can carry levels above full scale itself (a float file, or a lossy file whose decoded peaks exceed it).
- Converting the rate can create peaks between the samples: a signal that touches 0 dBFS reads about +3 dBFS after 44.1 → 48 kHz. The true-peak option reads those peaks too.
- The meter reads each player alone, not the sum on the device: two players on one output can add up above full scale without either meter showing it.
- Nothing in the player adds gain above 100 %. An integer device clips at full scale; a float device receives the level as it is and the sound system or driver clips it.
- Volume fader (right of the meter, as tall as it): drag it or use the mouse wheel, one step per notch. The The level in dB (one decimal, or −∞ for silence) is written under the fader, on the same row as the meter’s loudness line, and the tooltip shows it too; the top is 0 dB and the bottom is silence. On a player whose Main output is bit-perfect the fader is locked at 100 % and greyed, it reads a dimmed 0.0, and its tooltip says why (see What it costs).
- Title, artist and the next line, with a green square. While CUE is on, the pre-listen position shows in blue.
Transport
| Button | Action |
|---|---|
| Play / Next (large) | Stopped: start the next track. On air: fade into the next track (the fade time is set in Settings). Paused: resume. With the track on air as next, Play restarts that track with the usual fade. On a bit-perfect output it switches at once, without a fade, and its tooltip says so (see What it costs). |
| Stop | Stop at once (with a short de-click ramp) |
| Fade stop | Fade out and stop. While a fade runs, a violet bar drains across the button from full to empty over the fade length, like a playing cart’s |
| Pause | Pause or resume; blinks amber while paused |
| Stop after (a play triangle then a square) | Stop when the current track ends, once. In SINGLE mode it is available only while the current track repeats: it ends the repeat when the pass that is playing ends. To stop after a track every time it plays, or to repeat a track, use its menu in the playlist (see Playlists) |
| Previous (a bar and two triangles) | While on air: fade back into the track this player played before, as Next does. Press again to keep going back. The track you left becomes the next one. On a bit-perfect output it switches at once, without a fade (see What it costs). |
| Restart (a bar and one triangle) | Back to the start of the current track (its cue-in). A paused player stays paused. |
Buttons that cannot act right now are dimmed: Stop and Restart with nothing
loaded, Pause and Fade stop while stopped, Previous with no earlier track or
during a fade. A player remembers the last 50 tracks it played
(players.history_len in config.json, 0 to 1000).
Modes
- CONT (continuous): at the MIX point the player starts the next track and overlaps the end of the current one. See Markers and mixing.
- SINGLE: every track stops at its end. Stop after is not available in this mode, because every track already stops, except while the current track repeats: then it ends the repeat when the pass that is playing ends.
Countdown
The large number is the time left until the end of the track (its cue-out), with tenths. The elapsed time and the total are on the row under the waveform, on the right. During the last seconds before the end (10 by default, set in Settings) the countdown blinks red.
Waveform
- The part already played is drawn in the waveform colour; the rest is dimmer. With a violet waveform colour, the violet MIX line stands out less; pick another waveform colour if you need to tell them apart.
- The outline shows the peaks, faint; the solid body inside it is the average (RMS) level. On a loud track the peaks fill the height, and the body still shows where the track is quieter or louder.
- A blue shaded area at the start marks the intro, and a badge counts it down. The intro only shows when it has been set.
- An orange shaded area at the end marks the outro, with its own countdown.
- A dashed violet line (the colour of the Mixing badge, so it is not mistaken for the orange outro) with a MIX tag marks where the next track starts in continuous mode. It is dimmed in single mode, and on a player whose Main output is bit-perfect, which does not mix (see What it costs).
- The whole file is drawn. The silent start and end that playback skips (before cue-in and after cue-out) are drawn darker, with a thin line where playback starts and ends. With Use cue-in and cue-out off (Settings → Players) nothing is darker and the two lines are dimmed: playback runs from the start to the end of the file, and the cue-in and cue-out in this guide mean those two ends.
- Hover to see the time under the pointer. Click to jump there. On a stopped player a click chooses where Play starts the next track: the playhead and the countdown move there, and nothing plays until you press Play. Choosing another next track, moving or removing it, or Stop goes back to the cue-in; so does any other way of starting a track, and Restart, Previous and the automatic advance always use the cue-in. A click before the cue-in (in the darker start) chooses the cue-in. A click at or after the cue-out (in the darker tail) cancels an earlier choice: Play starts at the cue-in. A click is a press and release without moving the pointer more than a few pixels.
- Press and drag moves the zoomed view along the track, like grabbing it. A drag never jumps, and without zoom it does nothing. Alt-drag still edits markers.
- Mouse wheel over the waveform: zoom in and out around the pointer, down
to the finest detail the analysis has. Shift+wheel (or a sideways wheel)
moves along the track. While zoomed, the view follows the playing position,
except for 10 seconds after you zoom or move it
(
ui.follow_current_grace_secs; 0 turns following off). Full view, in the top-right corner, zooming all the way out or a new track show the whole track again.
CUE (pre-listen)
Pressing CUE (or Pre-listen on CUE in a track’s menu) plays the track on the player’s CUE output, for example headphones, without touching the on-air output, and opens a small CUE window for that player. Several windows can be open, one per player. See Settings to choose the CUE device. A player needs a Cue output that is not its Main output: without one, CUE and Pre-listen on CUE are dimmed, and hovering them says so.
The window shows:
- the title and artist;
- the waveform of the whole file with the CUE position. It works like the player’s: click to jump there, zoom with the wheel, drag to move along, Full view, the intro and outro countdowns, and the intro, outro and MIX markers, which you edit here as on the player (see Markers and mixing). A CUE plays the whole file, so nothing is drawn darker, the cue-in and cue-out are dimmed lines, and the outro counts down to the end of the file. Its zoom is its own: the player’s waveform does not move. While the CUE plays, a zoomed view follows its position as the player’s does; a paused CUE keeps the view you set, so you can zoom in and place markers. A CUE started after its window closed, or on another track, shows the whole file;
- the elapsed time and the time remaining to the end of the file (a CUE plays whole files);
- Pause / Resume, Stop and Set as next. Set as next makes the cued track the player’s next and keeps the CUE playing. It is dimmed when the track already is the next. If the cued track is the one on air, it plays once more when the current pass ends.
While the CUE is paused, its Pause button (shown as Resume) blinks amber, like the player’s own.
A jump on a paused CUE keeps it paused. The close button of the window, or Stop, stops the CUE.
While a CUE runs, setting a next (double-click) or a single click on a row moves the CUE to that track, from its cue-in; if it was paused, it plays again. A track whose file is missing or unreadable leaves the CUE where it is.
Playlists
Tabs
Every player has a row of tabs, one per playlist. All players see the same playlists; each player chooses which one it shows. A dot on a tab shows where the player’s tracks are: red for the track on air, green for the next one.
The tabs share the width of the player. A name that does not fit ends in “…”; hover over the tab to read it in full. With many playlists the tabs stop shrinking at a minimum width, arrows appear at the ends of the row and the mouse wheel over the tabs scrolls them. The tab you choose, and the one a player shows, is brought into view.
Switching tabs never changes what is on air or what is next. When a track ends, the player continues in the playlist that contains that track.
The + at the right end of the row makes a new playlist: type a name and press Enter or Create (Escape or a click outside cancels). The new playlist appears at once in that player’s tabs and the player shows it. Playlists can also be created, and are renamed and deleted, in Settings. The last playlist, and a playlist with a track on air, cannot be deleted.
The track table
| Column | Content |
|---|---|
# | Position, zero-padded; an icon replaces it for the current and next tracks |
| Title | From the tags, or the file name (Artist - Title.mp3 is split). The repeat and stop-after icons of a track sit before it |
| Artist | From the tags; “Unknown artist” when there is none |
| Album | From the tags |
| Date | The recording date as the file stores it (2019, 2019-05 or 2019-05-14, with a time if there is one) |
| Genre | From the tags |
| Dur. | Playing length, from cue-in to cue-out (the whole file with Use cue-in and cue-out off) |
| Intro | How long the intro lasts, from where the track starts playing to its intro marker; empty when the track has no intro marker |
| File name | The name of the file, with its extension |
A new installation shows #, Title, Artist and Dur. The other columns are
optional; see Choosing the columns below. A track that lacks a value
shows an empty cell, except Artist, which shows “Unknown artist”.
The columns fill the table and keep their proportions when the window is resized; the text columns get the most room. Drag the header separators to change the proportions: the columns to the right of the separator follow the pointer on every frame (they share what is left in proportion to their width), the ones to its left stay, and the widths are saved when you let go. No column gets narrower than its minimum. The widths are remembered per player; a column you show later starts with its default width and the others keep their proportions.
Choosing the columns
Title and Dur. are always shown. Every other column can be shown or hidden,
and any column, those two included, can be moved. The list is the same for
every player and playlist, and it is saved in config.json as
ui.table_columns. Three ways to change it:
- Settings → Playlists → Table columns: tick the columns to show; the
arrows move a shown column up or down (they read left to right in the
tables). Default columns goes back to
#, Title, Artist and Dur. - Right-click a header: a menu with a checkbox for every optional column. A column you show appears at the right end; drag it from there.
- Drag a header onto another: drop it on the left half of a header to put the column before it, on the right half to put it after it. Dropping anywhere else does nothing.
A name in ui.table_columns that this version does not know is ignored, and
a missing Title or Dur. is added back.
When the application opens, each table scrolls so that its player’s next track is in the middle of the table (as near as the ends of the list allow). That happens once, at start-up, and only when the next track is in the playlist the table shows.
When a player moves on to another track, its table shows that track’s
playlist and scrolls its row to the top, unless you used the table in the
last 10 seconds (scrolled it, dragged a track, opened a track’s menu or
clicked a tab): then it waits until you leave it alone for that long. The
time is ui.follow_current_grace_secs in config.json; 0 turns following
off.
Players are independent: several players can show the same playlist, each with its own next track, its own played marks and its own times in the footer. Playing, stopping or skipping on one player never moves another player’s next. The same track can even be on air on two players at once. Editing the playlist (adding, moving or removing entries) or a file becoming unreadable can still change the next of any player that shows it.
Row colours:
| Row | Meaning |
|---|---|
| Red, with a speaker (or pause) icon | On air on this player. It can also show the green arrow: the track on air is also the next, so it plays once more |
| Red P2 (or another number) in the number column | On air on that player |
| Green, with an arrow | This player’s next track |
| Dimmed | Already played on this player |
| File with a cross / warning icon | File missing / unreadable (it is skipped); hover the row: the popup starts with the reason, in amber, then the usual fields. A missing file is looked for again every 30 s (tuning.missing_recheck_ms). |
| Reload arrows at the right of the title | Analysed by an earlier version; it still plays with that analysis. Settings → Analysis → Analyse outdated tracks brings it up to date (tracks on a player are updated anyway) |
| Hourglass at the right of the title | The track is waiting for its analysis (hover the hourglass: Analysis pending). It plays anyway, and the hourglass goes when the analysis finishes |
| Violet | Selected |
Track tooltip. Hover a row for a moment to see its title, artist, album, date, genre, length, format (type, sample rate and bit depth when known) and the path of its file. A field the file does not have is left out. The popup is the only hover information on a row, and it never moves while it is shown. For a missing or unreadable file it starts with the reason.
Mouse
- Click selects a track. Double-click makes it this player’s next track. On the track on air it makes it play once more when the current pass ends.
- Right-click opens the context menu:
| Item | Action |
|---|---|
| Play now | Start this track at once (mixing if the player is on air) |
| Set as next | Same as double-click. On the track on air it plays once more, from its start, when the current pass ends (mixing like Repeat, no gap), then the player goes on. It acts once. Stop after, SINGLE mode and a Stop after mark still end the player first. While a CUE is running it moves to the new next |
| Pre-listen on CUE | Play it on the CUE output (it opens the CUE window). Dimmed when the player has no Cue output apart from its Main one |
| Edit tags… | Open the tag editor for this track. Save writes the changes into the audio file; Cancel (or Esc, when no save is running) closes without writing. The item is dimmed, with the reason when you hover it, while the track is on air, on CUE or on a playing cart, while its tags have not been read yet, when the file is missing, and for formats whose tags cannot be written (for example DSD) |
| Re-analyse | Analyse this track again now, whatever its state. A fixed file that was unreadable is also picked up by itself (see Troubleshooting). Manual markers are kept |
| Add tracks below… | Pick files to insert after this track |
| Duplicate | Insert an unplayed copy below (with its repeat and stop-after marks) |
| Repeat this track | Tick to play it again and again, without a gap, until you press Play (next), Previous, Stop or Fade stop, or turn on Stop after. Pause keeps it repeating. A repeat icon shows before the title |
| Stop after this track | Tick to stop the player when this track ends, every time it plays (in any mode). Unlike the player’s Stop after button, the mark stays with the track and is saved with the playlist. The stop-after icon shows before the title. It wins over Repeat |
| Move to ▸ | Move it to the end of another playlist |
| Remove from playlist | Remove it; not possible while it is on air |
Editing tags
Edit tags… opens a window for one track. While it is open no keyboard shortcut acts, and files dropped on the application window are ignored.
- What you see. The editor reads the file when it opens (it shows “Reading tags…” meanwhile). Always shown: title, artist, album, album artist, date, track number and total, disc number and total, genre, composer and comment. Shown when the file has them: subtitle, grouping, BPM, initial key, mood, ISRC, publisher, catalog number, copyright, original artist, original album, original release date, lyricist, conductor, remixer, arranger, performer, language, encoded by, lyrics, sort title, sort artist, sort album, sort album artist, sort composer and artist website.
- Add field. The menu below the fields lists the other fields. It offers only what the file’s tag format can store (a WAV with RIFF INFO, an AIFF or an old ID3v1 tag store fewer fields than ID3v2, FLAC or MP4), and it is dimmed when there is nothing left to add. One of the always-shown fields that the format cannot store is greyed out with a note. Clearing a field removes it from the file; an added field left empty is not written.
- Several values. Fields that can hold several values (artist, album artist, genre, composer, mood and the credits such as lyricist, conductor, remixer, arranger and performer, and language) show one value per line; Save writes one value per line in the format’s own way. Comment and lyrics are free text over several lines.
- Checks. Date and original release date are ISO 8601 (
2019,2019-05or2019-05-14, optionally with a time); track and disc number, their totals and the BPM are whole numbers, and a total needs its number. A field with an invalid value is marked and Save stays off. A value the file already had and you did not touch is kept as it is. - Fields that are too long. A field whose text is longer than
limits.max_tag_chars, or that holds more values thanlimits.max_tag_values, is shown read-only with the note “Too long to edit here; kept as it is in the file”. It is never written back, so a save cannot cut it. - What is kept. Everything the editor does not show (other standard keys, custom keys, pictures other than the front cover, binary frames) stays in the file with the same values. The editor says how many such tags are kept (and “more” when the format holds frames that cannot be counted). Saving re-encodes the items the editor maps, so a kept item can differ in its bytes (text encoding, frame order) but not in its value.
- The cover. The editor shows the front cover, or the first picture of
the file when there is no front cover, as a thumbnail.
- Change… opens a file dialog for a JPEG or PNG image (at most
limits.max_cover_bytes, and it must decode). If it does not, the editor says why and nothing changes. - Remove clears the front cover. It is off when the file has no front cover: a picture shown only because there is no front cover is display only and is kept as it is.
- A cover that is in the file but cannot be shown (an image that does not decode, or a GIF, BMP or WebP) is announced with “This cover cannot be shown; it is kept as it is”. Change… and Remove still work.
- The change is written by Save and discarded by Cancel. Back covers and every other picture are never touched. A format with no place for pictures (WAV with RIFF INFO, AIFF, ID3v1) shows the area disabled. After a save the player’s cover shows the new cover.
- Change… opens a file dialog for a JPEG or PNG image (at most
- How a save works. The file is copied next to the original, the copy gets the tags, is synced and replaces the original, so a failure leaves the file as it was. The reason shows in the editor, which stays open to retry, and in the status bar. Only the fields you changed are written. After a save the table shows the new tags at once, and markers and the waveform are kept. If the file did not keep a field you changed, the status bar names it.
- After an update. Tracks of an earlier version get their date, genre and other tags filled in quietly in the background (no full analysis).
Drag and drop
- Drag a track within the list to reorder it. A violet line shows where it will land: it is at the row boundary nearest to the pointer, and only in the list under the pointer. Releasing over the header, a column edge, the scroll bar or a window that covers the list (the CUE window) drops nothing.
- While you drag a track, hold the pointer near the top or bottom edge of a list to scroll it: the closer to the edge, the faster it goes, and it stops at the ends of the list or when you move away from the edge. The mouse wheel scrolls the list during the drag too. The violet line keeps following the pointer as the list moves. Dragging files from the file manager over a list scrolls it the same way where the system reports the pointer position, once you move the pointer over the list.
- Drag it onto another player’s list to move it there.
- Drag it onto a tab to append it to that playlist.
- Drop files or folders from the file manager onto a list to insert them at the drop position. Over the header, a column edge, the scroll bar or a window that covers the list nothing is inserted. If the system does not report the position, they go to the end of the list shown.
Footer
+ Add opens a file dialog, starting in the music folder set in Settings. Reset played (the arrow icon next to it) clears the dimmed “already played” mark of every track of the playlist, for every player, after asking “Clear the played mark of every track in this playlist?” (Cancel, Esc or a click outside keep the marks). The track that is on air keeps its state and is marked when the player leaves it. The button is dimmed when there is nothing to clear. The footer also shows the number of tracks, the time left in the playlist and its total length.
Playlist files
- Import: Settings → Playlists → Import M3U / PLS…, or drop an
.m3u,.m3u8or.plsfile on the window. It becomes a new playlist named after the file.- Relative paths are resolved against the playlist file’s folder.
file://addresses are understood.- Files that cannot be found are still added, marked unavailable.
- Internet streams are skipped; a message says how many.
- Export: the M3U button on each playlist in Settings saves it as an M3U8 file with titles, lengths and full paths.
Cartwall
The cartwall is the strip of buttons under the players. Each button, a cart, plays one sound instantly: jingles, effects, spots. Carts play on their own outputs, independently of the players.
Using it
- Click a cart to fire it. Click it again to stop it.
- Stop all (right end of the bar) stops every cart that is playing, on every page. Its label shows how many are playing, as in Stop all (2); with none playing it is dimmed and shows no count.
- While a cart plays, its border turns red, a red bar shrinks as it plays, and its time counts down.
- Carts overlap by default: firing a second one does not stop the first. A cart set to Stop other carts when fired stops every other cart on air first, on any page.
- A cart set to Loop starts again from its cue-in when it reaches its end, without a gap, until you stop it.
- Right-click a cart for more options:
| Item | Action |
|---|---|
| Pre-listen on CUE | Play it on the cartwall’s CUE output (dimmed when the cartwall has no Cue output apart from its Main one) |
| Stop | Stop it |
| Edit… | Open it in Settings |
An empty cart’s menu has Edit… only, to choose its file.
- Pages: the tabs next to CARTWALL switch pages. A red dot shows that a cart on that page is playing.
- Click CARTWALL to collapse the strip or expand it again.
- When the window is short, the buttons shrink (down to a minimum height) so that all the configured rows fit; the cartwall scrolls only when even the smallest buttons do not fit.
| Button look | Meaning |
|---|---|
| Violet dot | Jingle |
| Amber dot | Effect |
| Grey dot | Spot (commercial) |
| ↻ after the type | Loops |
| ✋ after the type | Stops the other carts when fired |
| File with a cross / warning sign | The file is missing / cannot be decoded; hover the cart for the reason and the path. A missing file is looked for again every 30 s (tuning.missing_recheck_ms). |
| “Empty”, dimmed | No file assigned |
Carts use the same markers as tracks. They start at their cue-in and end at their cue-out, which you can edit on a player’s waveform when the file is loaded there.
Keyboard
By default F1…F12 fire carts 1–12 of the page shown, and Ctrl+Space stops every cart (the same as Stop all; it also stops a cart you are pre-listening on CUE, even when no cart is playing). See Keyboard to change them.
Setting up carts
Go to Settings → Cartwall:
- Pages: create, rename, delete (the last page cannot be deleted), and set the grid size (rows × columns). A smaller grid is refused if it would drop carts that have a file. A size typed into the box next to a slider applies when you press Enter or leave the box; Escape cancels it.
- Import… / Export… save a page to a
.cartpage.jsonfile and load it back, for example to share it between studios. Relative file paths are resolved against the file’s folder. - Carts: click a cart in the grid, then set its name, file (Choose… or Clear), type, Loop and Stop other carts when fired. A cart with a file also has Exclude from normalization and Trim, its track’s loudness normalization settings, with the measurement under the label.
The cartwall’s own Main and Cue outputs are in Settings → Audio outputs (the Cartwall row).
Markers and mixing
Every track has up to five markers, in seconds:
| Marker | Meaning | How it is set |
|---|---|---|
| Cue in | Where playback starts | Automatic: just before the first sound above the trim threshold |
| Cue out | Where the track ends | Automatic: just after the last sound above the trim threshold |
| MIX (segue start) | Where the next track starts in continuous mode | Automatic (see below) |
| Outro start | Where the ending of the track begins | Automatic (see below) |
| Intro end | End of the spoken-over introduction | By hand, or from an INTRO tag in the file |
Markers set by hand always win: a new analysis never replaces them.
Editing markers
On a player’s waveform, or on the waveform of its CUE window (the same menu and handles; a change shows in both at once):
- Right-click where you want a marker and choose Set cue in here, Set intro end here, Set outro start here, Set MIX point here or Set cue out here. Reset markers to automatic removes the markers you placed, and the track is analysed again. Loudness… opens the track’s loudness normalization settings: exclude it, or trim its gain.
- Hold Alt (Option on macOS): handles appear on the markers. Drag one to move it; the time is shown while you drag. A drag never moves the playhead.
Cue-in must stay before cue-out. The other markers are kept between them. Changes to the track on air apply to its next transition at once.
The INTRO tag
A file can carry its intro time in an INTRO tag, as seconds (12.5) or
m:ss. The name may be written in any case (INTRO, Intro). It can be an
ID3v2 user text frame (MP3, WAV, AIFF, DSF), a Vorbis,
Opus or FLAC comment, an APE item (WavPack, Monkey’s Audio) or an MP4
freeform atom. It is read during analysis. A
manual intro end still wins.
How the automatic markers are found
The analysis measures the track’s peaks in 10 ms steps and its loudness in short windows (50 ms by default).
- Cue in / cue out: only near-silence at the start and end is skipped: anything whose peak reaches the trim threshold (−60 dBFS by default), on either channel, is kept, with a trim margin (20 ms by default) around it. Soft fade-ins, quiet tails and short sounds are never cut.
- MIX: the analysis finds the last point where the track is still less than the segue drop (15 dB by default) below its own typical loudness, so loud and quiet masters with the same fade mix the same way. That point is never more than the maximum mix length (4 s by default) before cue-out, so overlaps stay short.
- Outro: the analysis scans backwards from cue-out and finds where the level drops more than the outro level drop (6 dB by default) below the track’s median loudness. The outro is never longer than 30 s by default.
- Tracks shorter than the minimum length for mix and outro markers (60 s by default), such as jingles and ads, get no MIX and no outro.
Long recordings
A whole programme (one, four or more hours) is analysed like a song, while it plays if need be: a 4-hour FLAC or Opus file takes under a minute on a current computer, and memory does not grow with the length. Seeking to any point, even near the end, is immediate. The waveform and markers are kept in the analysis cache up to about 16 hours of audio; a longer file works too, but is analysed again each time Fauste Player starts.
All these values are in Settings → Analysis. After changing them, the tracks are analysed again automatically.
What the player does with them
- Continuous mode with automatic mix on: at the MIX point the next track starts at full level while the current one fades out until its cue-out. The overlap is sample-accurate.
- Continuous mode without a MIX point, or with automatic mix off: the next track starts exactly at cue-out, with no gap.
- Single mode, or Stop after: the player stops at cue-out.
- Pressing Play while on air: the next track starts at once and the current one fades out over the fade time (1 s by default).
- A player whose Main output is bit-perfect ignores the MIX point and automatic mix: each track plays to its cue-out, then the next one starts, and Play while on air switches at once, without a fade. See What it costs.
- Use cue-in and cue-out off (Settings → Players): every player plays each track from 0 to the end of the file. Cue-in and cue-out, automatic and manual, are kept, and the waveform draws them as dim lines. The MIX point, intro and outro still work, within the whole file; Automatic mix is a separate switch. Countdowns, the duration column, the playlist totals in Settings and the remote API times follow the same range. Carts always use their own cue-in and cue-out. Changing the setting never restarts, seeks or stops a track that is playing; the next track is prepared again.
A track can be played before its analysis finishes. Until then it plays from the start to the end of the file, with no MIX point.
Settings
Open Settings in the top bar. Close it with Close or Esc. Most
changes apply at once and are saved automatically.
The window has one size (900 × 640, smaller on a small screen) whatever the section, and the section scrolls inside it. Every section lines its labels up in one column.
The Players, Meters, Analysis, Loudness and Keyboard shortcuts sections have a Restore defaults button in their header. It asks for confirmation and then resets only that section (Players keeps the number of players and the language; Shortcuts has no other reset button). Audio outputs, Playlists, Cartwall, MIDI and Remote have none.
Settings pending
Every setting applies while the application runs. The audio system, the sample rate, the buffer size (also a device’s own), the Main and Cue outputs (players and cartwall), the bit-perfect devices and the DSD settings change how an output device is opened, so they apply as soon as that is safe:
- A device’s settings apply when nothing plays on that device: no player routed to it is playing, fading or pre-listening (CUE, also when held), and no cart plays on it. A paused player, or one with a track only loaded, does not hold a device: its track stays paused where it was.
- A player’s or the cartwall’s output moves when that player (or the cartwall) is not playing; other players on the same devices are not interrupted.
- A new audio system applies when nothing plays anywhere.
A waiting change runs at the first moment nothing it affects plays. That can be the gap between one track ending and the next starting: the next track then starts later by the time the device takes to reopen. Apply now (below) forces the change at once instead.
A rate or buffer given to a device counts only when it changes what the device opens with: giving a device the same value as the global one, or clearing such a value, changes nothing.
Until then the top bar shows Settings pending. Hover it to see what waits and on what; click it for the list, which also shows any change a device or output refused (the device keeps its current settings; the change is tried again when you change it or press Apply now). The Settings footer says “Some changes wait until the outputs they affect are free.” and offers Apply now; a short notice (for example, that a setting was saved) can take the place of that text for a moment.
Apply now applies every waiting output change at once. When that would
interrupt something, it first lists the devices and what plays on them;
Interrupt and apply then briefly interrupts the audio on those devices:
what was playing goes on from where it was after a short gap, and nothing
paused or stopped starts. Cancel (or Esc) keeps waiting.
The limits and the engine tuning are edited in the configuration file with the application closed (see Data and backups).
Audio outputs
Changes in this section apply while the application runs, as soon as nothing they affect is playing: see Settings pending.
At the top, Show chooses Basic or Advanced. Basic shows the audio system, the sample rate, the buffer size and the outputs. Advanced adds, for each device an output uses, its own rate and buffer, the bit-perfect switch and the DSD mode, and then the DSD settings. Switching views only shows or hides rows: nothing is changed or reset. When Basic hides a setting that is in use, a line says so. When no output uses a device any more, its own rate and buffer, its bit-perfect switch and its DSD mode are forgotten the next time the application starts: if an output uses it again after that, it starts from the global values. Until then, choosing it again (for example after swapping two devices) keeps them.
| Setting | Meaning |
|---|---|
| Audio system | The last choice, No output (silent), plays nothing: timelines run at real-time pace with no sound card (for a machine without one, or to rehearse). Linux: PipeWire (in builds that include it), PulseAudio, JACK or ALSA. Windows: WASAPI, ASIO (in builds that include it) or JACK. macOS: Core Audio or JACK. Systems missing on this computer, or with no output device (a JACK server that is not running), are shown as unavailable. “System default” uses the first available one in that order. |
| Sample rate | The rate every output runs at unless a device has its own (Advanced); files are converted to it with high-quality resampling. Bit-perfect devices start at their rate and then follow the files. |
| Buffer size | Frames per audio block, unless a device has its own; the resulting latency is shown below it |
| Outputs per player | For each player, a Main (on-air) device and a Cue (pre-listen) device, each with a channel pair. A sound card that offers several output profiles (ALSA lists front, surround, direct hardware…) shows each as card — profile; two entries that would still read the same get their device id in brackets. Multichannel interfaces can carry several players on different pairs. |
| Test Main / Test Cue | Plays a short tone (1 kHz on Main, 440 Hz on Cue, 1.5 s, −18 dBFS) on the chosen output, so you can check the wiring before going on air |
| Cartwall | The cartwall’s Main and Cue outputs. Main defaults to the system output. Without a Cue there is no cart pre-listen. |
| Sample rate: device (Advanced) | Global (…) uses the sample rate above; a value gives this device its own rate. Only the rates the device reports are offered; a saved rate it no longer reports stays listed with a note that it may not open (the device then falls back to the global rate). The own values apply only to devices an output names, not to the system default output unless one does. |
| Buffer size: device (Advanced) | Global (…) uses the buffer size above; a value gives this device its own, with its latency below. A device that does not take its own buffer size falls back to the global one, and to the global rate too when it does not take its own rate either. |
| Bit-perfect: device (Advanced) | Off by default. A special mode for audiophile playback, not for mixed programmes: the device is opened with exclusive access and follows each track’s sample rate. The players whose Main output is on it never crossfade or mix, a change of rate leaves a short silence between two tracks, and their volume is held at 100 %. The switch is disabled where the device cannot give exclusive access. See What it costs. |
| DSD: device (Advanced) | Convert to PCM (the default), DoP or, on Linux, Native DSD. Every device shows it; only the modes the device can take are offered, and a line under it says why the others are not. See DSD. |
| When another source needs a DSD output (Advanced) | Continue the DSD track as PCM (the default), or Keep DSD and mute the other sources. See DSD. |
| DSD silence (Advanced) | Silence sent before a DSD stream starts, after it ends and on a switch to PCM, so that the converter locks without a click; 200 ms by default, 0 to 2000. |
A Cue output never falls back to the output Main uses, so that pre-listening never goes on air. A Cue that names a device on an audio system this computer does not have, or the same output (device and channels) as Main, means “no cue”. When a Cue output is the same as its Main output, a warning under it says so. A player with no Cue output, or with its Cue on its Main output, has its CUE button dimmed; hovering it tells you to choose a Cue output here. The same goes for the cartwall’s Pre-listen on CUE.
If a device disappears while playing, the players keep their timelines, and the device is reopened when it comes back (see Troubleshooting).
Players
| Setting | Default | Meaning |
|---|---|---|
| Language | System | Interface language |
| Number of players | 4 | Columns on the main screen (a player on air cannot be removed). The number applies when you release the slider; a number typed into the box applies when you press Enter or leave the box, and Escape cancels it |
| Default mode | CONT | The mode players start in |
| Fade time | 1000 ms | Used by Play while on air and by Fade stop. On a player whose Main output is bit-perfect, only by Fade stop |
| Automatic mix at the MIX point | On | Overlap tracks in continuous mode. Does not apply to a player whose Main output is bit-perfect |
| Use cue-in and cue-out | On | Off: players play every track from the start to the end of the file; the markers are kept and carts still use theirs. Durations and playlist totals follow the same range |
| End-of-track warning | 10 s | When the countdown starts blinking red |
While a player’s Main output is bit-perfect, a note under Automatic mix at the MIX point says that such players never mix or crossfade. Both settings stay editable: they still apply to the other players. See What it costs.
Meters
Changes apply at once. Settings shows only what the chosen meter type uses: the EBU, DIN and VU meters have the scale, red zone and behaviour their standard fixes (only the alignment level is set), and a K-System meter’s alignment is its own 0. A value you set is kept for when you choose that type again.
| Setting | Default | Meaning |
|---|---|---|
| Meter type | Digital peak | How the bar rises and falls, and its scale, after a standard (see below) |
| Rise time, Fall rate | 5 ms, 11.8 dB/s | Only for Custom. The rise time is an integration time: a tone burst that long reads 2 dB low; 0 shows every peak. |
| True peak | Off | Digital peak, custom and K-System only. Measure between samples, with the 4× oversampling filter ITU-R BS.1770 publishes. It shows peaks that exceed 0 dBFS after conversion, which a sample-peak meter misses. As the standard allows, an isolated one-sample click can read up to about 0.3 dB below its sample value. |
| Scale floor | −60 dBFS | The bottom of the digital scale (digital peak and custom). The other meters show the range their standard gives. |
| Peak hold | 2 s | Digital peak, custom and K-System only: how long the highest level stays lit; 0 turns it off. Programme meters and the VU have no hold. |
| Alignment level | −18 dBFS | All but the K-System. Marked on the scale (EBU R68). It is also where the EBU TEST mark, the DIN −9 mark and 0 VU sit. |
| Warning from | −9 dBFS | Yellow from here (EBU permitted maximum), for the digital peak and custom meters |
| Danger from | −3 dBFS | Red from here, for the digital peak and custom meters. The others turn red where their scale does: VU from 0 VU, EBU and DIN PPM from the permitted maximum (EBU +9, DIN 0), the K-System from +4. |
| Loudness readout | Short-term | The loudness under the meter: off, momentary (last 400 ms) or short-term (last 3 s), EBU R128 |
| Loudness target | −23 LUFS | The readout is green within ±1 LU (EBU R128) |
| Meter type | Standard | Behaviour |
|---|---|---|
| Digital peak | IEC 60268-18 | Shows every peak at once; falls 20 dB in 1.7 s |
| EBU PPM | IEC 60268-10 type IIb | Peaks shorter than about 10 ms read lower (a 10 ms tone burst reads about 1.6 dB low, a 0.5 ms one about 18 dB low), within EBU Tech 3205’s tolerances; falls 24 dB in 2.8 s |
| DIN PPM | IEC 60268-10 type I | The same with a 5 ms integration time; falls 20 dB in 1.5 s |
| VU | IEC 60268-17 | The average level, with the needle movement of a VU meter: 99 % in 300 ms, with a slight overshoot; a sine reads its peak level |
| K-20, K-14, K-12 | K-System | Two sections: the average (RMS, 600 ms) as the solid bar and the peak (falls 26 dB in 3 s) dimmed above it. 0 is 20, 14 or 12 dB below full scale; green below 0, amber from 0 to +4, red above. K-12 suits broadcast, K-14 and K-20 more dynamic programme. |
| Custom | — | Your rise time and fall rate |
Each meter uses the scale of its standard, with its marks between the channels:
| Meter | Scale |
|---|---|
| Digital peak, custom | −60 … 0 dBFS, marks every 10 dB down to −40 and every 5 dB above; the top 20 dB take half the height |
| EBU PPM | −12 … +12 around the alignment level (TEST), every 4 dB; quieter levels rest at the bottom |
| DIN PPM | −50 … +5, where 0 is 9 dB above the alignment level (−9 dBFS by default) |
| VU | −20 … +3 VU, 0 VU at the alignment level; the bar moves in proportion to the voltage, like the needle |
| K-System | from +20, +14 or +12 (0 dBFS) down to −60; even in dB down to −24 |
Analysis
The thresholds described in Markers and mixing; each row has a one-line hint under its name saying what the value does. Re-analyse all tracks runs the analysis again for the whole library; manual markers are kept.
After an update whose analysis has changed, tracks analysed by the earlier version keep their markers and waveforms, which still work. At start, Fauste Player says how many there are and offers Analyse now or Later; Analyse outdated tracks (N) here does the same at any time. The tracks on the players are brought up to date anyway, as they are shown, and so are the tracks of carts that have no recorded format (a cart plays bit-perfect only when its format is known). Tracks whose file is missing are not counted until the file is back.
The analysis also measures each file’s loudness for loudness normalization. Files analysed before loudness was measured are measured in the background, when the analysis has nothing else to do, whether normalization is on or off; their markers are not touched. Re-analyse (in the playlist menu) and Re-analyse all tracks measure again.
Loudness
Plays every track and cart at the same loudness, with a fixed gain per track. Loudness normalization explains how the gain is worked out, the badge in the player header and the per-track settings.
| Setting | Default | Range | Meaning |
|---|---|---|---|
| Normalize loudness | Off | Normalization on or off | |
| Target | −16 LUFS | −36 … −6 LUFS, 0.5 steps | The integrated loudness every track is brought to |
| True-peak ceiling | −1 dBTP | −12 … 0 dBTP, 0.1 steps | A boost never takes the track’s true peak above this. Cuts are not limited |
| Maximum boost | 12 dB | 0 … 24 dB | The largest gain a quiet track can get. Cuts are not limited |
| Maximum trim | 12 dB | 0 … 24 dB | How far each track’s own trim can go, up or down |
Changes apply to tracks loaded afterwards: what is playing keeps its gain, and the next track waiting on each player is prepared again with the new one. A note under the settings says how many tracks are still waiting for their measurement; they play unchanged until it is done. A player or cart on a bit-perfect output is never normalized. Restore defaults resets this section only (normalization off).
Playlists
- Music folder: where the file dialogs start.
- New playlist, rename (edit the name and press Enter; Esc cancels) and delete (trash icon).
- Import M3U / PLS… creates a new playlist from a playlist file. M3U on each row exports it as M3U8. See Playlists.
- Table columns: which columns the track tables show and in which order, for every player: a checkbox per column (Title and Dur. cannot be turned off), up and down arrows for the shown ones, and Default columns. See Playlists.
Language: a drop-down list: System (follow the operating system), then every language the interface is available in, each in its own name (English first, then alphabetically: for example Español). The interface switches at once. A system language with no translation of its own uses the closest one (Canadian French uses French, Brazilian Portuguese uses Portuguese), and English otherwise. A language in the settings file that the interface does not have shows as System and follows the operating system.
The interface in every language, English and Spanish included, was produced with AI and may contain errors. About carries a general disclaimer that covers all of them. Corrections are welcome as issues or pull requests.
Cartwall
Pages, grid size, the cart editor, and cart page import and export. See Cartwall.
Keyboard shortcuts
See Keyboard.
MIDI
Turn MIDI control surfaces on, see the input ports, and learn a control for each player action. See MIDI control surfaces.
Remote
Remote control over the network, for web pages, phone apps, automation and control surfaces. See Remote control.
- Allow remote control over HTTP, its address and port, and a line that says whether it is listening.
- Token, required beyond this computer. Generate makes a random one, Show reveals it, and Copy puts it on the clipboard. A warning appears when the address reaches beyond this computer and there is no token.
- Web pages allowed to use the API: one origin per line.
- Allow OSC control, its address and port, and the senders allowed (addresses or subnets, one per line).
- Publish times every: how often elapsed and remaining times are sent while something plays.
Text fields and numbers apply when you leave them, which includes opening another section or closing Settings; Esc cancels what you were typing. An invalid value is corrected, and the field shows what was kept.
Loudness normalization
Tracks come from many sources and are mastered at very different levels: a recent pop single can sound twice as loud as a 1970s recording or a spoken promo. Loudness normalization plays every track and cart at the same perceived loudness, so the operator does not ride the fader from one track to the next.
It is off by default. Turn it on in Settings → Loudness.
How it works
A fixed gain per track. Each track gets one gain, in dB, decided when the track is loaded and kept until it stops. Nothing is compressed or limited: the whole track is made louder or quieter by the same amount, so its own dynamics stay as they were mastered. The player’s fader works on top of it, as before.
The measurement. The background analysis measures each file once:
- its integrated loudness, in LUFS: how loud the whole file sounds, as ITU-R BS.1770 and EBU R128 define it (quiet passages and silence are gated out, so a long fade-out or a pause does not lower it);
- its true peak, in dBTP: the highest level the signal reaches between samples once it is converted to analogue.
New files are measured with their first analysis. Files added before loudness was measured are measured by a background pass that runs while the normal analysis has nothing to do, without touching their markers. It runs whether normalization is on or off, so the measurements are ready when you turn it on. Re-analyse (in the playlist menu) measures a file again. A file shorter than 0.4 s is never measured, and a silent file has no loudness: both play unchanged.
The gain. The gain brings the measured loudness to the Target, plus the track’s own Trim (see Per track):
gain = target − measured loudness + trim
A track louder than the target is turned down by as much as it needs. A quieter track is turned up, but never by more than the Maximum boost, and never so much that its true peak would go above the True-peak ceiling: there is no limiter, so the ceiling is what keeps a boosted track from clipping. A track whose true peak is already above the ceiling is not boosted at all.
Examples, with the defaults (target −16 LUFS, ceiling −1 dBTP, maximum boost 12 dB):
| Track | Measured | True peak | Gain |
|---|---|---|---|
| A loud modern master | −9.0 LUFS | +0.5 dBTP | −7.0 dB |
| A quieter older master | −20.0 LUFS | −10.0 dBTP | +4.0 dB |
| A quiet track with high peaks | −22.0 LUFS | −3.0 dBTP | +2.0 dB (limited by the ceiling) |
| A very quiet recording | −35.0 LUFS | −20.0 dBTP | +12.0 dB (limited by the maximum boost) |
When the gain is decided. When a track is loaded: prepared as a player’s next, started, loaded paused, pre-listened on CUE, or fired as a cart. A track that is playing or paused keeps its gain until it stops, through seeks and pauses. Changing the settings, a track’s measurement or its trim applies the next time the track is loaded; the next track already waiting on a player is prepared again with the new gain, so it starts with it.
Pre-listen. CUE and cart pre-listen play a track with the same gain it gets on air, so what you hear in the headphones matches the programme.
Meters. The meters and their loudness readout measure after the gain, so they show the normalized level. The meters’ own Loudness target (Settings → Meters) only colours the readout; it does not change any gain.
Bit-perfect outputs
A player or cart whose output is bit-perfect is never normalized: it always plays at unity gain (0 dB), whatever the settings, because any gain would change the samples the device receives. With normalization on, its header shows a grey Not normalized badge whose tooltip says “Bit-perfect output: tracks play unaltered.” The same holds for pre-listen on a bit-perfect Cue device, while the player’s Main output, if it is not bit-perfect, still gets the gain.
A track that is already playing (or paused) when its device is turned bit-perfect keeps the gain it started with, and the BP badge stays off for it. The next track plays at 0 dB and bit-perfect. A DSD track in that situation plays converted to PCM with its gain, never as an unchanged DSD stream.
The gain in the player header
While a player is playing or paused, a badge left of BP shows the gain of the track on air. Hover it for the reason.
| Badge | Meaning |
|---|---|
| +4.0 dB, −7.0 dB (blue) | The track is normalized with this gain. The tooltip gives the target, the measured loudness and the track’s trim, and says when the true-peak ceiling or the maximum boost held a boost back. When the settings, the measurement or the trim changed after the track was loaded, it says only that the track keeps the gain set when it was loaded. |
| Not normalized (amber) | Normalization is on, but the track has no measurement yet (or is too short to measure): it plays unchanged. |
| Not normalized (grey) | The output is bit-perfect, or the track is excluded from normalization. |
| No badge | Normalization was off when the track started, the track is silent, or the player is stopped. A bit-perfect player shows none either while normalization is off. |
The badge shows the gain the player asked for when the track started.
Per track: exclude and trim
Some tracks should not follow the target: a station ID mastered loud on purpose, a test tone, a track whose measurement does not match how it sounds (speech often sounds louder than music at the same LUFS). Each track has two settings for that:
- Exclude from normalization: the track always plays unchanged.
- Trim: dB added to the track’s gain, from − to + the Maximum trim (Settings → Loudness), in 0.5 dB steps. Double-click the slider to put it back to 0. The trim is dimmed while the track is excluded.
Where to change them:
- On a waveform: right-click a player’s waveform (or its CUE window’s) and choose Loudness…. The popup names the track and shows its measurement. It keeps editing that track even when the player moves on to another one; close it with its × button. It closes by itself if the track is removed.
- In the cart editor: Settings → Cartwall, click a cart: the same two controls are under Stop other carts when fired, with the measurement under the label.
- Remotely:
PUT /api/v1/tracks/<id>/loudness(see Remote control).
The settings belong to the track and are saved with it. A change applies the next time the track is loaded, like any other change.
The track tooltip of the playlist table shows the measurement (“Loudness: −14.2 LUFS, true peak −0.8 dBTP”, or “Loudness: not measured”) and, when it is not the default, the track’s setting (“Excluded from normalization” or “Trim +1.5 dB”). The trim shown is the one in use: when a lowered Maximum trim limits a trim saved earlier, the line also gives the saved value (“Trim +6.0 dB (saved +10.0 dB, limited by the maximum trim)”). The gain badge’s tooltip and the Trim slider show the trim in use too.
Choosing the settings
- Target. −16 LUFS suits most music programmes on air and online. −23 LUFS (EBU R128) or −24 LUFS (ATSC A/85) leave more headroom, but quiet tracks then need larger boosts, which the ceiling and the maximum boost may hold back. Choose a target close to how loud your material already is.
- True-peak ceiling. −1 dBTP leaves room for the conversion and for lossy encoders downstream. Lower it when a stream encoder clips.
- Maximum boost. Keeps a very quiet recording (or a mostly silent one) from being raised into noise. 0 dB only turns loud tracks down.
- Maximum trim. How far the per-track trim may go. Lowering it limits trims already set without changing them, until you next edit that track’s loudness: the edit then saves the limited trim.
Bit-perfect output
A bit-perfect device receives each file’s samples exactly as they are in the file: same sample rate, same values, with no resampling, volume change or mixing.
Bit-perfect output is a special mode for audiophile playback: listening to an archive, feeding a hi-fi or monitoring chain, checking a digital link, anywhere processing on the computer should be avoided. It is off by default and it is not meant for a mixed music programme. Read What it costs before you turn it on.
What it costs
To keep every track untouched, a player whose Main output is on a bit-perfect device plays differently from the others:
- No crossfades and no segues. Each track plays to its end (its cue-out, or the end of the file with Use cue-in and cue-out off), then the next one starts. Automatic mix at the MIX point and the MIX point are not used: the MIX marker is drawn dim and the Mixing badge never lights. Play / Next and Previous while a track is on air switch at once, with a short click-free stop, instead of fading.
- A short silence when the sample rate changes. Between two tracks whose sample rates differ, when nothing else sounds on the device, the device first plays what it still has buffered (the end of the track), then is reopened at the new rate, which leaves a short silence (usually a few tens of milliseconds, longer on some devices). Tracks at the same rate follow each other with no gap and no overlap. When the rate cannot follow (see What happens on a bit-perfect device), the next track starts at once, converted to the device’s rate.
- No loudness normalization. A track on a bit-perfect device always plays at unity gain, even with loudness normalization on: the header says Not normalized. Other players and carts are normalized as usual.
- The volume is held at 100 %. The player’s volume fader is locked at the top: on screen, on MIDI controllers and over the remote API and OSC. It goes to 100 % when bit-perfect is turned on for the device, and stays there when it is turned off.
- What still works: Fade stop (it fades out over the fade time), Pause, Stop, Restart, the repeat and stop-after marks, Single and Continuous modes, Cue (pre-listen, which has no fader and is not affected), carts, DSD output, and every player whose Main output is on another device, which mixes as usual. A cart can play on the same device: while it sounds, the player’s next track starts at the device’s current rate, converted (so it is not bit-perfect), and no silence is inserted.
- When to use it. Turn it on when every track must reach the converter untouched. Keep it off for an on-air programme that needs mixed transitions or level changes. The mode is set per device, so mixed players can stay on another device.
Setting a device bit-perfect
- In Settings → Audio outputs, choose the device explicitly for a player’s Main output (or the cartwall’s). A player left on the system default cannot be made bit-perfect. A device that no output uses any more loses its bit-perfect switch and its DSD mode the next time the application starts.
- Choose Advanced at the top of the section. Under Per-device settings, turn on Bit-perfect next to the device.
- The device becomes bit-perfect as soon as nothing plays on it (see Settings pending).
The device then starts at its own sample rate when you gave it one in the same place, else at the global sample rate, and follows each file from there.
The switch is disabled when the device cannot give exclusive access.
- Linux: choose an ALSA device whose name starts with
hw:. It is the sound card itself. PulseAudio, PipeWire, JACK and the ALSAdefaultorplughw:devices mix or convert, so they are never bit-perfect. - Windows: choose the device on the WASAPI system. It is opened in
exclusive mode.
- In the Windows sound settings, the device’s Advanced properties must have Allow applications to take exclusive control of this device turned on (it is on by default).
- While it plays, no other program can use the device.
- macOS: choose the device on Core Audio. It is opened in hog mode.
- The device’s sample rate is set to the track’s, and its format to the widest integer format it offers at that rate (the settings Audio MIDI Setup shows).
- They are given back when the application stops using the device.
- Two devices with exactly the same name cannot be made bit-perfect.
What happens on a bit-perfect device
-
Exclusive access. Nothing else on the computer can play on the device while the application uses it. If exclusive access is refused, the device still plays, shared, and the BP badge stays off.
-
The rate follows the file. The device is reopened at a track’s sample rate when the track starts:
- From silence: you play a track, resume one loaded paused, pre-listen, or fire a cart while nothing plays on the device. Tracks that are only waiting (the next track of each player) are prepared again at the new rate.
- Between two tracks of a player: the track on air stops (at its end, or at once for Play / Next and Previous), the device reopens and the next track starts. This is the short silence of What it costs.
- The device is reopened only once it has played everything it had
buffered, so the end of the previous track is never cut short. Then the
reopen takes as long as the device needs to start. Together that is
usually a few tens of milliseconds; the start is that much later. The
wait for the buffer is never longer than half a second
(
tuning.play_out_max_msin the configuration file, 0 to 2000 ms), whatever the device reports.
-
When the rate cannot follow. The device keeps its rate, and a track at another rate is converted for its whole length (it is not bit-perfect), when:
- something else sounds on the device as the track starts: another player (or one paused with a track), a cart, or a pre-listen;
- the device refused that rate before; it keeps the previous one;
- the track has not been analysed yet, so its rate is not known.
The change between the two tracks is still without a crossfade.
-
No processing, when nothing asks for it. The samples pass unchanged while no fade is running (Fade stop, the pause and resume ramps, the short click-free stop of a track) and nothing else plays on the same outputs (another player, a cart, a test tone). The volume is no concern: a bit-perfect output holds it at 100 %.
DSD
A DSD file normally plays converted to PCM, like any other file. A bit-perfect device can instead receive the DSD stream unchanged.
The three modes. In the Advanced view of Settings → Audio outputs, every device an output uses has a DSD choice under its bit-perfect switch:
- Convert to PCM (the default): DSD is converted, as on any other device.
- DoP (DSD over PCM): the DSD bits travel inside 24-bit PCM samples, which most DSD-capable converters recognise. It works on every system.
- Native DSD (Linux only): raw DSD, for ALSA
hw:devices whose driver reports a DSD sample format.
Only the modes the device can take are offered, and a line under the choice says why the others are not: the device is not connected, bit-perfect is off, the device cannot be opened exclusively, native DSD needs Linux, or the device does not take native DSD. A mode saved for a device that cannot take it now shows as PCM, which is what plays; the saved mode comes back when the device can take it again. Changing a mode, the mixing setting or the DSD silence applies once nothing plays on the device, like the other output settings.
When DSD goes out unchanged. All of these must hold when the track starts:
- the device is bit-perfect, with exclusive access, and its mode is DoP or native DSD;
- the track is DSD (DSF or DFF), mono or stereo, and has been analysed (that is how its DSD rate is known);
- nothing else plays on the device (another player, a cart, a test tone);
- the track has no loudness normalization gain: one loaded (for example paused) with a gain before the device was turned bit-perfect keeps it, so it plays converted, without DSD or BP;
- the device accepts the stream. DoP needs a device rate of the DSD rate divided by 16 (176.4 kHz for DSD64, 352.8 kHz for DSD128, 705.6 kHz for DSD256) and a 24- or 32-bit format. Native DSD needs a device that takes the DSD format at that rate.
When native DSD ends, the device goes back to PCM at the rate it had before the DSD track, because many converters take native DSD at rates they cannot play as PCM (no converter plays PCM at the rate DSD512 runs at). A track that goes on as PCM keeps the DSD stream’s rate when the device takes it as PCM, and otherwise continues at the earlier rate from where it was, like everything else playing on that device; a fade in progress there ends at once. The device never stays on a rate it refuses: if no rate opens (for example, the device was unplugged at that moment), the output is lost until the automatic retry reopens it at the earlier rate.
Otherwise the track is converted to PCM and the log says why (for example “something else plays on the device” or “the device refused 705600 Hz”). Pre-listen and carts are always converted.
While DSD goes out unchanged:
- the header badge reads DSD instead of BP;
- the meters show the level of the PCM conversion of the same track, so they work as usual;
- Stop and a fade stop stop the track at once, with no fade, since a DSD stream cannot be faded;
- pause and resume also act at once, without a ramp.
Silence at the edges. Every start, end and switch to PCM sends DSD silence first (200 ms by default), so that the converter locks without a click. The exception is a DSD track that continues a stream of the same kind and DSD rate whose silence is still running: the converter is still locked, so it starts with no extra silence. A track therefore starts that much later, and a switch to PCM leaves a gap of that length (a native DSD device also plays what it has buffered before it is reopened as PCM, a few milliseconds more). It is DSD silence in Settings → Audio outputs, Advanced (0 to 2000 ms).
When another source needs the device. When another source needs a DSD output in Settings → Audio outputs chooses what happens when another player, a cart or a test tone starts on the same device:
- Continue the DSD track as PCM (the default). The stream switches to PCM after the DSD silence, and the track goes on, converted, from where it was. The same happens to the track that follows by itself (see below).
- Keep DSD and mute the other sources. Nothing interrupts the DSD stream. Other sources routed to the device are muted until the DSD track ends, and the player shows an Others muted badge meanwhile. The player’s own next track starts when the DSD track ends: a PCM track after the DSD silence, a DSD track of the same kind and DSD rate at once, continuing the stream.
An album does not stay DSD under the default setting. With Continue the DSD track as PCM, only a DSD track that starts on an idle device goes out as DSD. The tracks the player starts by itself afterwards (at the end of a track) start from a preload, which is always PCM, so the device switches to PCM and they play converted. A track you start yourself (Play, double click) goes out as DSD again when the device is idle or the previous DSD stream is still in its silence at the same DSD rate. To keep a whole DSD album as DSD, choose Keep DSD and mute the other sources. Then each track of the player goes out as DSD, and the next one starts when the previous one ends.
If the device is lost while DSD plays and comes back unable to carry it (for example without exclusive access), the track goes on as PCM.
The BP badge
The BP badge in the player header lights up (green border and text; dim grey when off) while the current track reaches its Main device unchanged. All of these must hold:
- the device is bit-perfect and open with exclusive access;
- the device runs at the track’s sample rate;
- the track is lossless integer PCM (WAV, AIFF, FLAC, ALAC, WavPack or Monkey’s Audio), mono or stereo, and at most 24-bit, and the device format holds its sample size (a 24-bit file on a 16-bit device is not bit-perfect). DSD is converted, so it never lights BP; when it goes out unchanged (see DSD) the badge reads DSD instead;
- the track has been analysed, since that is how its rate and sample size are known. Tracks an earlier version analysed get their format once analysed again (the start-up notice, or Settings → Analysis), or as soon as a player shows them or a cart holds them;
- the track plays at unity gain: a bit-perfect output is never normalized, but a track that started with a normalization gain before its device was turned bit-perfect keeps that gain until it stops, and BP stays off for it;
- the volume is held at 100 % on a bit-perfect output, no fade runs (Fade stop, the pause and resume ramps and the short click-free stop of a track are the only fades left on such a player), and nothing else plays on the same outputs.
Some files are never shown as bit-perfect:
- Lossy files (MP3, AAC, Ogg Vorbis, Opus): their decoded samples are not the integer values a device takes.
- Files above 24 bits: the mixer works in 32-bit floating point, which carries 24 bits exactly.
- Files with more than two channels: they are mixed down to stereo.
Checking it yourself
To verify a chain end to end:
- Connect the device’s digital output (S/PDIF, AES or USB loopback) to a recorder that captures bit-exact.
- Play a lossless test file with nothing else playing.
- Record it.
- Compare the recording with the file. For example, with SoX, invert one
and mix them:
sox -m -v 1 file.wav -v -1 recording.wav diff.wavafter aligning their starts. Every sample of the difference must be zero. - Check a rate change: in Continuous mode, with Automatic mix at the MIX point on, play a 44.1 kHz track that has a MIX point followed by a 96 kHz one. The first plays to its cue-out with no fade; after a short silence the converter shows 96 kHz on the second. The BP badge lights on both.
- Then play two tracks at the same rate: the second follows the first with no gap and no overlap.
The project’s automated tests check the same property inside the application, on a simulated device.
DSD on a real converter
The automated tests check DSD on simulated devices only. DoP and native DSD have not been tried on a real converter by the project. To check one:
- Set the device to DoP (or Native DSD on Linux) and play a DSD file with nothing else playing. The header must show DSD, and the converter’s own display should show the DSD rate (for example DSD64) instead of a PCM rate. A converter that shows a PCM rate or plays noise does not recognise the stream: go back to Convert to PCM.
- Listen for a click or a burst of noise at the start, at Stop, at the end of the track. A click means the converter needs a longer DSD silence (Settings → Audio outputs, Advanced).
- Start a cart or another player on the same device, once with each mixing setting, and check the behaviour described above.
- On Linux, to check native DSD without the application, run
FAUSTE_NATIVE_DSD_DEVICE=alsa:hw:CARD=<card>,DEV=0 cargo test -p fp-backends --test conformance -- --ignored native_dsd_on_a_real_device. It opens the device in native DSD at DSD64 and plays one second of DSD silence. It must pass, and the converter should lock to DSD64. - With DSD files in
test-music/,cargo test --release -p fp-engine --test dsd_real_music -- --ignoredplays them through the engine on a simulated device and compares the words with the file’s bytes (see Testing).
Keyboard
| Default key | Action |
|---|---|
1 … 9 | Play on players 1–9 (same as their Play button) |
F1 … F12 | Fire carts 1–12 of the cart page shown |
Ctrl+Space | Stop every cart, and the cart CUE (the cartwall’s Stop all button) |
Delete / Backspace | Remove the selected track from the playlist shown (not while it is on air) |
Esc | Close menus and Settings; cancel the “Audio is on air” dialog; clear the selection |
- Holding a key does not repeat it: a held
1presses Play once. - A shortcut key does only its shortcut: if a button has the keyboard focus,
SpaceorEnterbound to a shortcut does not also press that button, and a shortcut onTabor an arrow does not move the focus. - Shortcuts are ignored while you type in a text field, such as a playlist name.
- A shortcut whose button is dimmed does nothing (for example Stop on a stopped player). The one exception is the stop-all-carts shortcut, which also stops the cart CUE.
Changing shortcuts
In Settings → Keyboard shortcuts, click an action and press the key (with Ctrl, Alt, Shift or Cmd if you like). If another action already uses that key, its name is shown. Choose Assign to move the key, or Cancel. Unbind removes a shortcut and Restore defaults (top right of the section) restores the table above. Available actions, for every player and cart:
- play, previous, restart, pause, stop, fade stop and CUE on a player (previous and restart have no default key);
- fire a cart of the page shown;
- stop every cart (the cartwall’s Stop all);
- show or hide the cartwall;
- next or previous cart page.
Delete, Backspace and Esc cannot be changed.
MIDI control surfaces
Fauste Player can be played from MIDI controllers: pad and fader controllers, DJ-style surfaces or keyboards. Each player’s transport buttons and volume fader can be bound to a button, a key or a fader, and buttons with lights show what each player is doing.
Turning it on
Open Settings → MIDI and tick Use MIDI control surfaces. The list under Input ports shows every MIDI input the computer has and whether it is connected. Only the controllers you have bound are opened (some systems give a port to one program at a time), plus every input while you are learning a control; the program never listens to its own ports. Controllers can be plugged in or out while the program runs: every couple of seconds the ports are looked for again, and a controller that comes back is connected by its name, with its lights set again.
On Linux, MIDI goes through ALSA: your user must be allowed to open the
sequencer (/dev/snd/seq, usually by being in the audio group).
Binding a control
For every player there is a row per action: Play / Next, Pause, Stop, Fade stop, Restart, Previous, CUE and Volume.
- Click Learn on the row.
- Press the button or move the fader you want (it says Move a control… meanwhile). A button takes a key, a pad or a button that sends a control change; Volume takes a fader or knob (a control change) or a pitch-bend fader.
- The row shows the device and the control, for example
APC mini · Note 36, channel 1.
If that control was already bound to another action, it moves to this one.
Esc or clicking the button again cancels learning. Clear removes a
binding.
How the controls behave
- A button acts when it is pressed (a key or pad going down, or a control change going up through the middle of its range), exactly like the player’s button on screen. A button that is dimmed on screen does nothing.
- A fader moves the volume on the same scale as the on-screen fader. To avoid jumps, it only takes over when it reaches or passes the current volume (soft takeover); if the volume is changed on screen, the fader has to catch it up again. Nothing changes until you move a control: starting the program never sends anything on air.
- A volume binding of a player whose Main output is bit-perfect does nothing: its volume is held at 100 %. Once the output is no longer bit-perfect, move the control to the top to pick the volume up again.
- Play/Next and Previous on such a player switch at once, without a crossfade. Their lights work as usual.
- With Light the buttons (LED feedback) on, bound buttons light up:
Play while the player is on air, Pause blinking while paused, CUE while
pre-listening, and Stop, Fade stop, Restart and Previous while they can
act. The lights go to the controller’s output port of the same name; a
different one can be set in
config.json(midi.devices).
Remote control
Fauste Player can be read and operated over the network through an HTTP API, with live updates, and through OSC. A web page, a phone app, a station’s automation or a control surface can use them. It is off until you turn it on, and at first it only answers on this computer.
Turning it on
Open Settings → Remote and tick Allow remote control over HTTP (or Allow OSC control). The line under each switch says whether the server is listening, and where, or why it did not start. Changes apply at once; there is no need to restart. A text field (an address, the token, a list) applies when you leave it, open another section or close Settings; a value that is not valid yet keeps the one in use, and Esc cancels what you typed.
You can also edit config.json while Fauste Player is closed (see
Data and backups for where it is). Inside the
"config" object, set remote.http.enabled to true:
{
"schema_version": 1,
"config": {
…
"remote": {
"http": { "enabled": true }
}
}
}
It listens on http://127.0.0.1:7380. Starting it never plays anything;
only requests act.
Listening on the studio network
To reach it from other computers, set bind to 0.0.0.0 (or one of this
computer’s addresses) and set a token of at least 16 characters.
In Settings → Remote, Generate makes a long random token. It is hidden
until you press Show, and Copy puts it on the clipboard for the
client.
Without a token the server refuses to start, and the log says why.
"remote": {
"http": {
"enabled": true,
"bind": "0.0.0.0",
"port": 7380,
"token": "a-long-random-secret-of-your-own"
}
}
Clients send the token as Authorization: Bearer <token>. The API is not
encrypted. Keep it on a trusted studio network, or put it behind a reverse
proxy with HTTPS.
Web pages
A web page served from another address can use the API only if its origin
(for example https://studio.example) is listed in cors_origins. Requests
from other pages are refused, even on this computer, so a page you happen
to have open cannot drive the player. "*" (any origin) is only accepted
together with a token.
What a client can do
A client can:
- read the players, playlists, tracks (with cover and waveform) and the cartwall;
- play, pause, stop, fade, restart and go back;
- choose the next entry (the entry on air too: it plays once more), pre-listen, and seek (on a stopped player a seek chooses where Play starts the next entry, and a seek before its cue-in starts at the cue-in);
- set volumes, modes, stop-after-current, and the repeat and stop-after marks of an entry;
- fire, stop and pre-listen carts, and change the cart page shown;
- edit: create, rename and delete playlists; add a track that is already loaded, and remove, move or duplicate entries; create, rename, resize and delete cart pages, and set up a cart with a loaded track; set or reset markers; exclude a track from loudness normalization or trim it.
Removing what is on air is refused, as it is on screen. Files that are not loaded yet cannot be added remotely: they live on this computer, so add them here first.
A button that is greyed out on screen is refused remotely too.
A player whose Main output is bit-perfect keeps working
remotely, with the same limits as on screen: play and previous switch
at once, without a crossfade, and its volume is held at 100 %. A volume
below 100 % is refused (409, with the reason), and exactly 100 % is
accepted. Each player says whether its volume is held (fader_locked).
Each track carries its loudness measurement (loudness, null until it is
measured) and its setting (loudness_edit: excluded and trim_db). A
playing or paused player, and each playing cart, says which
normalization gain its track started with and why
(normalization: gain_db and a status such as applied,
not_measured or bit_perfect). PUT /api/v1/tracks/<id>/loudness with
{"excluded": false, "trim_db": -1.5} changes the setting, as the
Loudness… popup does; a trim beyond the maximum trim is refused (409,
with the reason). The normalization settings themselves (on or off, the
target, the limits) are only changed on this computer. OSC and MIDI have no
loudness controls.
The full reference is in the technical documentation.
Try it from a terminal:
curl -s http://127.0.0.1:7380/api/v1/players
curl -s -X POST http://127.0.0.1:7380/api/v1/players/<id>/play
Live updates
A client can follow changes as they happen instead of asking again and
again. GET /api/v1/events is a stream of events: the whole state first,
then each player, playlist, track or cartwall change, and the times of what
is playing a few times a second.
curl -sN http://127.0.0.1:7380/api/v1/events
A web page uses EventSource. Browsers cannot send the token as a header
there, so it goes in the address:
/api/v1/events?token=<token>.
OSC
OSC is the usual protocol of control surfaces, lighting desks and show
control software. Turn it on with remote.osc.enabled. It listens on UDP
port 7381 of this computer. To accept packets from other computers, set
remote.osc.bind to 0.0.0.0 and list their addresses or subnets in
remote.osc.allowed_sources (for example "192.168.1.0/24"). OSC has no
password, so keep it on a trusted studio network.
Players are numbered 1, 2, 3… as they appear on screen. Carts are numbered in the page shown.
oscsend localhost 7381 /fauste/player/1/play
oscsend localhost 7381 /fauste/player/2/volume f 0.8
oscsend localhost 7381 /fauste/cart/3/fire
A surface that wants to show the state (lights, names, countdowns)
subscribes, and then receives every value once and afterwards only what
changes. When a player or a cart button goes away (fewer players, a
smaller page), its addresses receive an empty value once, so the surface
clears them. It must subscribe again within a minute (subscription_ttl_secs)
to keep receiving:
oscdump 9000 &
oscsend localhost 7381 /fauste/subscribe i 9000
On a player whose Main output is bit-perfect, /volume messages are
refused (the log notes it) and the player sends /volume-locked 1 to
subscribers (0 otherwise).
A subscriber can name any port of its own address, and up to
max_subscribers are kept. Anyone allowed to send can therefore also
subscribe. This is one more reason to keep OSC on a trusted network.
oscsend and oscdump come with liblo (liblo-tools on Debian and
Ubuntu). The full list of addresses is in
the technical documentation.
All settings
| Setting | Default | Meaning |
|---|---|---|
remote.http.enabled | false | Turn the API on |
remote.http.bind | 127.0.0.1 | Address to listen on (an IP address) |
remote.http.port | 7380 | Port (1024–65535) |
remote.http.token | empty | Required beyond this computer; at least 16 characters |
remote.http.cors_origins | none | Web origins allowed to call the API |
remote.http.request_timeout_ms | 10000 | Longest a request may take |
remote.http.max_body_bytes | 65536 | Largest request body |
remote.http.max_event_clients | 16 | Live event streams at once |
remote.osc.enabled | false | Turn OSC on |
remote.osc.bind | 127.0.0.1 | Address to listen on |
remote.osc.port | 7381 | UDP port (1024–65535) |
remote.osc.allowed_sources | this computer | Addresses or subnets whose packets are accepted |
remote.osc.max_subscribers | 16 | Subscribers at once |
remote.osc.subscription_ttl_secs | 60 | A subscription not renewed within this time ends |
remote.events.position_interval_ms | 250 | How often times are published while playing |
Values out of range are corrected when the file is loaded, and the correction is logged.
Data and backups
Where files are kept
| Linux | Windows | macOS | |
|---|---|---|---|
Settings (config.json) | ~/.config/fausteplayer/ | %APPDATA%\Fauste\Fauste Player\config\ | ~/Library/Application Support/org.Fauste.Fauste-Player/ |
| Playlists and session | ~/.local/share/fausteplayer/ | %APPDATA%\Fauste\Fauste Player\data\ | ~/Library/Application Support/org.Fauste.Fauste-Player/ |
| Analysis cache | ~/.cache/fausteplayer/ | %LOCALAPPDATA%\Fauste\Fauste Player\cache\ | ~/Library/Caches/org.Fauste.Fauste-Player/ |
| Logs and crash reports | ~/.local/share/fausteplayer/logs/ | %LOCALAPPDATA%\Fauste\Fauste Player\data\logs\ | ~/Library/Application Support/org.Fauste.Fauste-Player/logs/ |
The Linux paths follow the XDG variables (XDG_CONFIG_HOME and so on) when
they are set.
Portable mode
Set the environment variable FAUSTE_HOME to a folder, and everything is kept
there instead, in config/, data/, cache/ and logs/. This is useful on
a USB stick, or to keep separate setups side by side.
Files
| File | Content |
|---|---|
config.json | Settings, outputs, analysis thresholds, advanced tuning |
playlists.json | Playlists, tracks, played flags, manual markers |
session.json | For each player: playlist shown, current and next tracks, mode, position, volume, column widths (by column) |
Autosave and backups
- Changes are saved about one second after they happen. While anything plays, the session (positions) is refreshed at the same pace.
- Every save writes a temporary file and then replaces the old one, so a power cut never leaves a half-written file.
- The previous versions are kept as
.bak1,.bak2and.bak3. - If a file cannot be read, the newest good backup is used. The unreadable
file is kept, renamed
*.corrupt-<time>, for inspection. The application always starts.
Crash recovery
After a crash or a restart, every player comes back with its playlist, its current and next tracks, and its position, but paused or stopped. Nothing goes on air by itself. A player that was at the very end of its track comes back at the start of that track instead, so pressing Play plays it rather than ending it at once.
Editing config.json by hand
Close the application first (if audio is on air, it asks before closing).
Unknown or out-of-range values are corrected to the nearest valid value when
the file is loaded, and the corrections are logged. The limits and tuning sections hold advanced values (resource
limits, engine timing) that are not in the Settings window.
Troubleshooting
No sound
- Open Settings → Audio outputs and press Test Main for the player. If you hear the tone, check the player’s volume fader.
- If you hear nothing, pick another device or channel pair. A change to the outputs applies once nothing plays on them; Apply now in Settings applies it at once.
- On Linux, prefer PipeWire or PulseAudio in Settings → Audio outputs → Audio system. They share the sound card with other programs. ALSA talks to the card directly and may find it busy.
- JACK shows as unavailable (“no output device”) when no JACK server is running. Start the server (for example with QjackCtl) and restart the application. Set the JACK server to the sample rate in Settings (48 kHz by default): JACK runs at one rate for every program.
- PipeWire is not offered by the downloadable archives; they reach
PipeWire through its PulseAudio service, which works the same way. It is
available in builds made with the
pipewirefeature.
Bit-perfect
- The BP badge stays off. Check each condition in Bit-perfect output: no fade, nothing else on the same outputs, a lossless file that has been analysed, and a device running at the file’s rate.
- A short silence before a track. The bit-perfect device reopened at the track’s sample rate. It happens only when the rate changes: tracks at the same rate follow each other with no gap. Keep the library at one rate to avoid it. See What it costs.
- Tracks do not mix, and Play does not fade. On a player whose Main output is bit-perfect, each track plays to its end and then the next one starts, and Play / Next and Previous switch at once: there are no crossfades or segues on such a player. Turn bit-perfect off for the device, or move the player to another output, to mix again. See What it costs.
- The volume fader does not move. The player’s Main output is bit-perfect, which holds the volume at 100 %; the fader’s tooltip says so. MIDI faders and the remote API cannot move it either. See What it costs.
- A track plays resampled, and the log says the device is busy (Linux).
To change rate, the application closes the device and opens it again. In
that moment the sound server (PipeWire) can take the card. The application
tries again a few times; if the card is still busy, the track plays at the
device’s current rate, and the next track asks for its rate again. To give
the application the card to itself, open the system’s sound settings and
set that card’s profile to Off (or Pro Audio), so the sound server
leaves its
hw:device alone. The number of tries and the wait between them aretuning.device_busy_retriesandtuning.device_busy_retry_msin the configuration file. - The device plays, but the BP badge stays off (Windows or macOS).
Exclusive access was refused, and the device plays shared.
- Windows: another program may hold the device exclusively, or exclusive control is turned off in the device’s Advanced properties.
- macOS: another program may hold the device in hog mode, or the device offers its rates only as a continuous range (most interfaces list fixed rates).
- A
hw:device cannot be opened (Linux).- A sound server may be holding the card. Stop it, or set the server to leave that card alone, and restart the application.
- Some USB DACs accept only packed 24-bit samples (
S24_3LE), which the audio library does not support. Use that card throughplughw:(not bit-perfect) instead.
DSD
- A DSD track plays converted although the device is set to DoP or native DSD. The log says why (“DSD converted to PCM” and the reason) for these causes: the player’s volume not at 100 %, something else playing on the device, more than two channels, or a device that refuses the rate (DoP needs the DSD rate divided by 16, for example 176.4 kHz for DSD64) or has no 24- or 32-bit format. A track that has not been analysed yet converts silently, with no log line: analyse it (Settings → Analysis) and play it again.
- Only the first track of a DSD album goes out as DSD. That is the default mixing setting: the tracks the player starts by itself play converted. Choose Keep DSD and mute the other sources in Settings → Audio outputs to keep them DSD. See DSD.
- The header shows DSD but the converter plays noise or does not lock. The converter does not recognise DoP (or the native format). Set the device back to Convert to PCM.
- A click when a DSD track starts, stops or leaves DSD. The converter needs more DSD silence: raise DSD silence (200 ms by default) in Settings → Audio outputs, Advanced.
- Other players or carts are silent on the device. A DSD track is playing with Keep DSD and mute the other sources; the Others muted badge shows. They sound again when the track ends.
“Output lost” alert
The status bar shows Output lost: <device> when a device stops responding. The players keep counting and mixing on an internal clock, so the automation does not stall. The device is retried every 2 seconds and takes over again when it returns. Reconnect the cable or power the interface back on.
“Output lost” that never clears, with a direct hw: output
A sound card used through a direct ALSA hw: output (for example a
bit-perfect output) is held by Fauste Player alone: the sound server
(PipeWire or PulseAudio) cannot use it at the same time. If another output
goes through the sound server’s default device and that default device is
the same card, that output never starts and stays Output lost. The log
says “output device opened but never started” once.
Use one path per card: route every output of that card through the same
hw: device (with different channels if needed), or choose another card
as the sound server’s default output in your system’s sound settings.
A track shows a warning icon or a file with a cross
The file is missing (moved, deleted, unmounted: a file with a cross) or cannot be decoded (a warning sign). The players skip it. Hover the row to see which, and the file’s path.
A missing file is looked for again every 30 seconds
(tuning.missing_recheck_ms in the configuration file): when the drive
is mounted or the file is put back, the track becomes playable by itself. A
file that cannot be decoded is checked again by itself on the same timer, by
size and modification time: it is not decoded again unless one of them
changed, for example when a copy finishes. To check it at once use
Re-analyse in its row menu, or Settings → Analysis → Re-analyse all
tracks for the whole library.
A WAV or FLAC that shows as unreadable, or would play as loud noise, may be a DTS-CD rip: the file holds a DTS bitstream instead of audio. The application refuses it (the log says “encoded bitstream stored as PCM”) and does not decode DTS. Convert it to ordinary PCM with another tool first.
Audio dropouts
The status bar warns for 5 seconds after each dropout the application detects: P1: audio dropouts (3) when a player’s decoding did not keep up with the disk (the count is for the track now playing), and <device>: audio device dropouts (2) when the output device missed a deadline (an xrun). The log records each one too, at most one line every 10 seconds per kind, with how many happened. Not every audio system reports xruns (PulseAudio does not; Windows exclusive mode does not).
- Increase the buffer size in Settings (it applies once nothing plays on that device, or at once with Apply now).
- On Linux, allow real-time scheduling. The application asks the system for
it through rtkit (D-Bus). Membership of the
audiogroup with anrtpriolimit also works. - Avoid network drives for music that plays on air.
“The interface hit an error”
A drawing error was caught. Audio is not affected. Press Restart interface. Please report it with the logs.
Logs and crash reports
See Data and backups for the log folder. There is one
log file per day. Identical lines that repeat one after another are written
once, followed by a line such as previous message repeated 12 times
(during a long run of repeats that line is written every minute). Lines
that differ, for example because they carry a counter, are not collapsed.
The
PulseAudio client’s routine connection messages are left out by default.
Set RUST_LOG=debug in the environment for more detail (it replaces the
default filter, info,pulseaudio=warn).
The log is bounded: a day’s file stops growing at 10 MiB (its last line
says so; the rest of that day is not logged, which is what a flood of
differing lines leads to) and the last 14 files are kept. Change them in the
config file with limits.max_log_file_mb (1 to 1024), limits.max_log_files
(2 to 365) and limits.log_repeat_summary_secs (1 to 3600, default 60, how
often a long run of repeats is reported); they apply at the next start.
Crash reports are saved as crash-<time>.txt in the same folder and are
limited separately (limits.max_crash_reports per run).
Attach both files when reporting a bug.