Generate labels and case inserts for MiniDisc from description files. Also generate description files and download cover art from SubSonic server (like Navidrome).
  • C 97.5%
  • Makefile 2.5%
Find a file
2026-03-26 13:27:50 +00:00
.clangd chore: initial commit 2026-03-26 13:27:50 +00:00
.gitignore chore: initial commit 2026-03-26 13:27:50 +00:00
album.c chore: initial commit 2026-03-26 13:27:50 +00:00
album.h chore: initial commit 2026-03-26 13:27:50 +00:00
CHANGELOG.md chore: initial commit 2026-03-26 13:27:50 +00:00
fetch-subsonic-album.c chore: initial commit 2026-03-26 13:27:50 +00:00
Makefile chore: initial commit 2026-03-26 13:27:50 +00:00
minidisc-logo.h chore: initial commit 2026-03-26 13:27:50 +00:00
minidisc-logo.svg chore: initial commit 2026-03-26 13:27:50 +00:00
README.md chore: initial commit 2026-03-26 13:27:50 +00:00
render-minidisc.c chore: initial commit 2026-03-26 13:27:50 +00:00

MiniDisc Tools

Generate printable PDF artwork for MiniDisc cases and fetch album metadata from Subsonic servers.

This is a C project of mine from a long time ago that I resurrected in 2014. I've since updated it a bit and modernised it somewhat.

Tools

render-minidisc

Generates a PDF containing:

  • Spine label - fits the edge of a MiniDisc case
  • Disc label - artwork for the disc itself with album art, track count, and total time
  • Jewel case insert - track listing with times
Usage: render-minidisc [-o pdffile] [file|-]

  -o pdffile    path to PDF output
  -h            show help

Example:

./render-minidisc -o album.pdf album.nfo

fetch-subsonic-album

Fetches album metadata from a Subsonic-compatible server and generates a .nfo file for later use with render-minidisc.

Usage: fetch-subsonic-album [-h hostname] [-u username] [-p password] album-id

  -h hostname   hostname for Subsonic server
  -u username   username for Subsonic
  -p password   password for Subsonic
  album-id      Subsonic album ID

The password can also be set via the SUBSONIC_PASSWORD environment variable.

Example:

./fetch-subsonic-album -h music.example.com -u myuser -p mypass al-12345

This creates an .nfo file and downloads the cover art as a png image.

NFO File Format

The .nfo files describe an album for rendering:

ARTIST "Artist Name"
ALBUM  "Album Title"
YEAR   2020
COVER  "cover_art.png"

TRACK "Track One" 03:45
TRACK "Track Two" 04:12
TRACK "Track Three" 05:30
  • ARTIST, ALBUM, YEAR - album metadata
  • COVER - path to png cover art (optional)
  • TRACK - track name in quotes, followed by duration (MM:SS or HH:MM:SS)

Building

Dependencies

  • cairo (with PDF support)
  • libcurl
  • json-c
  • openssl

On Debian/Ubuntu:

sudo apt-get install libcairo2-dev libcurl4-openssl-dev libjson-c-dev libssl-dev

Compile

make

This builds both render-minidisc and fetch-subsonic-album.