Fadenza

The queue and the table

The Queue is the permanent first playlist — see playlists for how it relates to the other sixty-three. This page is about what every list looks like once audio is in it: the table, its columns, and what sorting actually does.

Getting audio in

Where audio lands depends on who asked. A drop or ⌘O goes to the list you are looking at; a drop onto a sidebar row goes to that row’s list; anything arriving on its own — a watched folder, a fadenza:// URL, a scripted command — goes to the Queue.

  • Drag and drop files or folders onto the window or the Dock icon.
  • Open (⌘O) for the standard file panel.
  • FinderOpen With → Fadenza, or set Fadenza as the default for a format.
  • Playlists — M3U, M3U8 and PLS, local or at a URL.
  • Stream URLs — anything served over HTTP or HTTPS.
  • fadenza:// URLs, for scripts and other apps.

Folders are read recursively, to 32 levels deep and 20,000 files per import. Both limits exist so that pointing Fadenza at your home directory by accident is an inconvenience rather than a hang.

An import never gives up partway. If one file in a folder is corrupt or unreadable, the rest still import, and you are told what was rejected and why. A silent partial import is the failure mode this rule exists to prevent.

The columns

Eleven of them: status, track number, Title, Artist, Album, Length, Format, Bitrate, Sample Rate, Rating and Plays. Drag to reorder, drag an edge to resize, right-click the header to hide one. That layout is shared by every playlist and remembered between launches.

Three are hidden until you ask for them — Bitrate, Sample Rate and Plays — because they are blank for at least some of what you will import, and a column of blanks is worse than no column.

The number in the # column is the track number from the file’s own tags. It is not the row’s position, so a track numbered 7 stays numbered 7 wherever you drag it.

Sorting moves the tracks

Click a header and the list is genuinely reordered — this is not a view that redraws over an unchanged list. That is why sorting also decides what plays next.

Grouping by album, artist or genre implies a sort, and turns off drag-to-reorder while it is on; you cannot hand-place a row in a list whose order is being computed.

A sort you did not ask for never disturbs a shuffle in progress. Setting a rating or letting metadata finish loading can reorder the table, but only sorting by a header or choosing a grouping reshuffles.

Ratings and plays

⌘1 to ⌘5 rate the selection, ⌘0 clears it back to unrated. There is no zero — unrated sorts with the blanks, at the bottom in both directions.

A rating follows the file rather than the row: it is keyed to a hash of the audio, so it survives being removed, re-imported, renamed or moved to another drive, and it is the same rating in every playlist holding that track. Streams and remote URLs are the exception — there are no local bytes to key on, so their ratings live and die with the entry.

Plays counts a track that reached its end. Skipping does not count; a track replayed by repeat-one counts again, because a replay is a second play.

Ordering and editing

Drag rows to reorder. Select several with shift or command and move, remove or play them together. ⌘⌫ removes the selection from the playlist you are viewing. Right-click any row for:

  • Play — start this track now
  • Play Next — queue it directly after the current track. A row already in the list stays where it is and a second copy is inserted
  • Rating — a submenu of ★ through ★★★★★ and Unrated
  • Reveal in Finder
  • Copy Source URL
  • Remove — take it out of the playlist you are viewing

Row badges

Each row shows its own state. The four you will see:

Badge Meaning
Loading Being prepared — reading metadata, resolving the source
Missing The file has moved, been deleted, or access was not granted
Unsupported The format is not one Fadenza plays
Failed It tried and could not — the reason is in the tooltip

A track with any of these badges stays in the list. Fadenza never removes a track to tidy up. If something is wrong you can see which track, see why, and decide what to do about it.

For a missing file whose permission has lapsed — which happens when a sandboxed app’s saved access to a folder goes stale — the row offers to reopen the file panel so you can grant access again.

When playback hits a bad track

If the current track fails, Fadenza moves to the next one, waiting 250 ms between attempts. It stops once it has come back around to where it started or exhausted the tracks it has tried, so a queue of entirely broken files reports the problem instead of spinning.

Duplicates

Whether a track is added twice depends on how it got there, because the two cases mean different things:

Added by Duplicate of something already in that playlist?
Dragging, or the Open panel Added again
A playlist file Added again
Expanding a folder Skipped
A watched folder Skipped
A drop onto a sidebar row Skipped

Dragging the same track in twice is something you did on purpose. A folder rescan re-adding 400 files you already have is not. A drop onto a sidebar row skips them for the same reason a rescan does: you cannot see what is already in a list that is not on screen. A drop onto the table you are looking at still may duplicate, because the table is its own confirmation.

Duplicate checking is per playlist. The same track in three lists is three separate entries — that is the point of having more than one list, so adding it to Roadtrip says nothing about whether it is already in Gym.

Matching is done on a normalized form of the source, so /Music/A.mp3 and /music/a.mp3 are always recognized as the same file, regardless of the volume’s own case sensitivity. For stream URLs, query strings are compared exactly — they are frequently load-bearing.

Watched folders

A watched folder is registered once and then kept in sync: new files appearing in it are added to the Queue automatically.

Each watched folder keeps a list of what you have removed. Delete a track that came from a watched folder and it stays deleted — the next scan will not bring it back. This is the difference between a folder watcher that is useful and one you turn off after a day.

Repeat and shuffle

Repeat has three modes, and the middle one behaves differently depending on how the track ended:

Mode A track reaches its end You press Next
Off Move on; stop after the last track Move on; nothing to do on the last track
One Replay the same track Move on
All Move on; wrap to the first Move on; wrap to the first

Shuffle generates an order for a whole playlist rather than picking a random track each time. That means no repeats until that list is exhausted, and the order is stable — it is saved with the session and resumes exactly as it was, rather than reshuffling when you reopen the app.

Previous depends on where you are in the track: past three seconds it seeks back to the start, before that it moves to the previous track.