Commit Briefs

906e393829 mtmn

add daily filtering, reverse order (main)


7da8ef9eb7 mtmn

use ninja build system


ffb7bf10fb mtmn

random picks current buffer, qa/pa binds


9e2db7b073 mtmn

fix tests and file parsing, add license


bf5177b65a mtmn

add demo files


6a82e8ad5c mtmn

init


Branches

Tags

This repository contains no tags

Tree

.gitignorecommits | blame
LICENSEcommits | blame
README.mdcommits | blame
bin/
build.ninjacommits | blame
demo/
doc/
src/
test/
tools/

README.md

# 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

You need Chez Scheme 10.4 or newer. Playback needs `mpc`.

```sh
ninja tui INPUT=/path/to/releases
```

Input is chosen from `--input`, then `MCOL_INPUT`, then the current directory:

```sh
export MCOL_INPUT=/path/to/releases
ninja tui
```

A small runnable demo is in [`demo/`](demo/README.md):

```sh
ninja tui INPUT=demo
```

## Keys

```text
d  dailies      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
```

Chronological views show the newest entries first. The dailies view shows one
effective source per date after applying the daily, fallback, and session
precedence rules. Days, weeks, and months with no counted releases are omitted.

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
ninja build
ninja test
ninja install                  # /usr/local, escalates to sudo if needed
```

Run `ninja install` to write to a system prefix. mcol asks for `sudo` if the
target directories are not writable. Set `PREFIX`, `DESTDIR`, `SCHEME` or
`NO_COLOR` in the environment to override the defaults. See `mcol(1)` after
installation. Set `NO_COLOR=1` to turn off colour.