Fact-checked by Grok 2 weeks ago

Music Player Daemon

Music Player Daemon (MPD) is a and open-source server-side application for playing music, utilizing a modular client-server in which the MPD daemon handles audio playback, maintains a music database, organizes playlists, and supports via a dedicated network protocol from various client applications. Developed initially by Max Kellermann and first released in 2003, has evolved over more than two decades into a highly flexible tool, with active maintenance under the MusicPlayerDaemon project; the major stable release 0.24 was issued in March 2025 after extensive contributions from 72 developers, with the latest minor version, 0.24.6, released in October 2025 (as of November 2025). Through its extensible plugin system, MPD supports playback of diverse audio formats, including , , Ogg Vorbis, , , , and others via libraries such as libmad and libflac, while also accommodating streams, DSD files (in native, , or PCM conversion modes), and multi-channel audio. Notable features encompass seamless cross-fading between tracks, for volume normalization, bit-perfect output for high-fidelity playback, and the capacity for multiple independent partitions that share a central database but operate separately, enabling advanced setups like networked or multi-user environments. MPD's design emphasizes efficiency and customization, running as a lightweight daemon on , systems, and other platforms, with configuration managed through a simple mpd.conf file that allows integration with local or remote storage protocols such as NFS and .

History and Development

Origins and Creator

The Music Player Daemon () was initially developed in May 2003 by Warren Dukes as a lightweight, server-based music player designed for systems. The project emerged to address the need for a resource-efficient audio server that decouples music playback from the , allowing for flexible , , and extensibility through a client-server model. This design enabled seamless integration into various environments, prioritizing low overhead and compatibility with diverse audio formats while running as a background daemon. Shortly after its , MPD was released as under the GNU General Public License version 2 (GPLv2), facilitating community contributions and widespread distribution. In 2008, development transitioned to Max Kellermann, who has since served as the primary maintainer, overseeing ongoing enhancements while preserving the core architecture. Early adoption occurred rapidly within open-source communities, particularly for systems where its server-side efficiency supported multi-room playback and custom interfaces, as well as in resource-constrained devices for streamlined music handling. This foundational approach laid the groundwork for MPD's evolution into a versatile platform, briefly referencing its maturation into a robust client-server system without delving into later architectural details.

Major Releases

Music Player Daemon's initial stable release occurred in 2003, establishing its foundation as a lightweight, server-based audio player designed for and integration into various systems. A significant evolution arrived with version 0.18 in October 2013, featuring a complete internal rewrite from to to enhance code readability and maintainability while addressing long-standing performance bottlenecks. In January 2017, release 0.20 introduced key advancements, including protocol extensions for better client interactions, improved HTTP streaming with support for reading and tags from remote files, and refinements to Windows compatibility such as fixes for database and state file handling. The project reached its latest stable version, 0.24.6, on October 20, 2025, incorporating bug fixes such as improved seeking in files with large tags, FFMPEG support for *.opus files, a workaround for libmpg123 corruption, and removal of METADATA_BLOCK_PICTURE size limits for and . Throughout its history, MPD's development has followed a pattern of frequent minor releases to ensure with evolving audio libraries and systems, interspersed with major updates every 2-4 years that emphasize enhancements, dependency modernizations, and architectural refinements.

Architecture and Design

Client-Server Model

Music Player Daemon () functions as a background daemon process that serves as the central component, responsible for all audio decoding, playback , and music database management without incorporating any graphical user interface. This server-side design allows MPD to operate efficiently in the background, focusing solely on tasks while delegating user interaction to separate client applications. Client applications connect to the MPD server over , typically on the default 6600, to issue commands such as play, pause, or adding tracks to a , enabling seamless from various devices. Multiple clients can simultaneously connect to and control a single MPD instance, facilitating shared access in multi-user or multi-device setups. The server supports both IPv4 and connections, with configurable binding options to restrict access if needed. This client-server architecture provides several key benefits, including low resource consumption that allows MPD to run on minimal hardware setups, such as embedded systems or older machines. It ensures platform independence, with primary support for operating systems like and macOS, alongside an official port for Windows via precompiled binaries. The model also enhances scalability for multi-user environments by limiting concurrent connections (default maximum of 100) to prevent overload. Regarding daemon lifecycle, MPD can be started manually via the mpd command or automatically on system boot through services like , and it handles graceful shutdowns via signals such as SIGTERM, saving its state to a designated file.

Database and Protocol

