musing

Crates.iomusing
lib.rsmusing
version1.1.0
created_at2025-09-14 17:19:02.19146+00
updated_at2025-09-23 07:42:01.360395+00
descriptionAn MPD-inspired music server
homepage
repositoryhttps://github.com/alfazet/musing
max_upload_size
id1838984
size186,236
Antoni Zasada (alfazet)

documentation

README

Musing

A music player-server for storing, searching through and listening to your music collection.

[!NOTE] Musing by itself is only a server - any interaction with it requires a standalone client. It might sound quite amusing, but that's the only option there is for now (other than writing a client of your own).

Features

  • Play audio files of multiple formats: mp3, aac, flac, wav, aif, ogg (powered by symphonia).
  • Manage and query your music colletion with a simple JSON-based protocol.
  • Extract metadata (titles, albums, genres, even cover art) from tracks.

Installation

Install Musing from cargo (cargo install musing) or download the source code and build it on your own.
For users of Arch-based distros, Musing is available on the AUR (musing).
For Windows users there's a prebuilt binary available in Releases.

Usage and configuration

Simply run musing -m=<MUSIC_DIR>, where <MUSIC_DIR> is the directory where you store your music collection.
Musing will then index all files in this directory (and recursively in its subdirectories) and create a music database out of them.

To learn more about all available command-line options, run musing --help.
To avoid having to specify values at every launch (especially the music directory's path), you can create a musing.toml config file, which supports the following keys:

  • port, to specify the port that Musing will listen on.
  • music_dir, to specify the music directory's path.
  • playlist_dir, to specify the path to the directory containing your playlists (.m3u and .m3u8 files).
  • audio_device, to specify which of your system's audio devices will be the default one used by Musing. Keep in mind that values supplied with command-line arguments take precedence over those specified in the config file.

If you want Musing to ignore (i.e. not even attempt to index) certain directories, place a .musingignore file in the root of the music directory.
Paths to be ignored should be specified one per line, either as absoulte paths or relative to the music directory.

As noted earlier, Musing is just a server and so requires a client to interact with it.
If you want to build your own client, take a look at the documentation for an API reference.

TODO

  • Extend the API.
  • Stream raw PCM data (e.g. for use by music visualizers).
  • Add proxy mode (for use with remote servers).
Commit count: 88

cargo fmt