# mcol
Terminal browser for an MPD release archive, written in Chez Scheme.
mcol scans dated release lists and builds its release list from their
slash-separated paths, read as:
- `artist/album`
- `label/artist/release` (or a longer label/artist/release path)
Blank lines and parent paths are not counted as releases. mcol scans recognized
dated lists without a date cutoff:
- `YEAR/MONTH/dailies/YYYY-MM-DD.txt`, or historical `DD_MM_YYYY.txt`
- `YEAR/dailies/YYYY-MM-DD.txt` as a fallback when a month-local daily is absent
- `YEAR/dailies/stdin_playlist_YYYYMMDD*.txt` as a fallback when no daily exists
- `YEAR/MONTH/1_..._....txt` through `YEAR/MONTH/4_..._....txt` for weekly lists
## Run
Requires Chez Scheme 10.4 or newer. Playback requires `mpc`.
```sh
make tui INPUT=/path/to/releases
```
Input is chosen from `--input`, then `MCOL_INPUT`, then the current directory:
```sh
export MCOL_INPUT=/path/to/releases
make tui
```
A small runnable demo is included in [`demo/`](demo/README.md):
```sh
make tui INPUT=demo
```
## Keys
```text
m months w weeks l labels
a artists s search r random play
p play release q queue release
pa play buffer qa queue buffer
nn next page pp prev page b back
? help / filter
x exit
```
Enter a row number to open it. Commands such as `:month 2026-08`,
`:day 2026-08-11`, `:label Warp`, `:artist Autechre`, `:release Label/Artist/Release`, and
`:search Autechre`
are also accepted.
`r` plays random releases from the current buffer. mcol asks for a count and
defaults to 5. `pa` plays every release in the current buffer. `qa` adds every
release in the current buffer to the queue. Use `p 4 5 2` to play releases 4, 5
and 2 from the visible page. mcol adds them to the queue and starts the first
one. Use `q 4 5 2` to add them to the queue without playing.
## Build and install
```sh
make build
make test
make install # /usr/local
make install PREFIX=~/.local
```
See `mcol(1)` after installation. Set `NO_COLOR=1` to disable colour.