Music Player Daemon (MPD) employs a for persistent storage of its music library, utilizing the default "simple" database plugin to maintain a copy of the data on disk at a configurable path, such as /var/lib/mpd/db. During runtime, MPD loads this database into an for efficient access and querying, enabling quick retrieval without repeated disk I/O. The database indexes audio files by extracting tags, including , , title, track number, , date, , and performer, stored as strings that support multiple values per tag for comprehensive organization. Database updates occur either manually through the "update" command issued via clients like mpc update, which rescans the configured music directory, or automatically upon MPD startup or when file system changes are detected in monitored directories. During scanning, MPD traverses the specified music_directory (e.g., ~/Music) to identify and index files in supported formats, such as and , using decoder plugins while excluding unwanted files via an optional .mpdignore pattern file. This process ensures the database remains synchronized with the library, though large collections may require time for initial or full rescans. The protocol is a simple, line-based text communication standard operating over on the default port 6600, allowing clients to send commands and receive responses from the server in a stateless, request-response manner. Commands follow the format COMMAND [ARG...], where arguments with spaces are enclosed in double quotes, and responses consist of - pairs on lines like key: value (e.g., [file](/page/File): /path/to/song.[mp3](/page/MP3) for song paths or Title: Song Name for ), terminated by [OK](/page/OK) for success or [ACK](/page/ACK) for errors. For instance, the playlistinfo command retrieves details, returning a list of such pairs for each , while responses (e.g., album art) include a prefixed length indicator like binary: 1234. To ensure compatibility across versions, the server greets connections with OK MPD <version> (e.g., OK MPD 0.24.0), allowing clients to negotiate features without breaking . Regarding , the includes optional via the password command, but lacks advanced or mandatory credentials; thus, remote access typically relies on external measures like firewalls, VPNs, or binding to to mitigate risks such as unauthorized control or file access. In MPD's client-server architecture, this enables seamless separation of control and playback logic.

Core Features

Audio Playback and Formats

Music Player Daemon (MPD) supports a range of audio formats through its decoder plugins, which rely on external libraries for processing. Lossless formats such as and are handled via libraries like libFLAC and libsndfile, respectively, ensuring high-fidelity reproduction without data compression artifacts. MPD also supports (DSD) formats through dedicated plugins for DSF and DSDIFF files, enabling native DSD, DSD over PCM (), or PCM conversion playback. Lossy formats including , Ogg , and are decoded using libraries such as libmad or mpg123 for MP3, libvorbis for Ogg Vorbis, and libfaad for AAC, allowing compatibility with compressed audio files common in digital music libraries. Additionally, the FFmpeg decoder plugin provides broad support for multiple formats, including , by leveraging the FFmpeg library. The playback in MPD manages the entire audio processing , starting with decoding the input files using the appropriate plugins to extract audio data. This decoded audio can then be resampled to a target rate, such as 44.1 kHz, using resampler plugins like libsamplerate or for quality conversion when the source format does not match the output requirements. Buffering is integral to smooth operation, with an input cache configurable up to sizes like 1 GB to preload data and prevent playback interruptions, while output buffers (defaulting to 4 MB) handle delivery to the audio device. MPD's system integrates with this engine, enabling dynamic insertion or removal of tracks during playback without halting the stream, facilitated by pre-buffering mechanisms that prepare the next song in advance. Gapless playback is a core capability of MPD, achieved by seamless transitions between tracks of the same audio format through precise timing and pre-buffering of the subsequent song, eliminating audible pauses in albums designed for continuous listening. For enhanced transitions, crossfade can be enabled and configured in the mpd.conf file with configurable durations in seconds (0 disables it for pure gapless playback), blending the end of one track with the start of the next; this requires uniform audio formats across tracks for optimal effect. Volume control in MPD operates primarily through software-based mixing, independent of the specific , allowing consistent adjustment across sessions via the mixer_type "software" setting in audio_output configurations. support further refines this by applying pre-calculated gain adjustments from tags, such as or levels, to normalize volume without clipping, configurable as "album" or "track" modes. This software approach ensures flexibility, though hardware mixing can be selected when supported by the output for device-specific optimization.

Output and Mixing Options

