Skip to content

Local Music Folder

valk edited this page Oct 2, 2026 · 2 revisions

Audio files on the server play straight from disk. Nothing is fetched, so nothing can be rate limited, signed out or refused. If you only ever use this folder, CDisc needs no setup at all.

Using it

Drop files into plugins/CDisc/local/, then, holding a disc:

/cdisc create local:rain.mp3
/cdisc create local:ambient/deep rain.ogg
/cdisc create local:rain
  • Press Tab after local: and the server lists what is actually in the folder.
  • The extension may be left off, case doesn't matter, and subfolders work.
  • A name that matches several files shows them as a list to pick from. local: on its own lists the folder.
  • File names in any language work.
  • A file without tags is named after the file, not "Unknown title".

The folder is re-read on /cdisc admin reload, and by itself every 30 seconds, so a file dropped in while the server runs turns up on its own.

# sources.yml
local:
  folder: 'local'      # relative to the plugin folder; absolute paths work too
  extensions: [mp3, ogg, flac, wav, m4a, aac, opus, webm]
  max-files: 5000      # a guard against pointing folder at a whole media drive

Players choose only from what is in the folder: a path that climbs out of it is refused. enabled.local: false in sources.yml turns the folder off.

Settings for one file

A file can carry its own settings in a .jsonc file beside it, rain.mp3.jsonc for rain.mp3:

{
    // the name /cdisc create local: offers for it
    "name": "rain",
    "default-volume": 60,
    // who may use it; "!some.group" means everyone without that permission
    "permissions": "some.group",
    "metadata": {
        "one-line": false,
        "title": "Rain on the roof",
        "author": "Field recording"
    },
    "lyrics": {
        "enabled": true,
        "sync-with-time": true,
        "lines": {
            "00:12": "first line",
            "00:18": "second line"
        }
    }
}
Key Meaning
name The name shown in local: completion
default-volume 0 to 100; without it, volume in config.yml applies
permissions One permission, or several in a list, read the same way as permissions.yml: any one is enough, and ! in front lets in everyone who hasn't got it. cdisc.admin always may
metadata.title, author Shown instead of the file's own tags
metadata.text, one-line One line shown instead of title and author, when one-line is true
lyrics.lines Either an object of "mm:ss": "line", or a list of "[01:23] line" strings
lyrics.sync-with-time false ignores the timecodes and spreads the lines evenly over the track
lyrics.enabled false hides lyrics for this file

Comments, trailing commas and single quotes are allowed.

You don't have to write it by hand:

/cdisc admin local-files-config <file>

opens a window that edits all of it, lyrics line by line. It needs cdisc.admin.local-files, operators by default.

Downloading into the folder

/cdisc admin download <link or search> [name]

takes whatever /cdisc create takes and saves the result into the folder:

  • a direct link is fetched as it is;
  • a YouTube link is read the way playback reads it, including through the backend;
  • a Spotify link is matched on its ISRC to the recording the label uploaded;
  • a VK track is saved as mp3;
  • a search shows the same clickable list, and the one you pick is saved.

The file then behaves exactly like one you copied there yourself, and keeps playing whatever happens to the original.

# sources.yml
local:
  download:
    enabled: true
    max-size-mb: 100       # counted as the bytes arrive, not from the declared size
    timeout-seconds: 120

Operators only by default (cdisc.disc.download): it writes to the disk and spends bandwidth. Links into the server's own network, such as localhost or the LAN, are refused.

Clone this wiki locally