Home Music Player with a Raspberry Pi
September 05, 2025Long ago, my houshold had a home audio system that consisted of multiple components hooked together and then plugged into some speakers. Our system consisted of a Marantz receiver and audio router, a THX-certified 5-channel amplifier, a couple of 4-foot-tall speakers, and a CD player. We also hooked our tiny little 13" TV into this so that even though our screen was small, the sound was magnificent.
I appreciate really good audio, but she was the one who really felt the benefits of it. As a musician, she could hear all of the subtleties and nuances. She was proud of her system being able to resolve the lowest of the low pitches from Also sprach Zarathustra. During the divorce, that system went with the person who could appreciate it.
Nowadays, we don’t see these systems too much. Our music collections have grown, music streaming has become a big deal, and it became really impractical to be able to manage all of that and get it routed to the Stereo System. I remember when I would move my laptop to the living room, set it precariously atop the speaker, run an audio wire to the receiver, and then use both hands to navigate an audio collection. CD players, tape decks, and turntables disappeared.
As these legacy mechanisms for managing our became impractical and went away, we didn’t get satisfying replacements for our modern systems. Now, if you want a stereo setup that is dedicated to just music, you generally have to go with some proprietary system made my Sonos or Apple.
Unless you lean in to Open Source.
Today, all of my music is sitting on a Raspberry Pi 4, plugged into speaker system, and running a piece of software called the Music Player Daemon. Let’s talk about how all of this works.
The Music Player
A Raspberry Pi isn’t necessary. Any Linux-running machine is possible. If you want, you could set up an old laptop there and possibly configure a graphic visualizer to go along with the music. The emphasis here is on No User Interface.
Here’s the setup:
- Raspberry Pi 4
- 256GB USB Sata disk
- Bose desktop speakers

MPD is the heart of this. The Music Player Daemon plays music, generally from files on the local disk, to the Raspberry Pi’s sound system. You control it through the network. Some things you can do with it:
- Browse your entire music collection, including album art
- Create and edit playlists
- Send completely separate playlists to multiple speakers throughout the house
Wait a second, no UI?
MPD does not provide a user interface. It only provides a network connection. So you will need the second part of this picture: The Client.
The Client is any application which can connect to MPD via the network. MPD follows a very well-documented protocol, which has lead to there being dozens of clients, matching many different aesthetics and some distinctly different use cases. The Client is a remote control, not a playback device, so everything you are doing is controlling the MPD server.
As I’m walking around the house, I like to use the client M.A.L.P. on Android. It’s available on the Android app store, is free, and has absolutely no advertising. It looks just like any other music application on your phone. Once connected to the server, it shows the entire music collection that the server has, what is currently playing, and the current queue. I can select different music, replace the queue entirely, or jump to a random area of the song.

- September, 07, 2025
My second choice is a terminal-based application called rmpc. Despite being in the terminal, this is effectively a GUI which is very keyboard accessible. I like this because it is very comfortable for me while I’m sitting at my desk.

Setting up the server
MPD is pretty easy to set up, but it will vary a little bit based on your system. There are very few settings, but there is one which can cause trouble. Let’s talk two different scenarios.
Let’s say you want a setup like what I have above. This is a standard “headless” setup, meaing that there is no monitor or user interface directly on the system. In this setup, there is typically nobody logged in. This has some impact on the system because Pipewire won’t be running.
In case you don’t know, Pipewire is software that takes control of the sound system on Linux and then allows multiple applications to play back music at the same time. Without Pipewire, only one application at a time can access your sound system. The trick is that Pipewire is very difficult to start outside of a GUI environment.
Since you don’t have Pipewire, you should configure MPD to use Alsa to communicate directly to the hardware on the Raspberry Pi.
audio_output {
type "alsa"
name "Sound card"
device "hw:0,0"
}
mixer_type "software"
The device for my Raspbery Pi is hw:0,0
. I don’t know what this means, but I do imagine that it will be the same for all other Raspberry Pi 4s.
This will be different for a multi-user system like your desktop machine. If you are installing in that scenario, you will likely not need to do any configuration at all.
For your last step, make sure you open your firewall. MPD typically listens to TCP port 6600 on all interfaces. If you want to control your media remotely, be sure to add allow incoming TCP connections from that. However be aware of the security implications of this. It is best to not allow remote connections to a machine, such as a laptop, that you will be taking out of the house.
And now, you are ready to go. Select your favorite MPD client, connect to the server, and start playing some music.
Have fun!