Music Player Daemon (MPD) supports a variety of audio output plugins to interface with and devices, enabling flexible delivery of decoded audio streams. The primary output for systems is ALSA, which provides direct access to sound cards and supports including sample rates such as 44.1 kHz to 384 kHz or higher and bit depths of 16, 24, or 32 bits, depending on and configuration. Other built-in options include for desktop environments with shared audio mixing, for legacy Unix systems, and HTTP for streaming audio over , allowing playback on remote devices. Multiple audio outputs can be configured simultaneously through separate audio_output blocks in the MPD configuration file, facilitating zoned audio setups where different rooms or devices receive synchronized playback. MPD incorporates mixing capabilities to adjust audio levels and apply effects post-decoding. A built-in software is available by setting mixer_type "software" in the output , which handles volume control when mixing is unavailable or disabled, supporting bit depths such as 16-bit, 24-bit, and 32-bit along with high sample rates depending on the underlying . For advanced processing, plugins such as the FFmpeg-based can implement equalization and other effects via custom graph definitions, while a dedicated normalize provides basic volume normalization during playback. These options ensure consistent audio delivery without relying on external tools, though mixers (e.g., via ALSA or ) are preferred for lower when supported. ReplayGain integration allows for consistent loudness across tracks by applying pre-calculated gain adjustments from metadata tags. Enabled through the replaygain directive (with modes like album, track, or auto), it applies gain adjustments via the software handler by default, with configurable preamp levels from -15 to 15 dB to prevent clipping. The replaygain_limit option (enabled by default) caps adjustments to avoid distortion, and for tracks lacking tags, a separate replaygain_missing_preamp setting applies a fallback gain. This feature is particularly useful in multi-output scenarios, where uniform volume prevents imbalances between zones. Common issues in multi-output configurations include from underruns, especially with high-resolution formats or outputs like HTTP. To mitigate this, MPD's input cache can be tuned (e.g., input_cache { size "1 GB" }) to preload data and smooth playback, while adjusting per-output timeouts in the helps synchronize streams across devices. Enabling verbose logging (log_level "verbose") aids in diagnosing delays, revealing mismatches in sample rates or device availability. These adjustments ensure reliable performance in zoned setups without introducing excessive delay.

Networking and Extensions

Streaming Capabilities

