Emacs · vertico + marginalia · prototype

Radio-browser station lookup — how the screens read

One command, cj/music-radio-search, taking you from a query to audio. These are faithful mockups of the four minibuffer screens, drawn with a real live search for jazz (results sorted by popularity). Everything is monospace because it all lives in the minibuffer.

The one real design choice is the station line: what metadata rides alongside the name, and in what order. Step 2 shows two variants — pick one.

1  

The query

Bound next to R in the playlist keymap. You type a name or keyword; Enter fires the search.

;; *EMMS-Playlist* — 3 tracks, playing “Kind of Blue / So What”
*EMMS-Playlist*Radio▶ playing
Radio search: jazz
2  

The station list

 — Variant A: codec · bitrate · country · ♥votes ▶plays

vertico lists the matches; marginalia annotates each on the right, dimmed. The current row carries the gold highlight. Codec and bitrate tell you the quality; ♥ is radio-browser votes, ▶ is play count — both proxies for “is this station any good.”

Stations for “jazz” (TAB to mark, RET to create+play): 7/842
Adroit Jazz UndergroundMP3 320k US ♥174208 ▶148
101 SMOOTH JAZZMP3 128k US ♥86929 ▶389
Adroit Jazz Underground HD OpusOGG 192k US ♥67573 ▶51
Jazz Radio BluesMP3 128k FR ♥62960 ▶113
Jazz RadioMP3 192k FR ♥49272 ▶108
Jazz Radio Classic JazzMP3 128k FR ♥27269 ▶52
Radio Swiss JazzMP3 128k CH ♥26626 ▶58
Stations for “jazz”…: 
2  

The station list

 — Variant B: adds a tag snippet, drops play count

Same list, but the annotation trades ▶plays for the station’s top tags — more help telling two same-named stations apart by what they actually play, at the cost of a wider line.

Stations for “jazz” (TAB to mark, RET to create+play): 7/842
Adroit Jazz UndergroundMP3 320k US ♥174208 · bebop, hard bop, cool
101 SMOOTH JAZZMP3 128k US ♥86929 · smooth jazz, easy
Adroit Jazz Underground HD OpusOGG 192k US ♥67573 · avant-garde, opus
Jazz Radio BluesMP3 128k FR ♥62960 · blues, jazz
Jazz RadioMP3 192k FR ♥49272 · jazz, soul
Jazz Radio Classic JazzMP3 128k FR ♥27269 · classical, jazz
Radio Swiss JazzMP3 128k CH ♥26626 · public radio
Stations for “jazz”…: 
3  

Marking several

It’s completing-read-multiple: TAB marks a row (red bullet, name stays lit), and one search can create several stations at once. Here three are marked; Enter creates all three.

Stations for “jazz” (TAB to mark, RET to create+play): 7/842
Adroit Jazz UndergroundMP3 320k US ♥174208 ▶148
101 SMOOTH JAZZMP3 128k US ♥86929 ▶389
Adroit Jazz Underground HD OpusOGG 192k US ♥67573 ▶51
Jazz Radio BluesMP3 128k FR ♥62960 ▶113
Jazz RadioMP3 192k FR ♥49272 ▶108
Jazz Radio Classic JazzMP3 128k FR ♥27269 ▶52
Radio Swiss JazzMP3 128k CH ♥26626 ▶58
Stations for “jazz”…: Adroit Jazz Underground,Jazz Radio Blues,Radio Swiss Jazz
4  

Created and playing

Each pick is written as an .m3u into the MPD playlist directory (Decision 3), then enqueued and started through mpv (Decision 4) — the search ends in sound. The echo area confirms; the three land in the playlist, the first now playing.

Adroit Jazz Underground
  Jazz Radio Blues
  Radio Swiss Jazz
*EMMS-Playlist*Radio▶ playing
Created + playing 3 stations → ~/.local/share/mpd/playlists/
Two things to react to:
A — quality + popularity (codec · bitrate · country · ♥ ▶) B — quality + tags (codec · bitrate · country · ♥ · tags)

Everything else (the flow, multi-select, create-and-play into the MPD dir) matches the resolved spec. Data is a live jazz search; ♥ = radio-browser votes, ▶ = play count. This is a static mockup — no live search runs in the page.