Music Player Daemon (MPD) supports HTTP streaming via its built-in httpd output plugin, which enables the server to deliver live audio from the current or to remote clients over the network. Introduced in version 0.15, this feature allows MPD to function as a streaming server, broadcasting audio in formats such as Ogg Vorbis or , depending on the configured encoder. The HTTP server binds to a configurable , commonly set to 8000, and includes headers like icy-name for identification, making it accessible via standard HTTP clients. The httpd plugin accommodates multiple concurrent listeners, with no default limit on connections, and supports binding to specific addresses or all interfaces for or wide-area access. It integrates with encoder plugins to ensure consistent audio quality, recommending fixed formats to avoid interruptions during playback. Clients such as , , or browsers can connect directly to the stream (e.g., http://:8000) for playback, facilitating seamless distribution without additional software on the receiving end. management is handled through MPD's global output settings, with a default maximum size of 8192 KB (8 MiB) to mitigate network latency and , ensuring reliable delivery even under variable conditions. For broader broadcasting, MPD integrates with Icecast and servers using the shout output plugin, which forwards the server's audio output to a remote streaming host in real-time, emulating functionality. This plugin supports protocols like Icecast2 (default) and , requiring configuration of the target host, port, mount point, and credentials to establish the connection. Metadata injection is automatic, embedding track titles, artist information, and other tags into the stream for dynamic updates during playback. Bitrate limiting is configurable via the chosen encoder (e.g., at 128 kbps), allowing control over bandwidth consumption to suit the target audience or network constraints. These streaming features enable practical applications such as whole-home audio systems, where household devices tune into the HTTP stream for synchronized playback, or public stations hosted via Icecast for wider dissemination. In web applications, the HTTP stream can be embedded using elements, providing a lightweight interface for remote access without dedicated client software.

Discovery and Control Protocols

Music Player Daemon (MPD) supports automatic service discovery through Zeroconf, which enables clients on the local network to locate MPD instances without requiring manual configuration of IP addresses or ports. This feature relies on (mDNS) and is implemented via the Avahi library on systems or Apple's on other platforms, provided that Zeroconf support is enabled during compilation with options like -Dzeroconf=avahi. In the MPD configuration file, administrators can enable this with zeroconf_enabled "yes" and customize the service name using zeroconf_name "Custom MPD Service", ensuring unique identification on the network while handling potential name collisions automatically. This discovery mechanism enhances usability in home networks by broadcasting MPD's availability, allowing compatible clients to connect seamlessly for playback control. To integrate with UPnP/DLNA ecosystems, MPD can function as a media renderer when paired with the upmpdcli frontend, which exposes MPD's playback capabilities to UPnP controllers commonly found in smart home devices and media applications. upmpdcli translates UPnP AV commands into MPD protocol instructions, supporting features like transitions and OpenHome extensions for advanced playlist management. This setup positions MPD as a controllable renderer in -compliant environments, where external controllers—such as those on smartphones or TVs—can browse libraries, select tracks, and adjust volume without direct MPD client software. Compilation of MPD with libupnp-dev also enables a native neighbor plugin, which discovers UPnP media servers on the network for MPD to pull content from, further broadening interoperability. MPD's core operates over on port 6600 by default, using a simple line-based text format that facilitates remote management and scripted from various tools. This supports commands for playback , manipulation, and queries, enabling with scripts via utilities like mpc (a command-line client) or direct connections using curl or netcat for tasks such as adding tracks or changing volume programmatically. For instance, a basic can send commands like play or add "path/to/track" over the network, making MPD suitable for systems without needing complex . While the lacks built-in structured formats like , third-party wrappers can provide HTTP-based access for web-integrated , though core MPD emphasizes lightweight, direct interactions. Given that MPD's control protocol transmits data, including passwords, in , exposing the server on untrusted networks poses risks such as or unauthorized access. To mitigate this in exposed setups, it is recommended to bind the control port to or a specific via bind_to_address in the and use firewalls to restrict access. For encrypted connections, administrators should employ external TLS wrappers like to tunnel the traffic over SSL/TLS, or route control through SSH tunnels or VPNs to ensure confidentiality and authentication. Additionally, MPD supports basic permission controls with password directives and default_permissions like "read,add,control" to limit client capabilities, but these do not replace the need for transport-layer in remote scenarios.

Configuration and Setup

Installation Process

Music Player Daemon (MPD) is primarily designed for systems, with official support for distributions through package managers and source compilation, while Windows users can utilize pre-built binaries or cross-compilation tools. On Debian-based systems such as , MPD is installed via the Advanced Package Tool (APT) with the command sudo apt install mpd, which handles dependencies and places the at /etc/mpd.conf and the default music directory at /var/lib/mpd/music. For , the package manager is used with sudo pacman -S mpd, similarly managing system integration. On Windows, users download the mpd.exe binary for x64 architecture from the official download page and execute it directly, optionally using the provided build script for custom compilation with and . When installing from source across Unix-like platforms, MPD requires a C++20-compliant compiler (such as GCC 12 or Clang 14), the Meson build system version 1.0 or later, Ninja, and pkg-config, along with audio codec libraries including libmad for MP3 decoding and libflac for lossless audio support. To build, clone the repository with git clone https://github.com/MusicPlayerDaemon/MPD.git, navigate to the directory, run meson setup . output/release --buildtype=debugoptimized -Db_ndebug=true, compile using ninja -C output/release, and install with ninja -C output/release install. For Windows source builds, the win32/build.py script facilitates static executable generation. Initial setup involves creating a dedicated system user for the daemon to enhance and prevent execution, typically named '', which is automatically provisioned by package managers on distributions like and Arch during . The user must have read and execute permissions on the music directory and its parent paths; for system-wide setups, add the mpd user to the audio group or the user's primary group (e.g., sudo usermod -aG audio mpd or gpasswd -a mpd $(id -gn $USER)), ensure the music directory and parents have execute permissions for others (e.g., chmod o+x /home/$USER), and set read permissions on the music directory if needed (e.g., chmod o+rx /home/$USER/[Music](/page/.music)). This ensures the daemon can scan and access audio files safely, aligning with the configuration file's music_directory directive. Post-installation verification confirms successful deployment by running mpd --version to display the installed version and build details. Further testing involves installing the MPC command-line client (e.g., sudo apt install mpc on ) and using it to connect to the daemon, update the database with mpc update, and play a sample file via mpc play to validate audio output.

File and Database Management

The configuration of Music Player Daemon (MPD) is managed through its primary configuration file, typically located at /etc/mpd.conf for system-wide installations or $XDG_CONFIG_HOME/mpd/mpd.conf for user-specific setups. This file contains key directives that define paths for music libraries, playlists, and the database, ensuring MPD can locate and organize audio files effectively. The music_directory directive specifies the root path to the user's music collection, such as music_directory "/home/user/Music", which MPD scans to build its internal database of available tracks. Similarly, the playlist_directory directive sets the location for storing saved playlists, often in a subdirectory like playlist_directory "/home/user/Music/playlists", where MPD saves user-defined lists for quick access. The db_file directive points to the database file, such as $XDG_CACHE_HOME/mpd/database, which should be explicitly set and stores metadata such as song titles, artists, and durations extracted from supported audio formats. MPD maintains its music database by scanning the music_directory to index files and metadata, a process initiated or updated via the mpc update command from the MPD client. This command performs a full rescan of the entire library when no path is specified, rebuilding the database to reflect additions, modifications, or deletions; for large collections exceeding 10,000 tracks, this can take several minutes depending on hardware and file system performance. To optimize for efficiency, users can specify a relative path (e.g., mpc update "Artist/Album") for targeted incremental updates, scanning only the affected subdirectory and reducing processing time. The --wait option in mpc update ensures the command blocks until the scan completes, useful in scripts or for immediate verification. Additionally, enabling auto_update "yes" in the configuration file (Linux only) allows MPD to monitor the music_directory for changes and trigger incremental updates automatically, though this feature is disabled by default to avoid performance overhead on resource-constrained systems. Playlists in MPD are handled as plain text files in format, stored within the playlist_directory and referenced by name without the .m3u extension in client commands. Users can create, save, load, or clear playlists using protocol commands via clients like mpc, such as mpc save "My Playlist" to store the current or mpc load "My Playlist" to append it, enabling persistent organization of tracks across sessions. These files contain relative paths to songs in the database, ensuring portability as long as the music_directory structure remains intact. Best practices for 's file and database management emphasize security and reliability, such as configuring the music_directory as read-only for the to prevent accidental modifications during playback and using separate directories for and playlists to simplify backups. Regular backups of the db_file are recommended to mitigate risks from failures or crashes, achievable via simple file copying tools like after updates; for instance, scripting cp $XDG_CACHE_HOME/[mpd](/page/MPD)/database /backup/[mpd](/page/MPD).db post-scan maintains without interrupting service. Proper file permissions—typically chown [mpd](/page/MPD):audio on directories and chmod 644 on the database—further ensure operation, particularly in multi- environments.

Clients and Interfaces

Command-Line and Terminal Clients

Command-line and terminal clients for the Music Player Daemon (MPD) provide lightweight interfaces for controlling music playback without graphical dependencies, making them suitable for server environments or automated workflows. These clients interact with MPD via its protocol, issuing commands for playback, queue management, and metadata handling directly from the terminal. The official MPD client, mpc, is a minimalist command-line tool written in C, designed for basic operations such as starting playback (mpc play), advancing to the next track (mpc next), and adjusting volume (mpc volume 80). It supports scripting through environment variables like MPC_FORMAT for output customization and options such as --wait to synchronize with MPD operations, enabling automation in scripts—for instance, adding files to the via mpc add /path/to/files. This simplicity allows integration into batch processes, like exporting playlists with mpc save playlist_name > export.txt. For a more interactive terminal experience, ncmpcpp offers an ncurses-based user interface inspired by ncmpc, featuring a visual playlist browser for sorting and range selection, lyrics fetching from sources like Genius and Musixmatch, and in-place tag editing for multiple tracks (e.g., updating artist or album fields). Its configurable keybindings, defined in a bindings file, support macros and non-ASCII inputs, allowing users to customize navigation and actions like seeking within tracks. Built in C++, ncmpcpp emphasizes efficiency with 256-color support and wide-character handling for Unicode displays. Another notable option is python-mpd2, a Python 3 library serving as a wrapper for MPD protocol interactions, ideal for developing custom scripts that automate client behaviors beyond basic commands. Requiring Python 3.6 or later, it includes logging and configurable timeouts, facilitating programmatic access to playback controls and database queries in automated environments. These clients excel in headless server setups due to their zero reliance on graphical libraries, enabling remote control over networks with minimal resource overhead—such as binding mpc commands to hotkeys for quick operations or scripting playlist updates on remote MPD instances. Examples include batch exports of current queues (mpc playlist > backup.m3u) or conditional playback scripts using search filters like mpc search artist="Artist Name" | mpc add.

Graphical and Web-Based Clients

Graphical and web-based clients provide user-friendly visual interfaces for controlling (MPD) servers, enabling library browsing, playback management, and playlist editing across desktops, mobiles, and browsers. These clients leverage MPD's protocol for remote access, often incorporating features like album art display and search to enhance usability without requiring command-line interaction. GMPC, a GTK-based desktop client, offers comprehensive MPD control including album art viewing, advanced search capabilities, and support for multiple MPD servers through configurable profiles. It features a collapsible interface for efficient navigation and full access to MPD functions such as playback toggles and output management. However, GMPC has been unmaintained since its last major update in 2018, with version 11.8.16 as the final release. M.A.L.P. (Material Android Listen Player) serves as a graphical client for Android devices, allowing users to browse MPD libraries, manage playlists and outputs, and control playback remotely. The app supports cover art display, search functionality, and notifications for playback status, with compatibility from Android 5.0 onward as of its latest version 1.3.2 released in July 2024. Among web-based options, myMPD delivers a modern HTML5 interface with responsive design optimized for desktops, tablets, and mobiles, facilitating MPD control without additional server dependencies. Key functionalities include tag editing directly in the browser, dynamic playlist creation, and concurrent support for MPD partitions to manage multiple audio zones. Its lightweight footprint minimizes resource use while enabling advanced features like search by tags and cover art management. ROMPR provides an AJAX-driven web client for , featuring seamless multi-device control and integration with for scrobbling listening history and artist recommendations. The interface supports album art display, track rating, and automatic generation based on user habits, with options for web radio and handling. It emphasizes discovery tools, such as biographies from external sources, to enrich the experience in a environment.

Integrations and Community

Use in Embedded and Hardware Systems

Music Player Daemon (MPD) finds extensive application in embedded systems due to its lightweight design and efficient resource utilization, making it a preferred choice for resource-constrained hardware such as single-board computers. In do-it-yourself (DIY) audio projects on the , MPD serves as the foundational music server in distributions like Volumio and MoOde Audio Player, enabling users to build compact, networked music streamers for environments. These setups exploit MPD's server-client architecture to handle playback, management, and streaming with minimal overhead, often integrating with peripherals like USB DACs for high-fidelity output. In commercial hardware integrations, is embedded as a backend engine in various network streamers and portable audio devices through (OEM) licensing, ensuring compliance with its GPL terms by providing modified source code. Notable examples include the Chord Poly wireless streamer, which pairs with DACs like the Chord Mojo for mobile playback; the Aurender A10 digital music player; Bryston audio systems; and the Cary Audio DMS-500/600 network players. These deployments leverage MPD's plugin system for support of formats like PCM up to 768 kHz and DSD, facilitating seamless integration into ecosystems for both wired and wireless streaming. MPD's performance optimizations render it particularly suitable for and contexts, with default configurations featuring an audio size of 4 MB and configurable limits on connections and playlist lengths to conserve resources. On ARM-based systems, it maintains low CPU utilization during typical playback, while memory consumption remains modest—often in the range of tens of megabytes for small to medium libraries—allowing reliable 24/7 operation in setups. For instance, MPD integrates directly with platforms like , enabling automated control of multi-room audio systems without significant performance degradation. Addressing challenges in battery-powered devices, MPD incorporates features like a default 60-second connection timeout to terminate idle client sessions, thereby minimizing power draw during periods of inactivity and supporting extended runtime. In devices such as the Chord Poly, this contributes to up to 9 hours of portable operation, balancing audio processing demands with in mobile scenarios.

Licensing and Ecosystem

Music Player Daemon (MPD) is licensed under the GNU General Public License version 2 (GPLv2) since its inception in 2003, which permits free redistribution, modification, and use in derivative works provided that the source code is made available. This copyleft license ensures that MPD remains open-source and community-driven, aligning with its design as a flexible server-side application. The project has enforced its licensing terms against vendors incorporating MPD into proprietary hardware, with notable cases of infringement resolved through legal compliance. For instance, in 2018, Cary Audio was found to have distributed modified MPD binaries in its DMS-500 and DMS-600 devices without providing source code, violating GPLv2 section 4; the issue was resolved in 2020 when Cary Audio published the required sources. Similarly, other vendors like Euphony faced requests for source code disclosure in the late 2010s, highlighting ongoing efforts to uphold GPL obligations in commercial integrations. MPD's development is primarily maintained by Max Kellermann, with contributions from volunteers through the official repository, where issues, pull requests, and discussions facilitate collaborative improvements. The project remains vendor-neutral, focusing on open standards rather than promoting specific hardware, though it maintains a public list of commercial products using to track GPL compliance and provide transparency for users seeking compatible devices. Community support is available via the GitHub issues tracker and the IRC channel #mpd on , following the decommissioning of the dedicated in 2021 to streamline engagement on a single platform. Despite its robust ecosystem, has gaps in cross-platform adoption, particularly on non-Linux systems. Official support for Windows is limited, with the last pre-built from 0.16.4 dating back several years, relying instead on community-compiled ports and user discussions for setup and maintenance. On macOS, there is no native daemon ; installations depend on package managers like Homebrew, with recent contributions restoring and enhancing compatibility through third-party efforts. The community has expressed interest in expanding mobile client options, as existing apps like MALP provide core functionality but lack broader innovation, prompting calls for more modern, feature-rich developments to improve remote control accessibility. As of 2025, MPD's development continues actively; the latest stable version is 0.24.6, released in October 2025, with version 0.25 under development. Enhancements such as support and dependency reductions, including removal of , were introduced in 0.24. Protocol extensions have been incrementally added over time, though no major version 2 overhaul is currently documented, with focus remaining on stability and extensibility for long-term sustainability.

References

  1. [1]
    Music Player Daemon (MPD)
    Music Player Daemon (MPD) is a flexible, powerful, server-side application for playing music. Through plugins and libraries it can play a variety of sound files ...Download · Clients · Mpc · MPD on Android
  2. [2]
    MusicPlayerDaemon/MPD: Music Player Daemon - GitHub
    A daemon for playing music of various formats. Music is played through the server's audio device. The daemon stores info about all available music.
  3. [3]
    User's Manual — Music Player Daemon documentation
    Music Player Daemon (MPD) is a flexible, powerful, server-side application for playing music. Through plugins and libraries it can play a variety of sound ...
  4. [4]
    Music Player Daemon
    - **Project Creation Date**: 2003-05-14
  5. [5]
    Imprint - Music Player Daemon
    Imprint. The Music Player Daemon project is managed by: Max Kellermann Zur Brücker Aue 20 51427 Bergisch Gladbach Germany imprint@musicpd.org.Missing: origins creator 2003
  6. [6]
    massar/empcd - Event Music Player Client daemon - GitHub
    This is empcd which can use /dev/input/event0 or other event devices to control MPD (Music Player Daemon) ... empcd is suited for embedded devices ...
  7. [7]
    MPD 0.18 released - Music Player Daemon
    Music Player Daemon 0.18 has been released. Internally, the code base has been rewritten from C99 to C++11, which improves code readability and maintainability.
  8. [8]
    MPD 0.20 released - Music Player Daemon
    Music Player Daemon 0.20 has been released. This new major release contains a big number of improvements, for example: various protocol extensions.
  9. [9]
    None
    ### Summary of Windows Support and HTTP Streaming Improvements in MPD 0.20 Changes
  10. [10]
    MPD 0.24.6 released - Music Player Daemon
    MPD 0.24.6 released. Music Player Daemon 0.24.6 has been released. Change log · Music Player Daemon logo · News · Download · Clients · Documentation (stable) ...
  11. [11]
    Change log - GitHub
    ver 0.24.6 (2025/10/20) * decoder - ffmpeg: handle "*.opus" files - mpg123: another workaround for libmpg123 ID3 corruption bug - opus: fix seeking in files ...
  12. [12]
    None
    Nothing is retrieved...<|control11|><|separator|>
  13. [13]
    Download the Music Player Daemon
    Download. Source Code. mpd-0.24.6.tar.xz (sig, change log); All versions · git repository. Release tarballs and git tags are signed with GPG key C6DB4512 .
  14. [14]
    Plugin reference — Music Player Daemon documentation
    ### Summary of Simple Database Plugin
  15. [15]
    Protocol — Music Player Daemon documentation
    ### Summary: How MPD Indexes Music by Metadata Tags Like Artist, Album, Title
  16. [16]
    Protocol — Music Player Daemon 0.25~git documentation
    This is usually a 4-digit year. originaldate: the song's original release date. composer: the artist who composed the song. composersort: same as ...
  17. [17]
  18. [18]
  19. [19]
  20. [20]
    mpd.conf — Music Player Daemon documentation - Read the Docs
    See documentation for the audio_output_format parameter for more details. ... “none” disables replay gain on this audio output. mixer_type <hardware ...
  21. [21]
  22. [22]
    Plugin reference — Music Player Daemon documentation
    ### Summary of Filter Plugins in MPD (Mixing, Volume, Equalizer)
  23. [23]
  24. [24]
    Music Player Daemon/Tips and tricks - ArchWiki
    Aug 16, 2025 · musnify-mpd is a simple python script that provides notification support for Music Player Daemon using libnotify. It can also display the album ...
  25. [25]
  26. [26]
    mpd.conf — Music Player Daemon 0.25~git documentation
    If Zeroconf is enabled, this is the service name to publish. This name should be unique to your local network, but name collisions will be properly dealt with.
  27. [27]
    triplem/upmpdcli: An UPnP front-end to MPD, the Music ... - GitHub
    How things work: The Control Points uses the UPnP protocols to browse the tracks on the Media Server and choses URIs to be played. It then talks UPnP to umpdcli ...Missing: DLNA | Show results with:DLNA
  28. [28]
    An UPnP Audio Media Renderer based on MPD - Les bons comptes
    upmpdcli is a UPnP Media Renderer front-end for MPD, the Music Player Daemon. It supports UPnP gapless track transitions and the OpenHome ohMedia services.
  29. [29]
    Plugin reference — Music Player Daemon 0.25~git documentation
    Uses device names as listed in the “Audio Devices” window of “Audio MIDI Setup”. ... © Copyright 2003-2025 The Music Player Daemon Project. Built with Sphinx ...
  30. [30]
    mpc 0.36 documentation - Music Player Daemon
    mpc is a command-line client for the Music Player Daemon (MPD). It connects to a MPD and controls it according to commands and arguments passed to it.
  31. [31]
    Add support for TLS · Issue #297 · MusicPlayerDaemon/MPD - GitHub
    Jun 16, 2018 · This allows anybody who can sniff on the network to use MPD. It would be great if MPD could support TLS to avoid this. Support on the client ...
  32. [32]
    Music Player Daemon - Mpd - Arch Wiki
    Music Player Daemon (MPD) is an audio player that has a server-client architecture. MPD plays audio files, organizes playlists and maintains a music database, ...
  33. [33]
    mpd - Debian Wiki
    Mar 11, 2025 · MPD (Music Player Daemon) is a player that leverages a client/server architecture, which allows the user to control it remotely using the various clients ...
  34. [34]
    MPD - Community Help Wiki - Ubuntu Documentation
    Feb 8, 2017 · MPD is a flexible, powerful, server-side application for playing music. Through plug-ins and libraries it can play a variety of sound files while being ...
  35. [35]
    NCurses Music Player Client (Plus Plus) | rybczak.net
    ncmpcpp – featureful ncurses based MPD client inspired by ncmpc. Main features: tag editor; playlist editor; easy to use search engine; media library ...Ncmpcpp -- Featureful... · Dependencies · Release Notes<|control11|><|separator|>
  36. [36]
    python-mpd2 - Music Player Daemon
    A stable, documented python 3 module. python >=3.6; logging; configureable timeouts. python-mpd2 is a fork of python-mpd which is unmaintained now.<|control11|><|separator|>
  37. [37]
    Clients for the Music Player Daemon
    Quimup - QUIMUP is a client for the music player daemon (MPD) written in C++ and QT3 with focus on mouse handling and drag and drop. Skympc - Yet another QT(5) ...
  38. [38]
    DaveDavenport/gmpc: Gnome Music Player Client *UNMAINTAINED
    See http://gmpclient.org/ and http://mpd.wikia.com Requirements: libmpd, gob2 (for git compilation), vala, libsoup2.4, glyr, libxspf (optional), gmodule, ...<|separator|>
  39. [39]
    gmpc package versions - Repology
    Versions for gmpc ; Cygwin · gmpc-debuginfo · 11.8.16 ; Cygwin · gmpc-devel · 11.8.16 ; Debian 11 · gmpc · 11.8.16 ; Debian 12 · gmpc · 11.8.16 ...
  40. [40]
    abarisain/dmix: A modern MPD Client for Android. - GitHub
    MPDroid is a MPD client for Android. It is a fork of PMix. You can browse your library, control the current song and playlist, manage your outputs, and stream ...
  41. [41]
    MPDroid | F-Droid - Free and Open Source Android App Repository
    An MPD client which supports streaming. Can fetch cover art from last.fm. You can browse your library, control the current song and playlist, manage your
  42. [42]
    Clementine Music Player
    This release features tabbed playlists, playlist search, projectM visualisations, Magnatune integration, ReplayGain volume normalisation and music transcoding.Missing: MPD | Show results with:MPD
  43. [43]
    myMPD Documentation
    myMPD Documentation. myMPD is a standalone and mobile friendly web-based MPD client with a tiny footprint and advanced features.Missing: interface | Show results with:interface
  44. [44]
    myMPD is a standalone and mobile friendly web mpd client ... - GitHub
    myMPD is a standalone and lightweight web-based MPD client. It's tuned for minimal resource usage and requires only very few dependencies.
  45. [45]
    RompЯ | A beautiful, feature-rich music player.
    RompЯ is an interface that runs in a web browser on any device and controls a music player which can be on any other device. I recommend using Mopidy as the ...How To Install RompЯ · Rompr And Mopidy · Using Multiple Players · Changelog
  46. [46]
    antiprism/mpd_oled: MPD, Volumio, RuneAudio and Moode OLED ...
    The mpd_oled program displays an information screen including a music frequency spectrum on an OLED screen connected to a Raspberry Pi (or similar) running MPD.
  47. [47]
  48. [48]
    Commercial Products running MPD - Music Player Daemon
    This is a list of commercial products known to be based on MPD. This is not a recommendation to buy those products. This is mostly raw data, and you should ...
  49. [49]
    [PDF] Poly User manual - Chord Electronics
    This Poly is able to play back music stored on a. Micro SD card via DLNA, UPnP or MPD. Wi-Fi network mode. Network mode allows Poly to connect to an available.
  50. [50]
    Music Player Daemon (MPD) - Home Assistant
    This platform works with Music Player Daemon and mopidy with Mopidy-MPD as used by Pi MusicBox . While all of these rely on the common MPD protocol, ...
  51. [51]
  52. [52]
    News Archive 2018 - Music Player Daemon
    GPL Violation in Cary Audio DMS-500 ... Update (2020/02/11) this issue has been resolved meanwhile. Cary Audio has published the modified MPD source code. Cary ...Missing: infringement | Show results with:infringement
  53. [53]
    Forum disabled - Music Player Daemon
    Those who seek support needed to register yet an account on yet another website, which made the forum hard to reach. The forum link now redirects to GitHub ...Missing: community | Show results with:community
  54. [54]
    Bye Freenode; Hello Libera.Chat - Music Player Daemon
    Last week, the MPD project has moved its IRC channel from Freenode to Libera.Chat. This seemed necessary after recent events at Freenode. Meanwhile, the ...Missing: community | Show results with:community
  55. [55]
    mpd - Homebrew Formulae
    Install command: brew install mpd. Music Player Daemon. https://www.musicpd.org/. License: GPL-2.0-or-later.
  56. [56]