pimusicbox
An image (SD-card) to turn the Raspberry Pi into an easy to use MusicBox with Spotify playback and AirTunes streaming
Top Related Projects
Multitrack Web Audio editor and player with canvas waveform preview. Set cues, fades and shift multiple tracks in time. Record audio tracks or provide audio annotations. Export your mix to AudioBuffer or WAV! Add effects from Tone.js. Project inspired by Audacity.
Discover, explore and manage your music library across multiple sources with this beautiful web-based interface. Iris is a Mopidy frontend extension.
moOde sources and configs
Volumio 2 - Audiophile Music Player
Quick Overview
PiMusicBox is a custom Linux distribution for the Raspberry Pi that turns it into a standalone music player. It supports various streaming services, local music playback, and can be controlled via web interface or mobile apps. PiMusicBox is designed to be easy to set up and use, making it an ideal solution for creating a DIY music system.
Pros
- Easy to install and configure, with a user-friendly web interface
- Supports multiple music sources, including Spotify, SoundCloud, and local files
- Can be controlled remotely via web browsers or mobile apps
- Integrates well with existing audio equipment and home automation systems
Cons
- Limited to Raspberry Pi hardware, which may not provide the best audio quality for audiophiles
- Requires some technical knowledge for advanced configurations and troubleshooting
- May have compatibility issues with certain audio formats or streaming services
- Development and updates can be slow, as it's a community-driven project
Getting Started
- Download the latest PiMusicBox image from the official website.
- Write the image to a microSD card using a tool like Etcher or dd.
- Insert the microSD card into your Raspberry Pi and power it on.
- Connect to the Pi's Wi-Fi network (named "MusicBox") using the default password "musicbox".
- Open a web browser and navigate to http://musicbox.local or http://192.168.1.1 to access the web interface.
- Follow the on-screen instructions to configure your music sources and network settings.
- Enjoy your new PiMusicBox music player!
Note: For detailed instructions and troubleshooting, refer to the official documentation on the project's GitHub repository.
Competitor Comparisons
Multitrack Web Audio editor and player with canvas waveform preview. Set cues, fades and shift multiple tracks in time. Record audio tracks or provide audio annotations. Export your mix to AudioBuffer or WAV! Add effects from Tone.js. Project inspired by Audacity.
Pros of waveform-playlist
- Focused on audio waveform visualization and playlist management
- Web-based interface for easy integration into web applications
- Supports multi-track editing and mixing
Cons of waveform-playlist
- Limited to audio playback and editing functionality
- Requires more setup and integration for a complete music system
- Less suitable for standalone music player applications
Code Comparison
waveform-playlist:
var playlist = WaveformPlaylist.init({
samplesPerPixel: 3000,
waveHeight: 100,
container: document.getElementById("playlist"),
timescale: true,
state: 'cursor',
colors: {
waveOutlineColor: '#E0EFF1'
},
controls: {
show: true,
width: 200
},
zoomLevels: [500, 1000, 3000, 5000]
});
pimusicbox:
class MusicBox(object):
def __init__(self):
self.spotify = None
self.network = None
self.lcd = None
self.lcd_type = None
self.hostname = None
self.rootdir = '/opt/musicbox'
self.data = {}
Summary
waveform-playlist is a specialized tool for web-based audio visualization and editing, while pimusicbox is a more comprehensive music player system designed for Raspberry Pi. waveform-playlist offers advanced waveform manipulation but lacks the full-featured music playback capabilities of pimusicbox. The choice between them depends on the specific requirements of the project, with waveform-playlist being more suitable for web-based audio editing applications and pimusicbox for standalone music player systems.
Discover, explore and manage your music library across multiple sources with this beautiful web-based interface. Iris is a Mopidy frontend extension.
Pros of Iris
- More actively maintained with frequent updates
- Offers a modern, responsive web interface
- Supports multiple music sources beyond just Spotify
Cons of Iris
- Requires more setup and configuration
- May have higher system requirements
- Less focused on Raspberry Pi specific optimizations
Code Comparison
Iris (JavaScript):
export default function getTrackIcon(track){
if (!track) return null
if (track.icon) return track.icon
if (track.images && track.images.length > 0) return track.images[0].url
if (track.__typename == 'Track') return getAlbumIcon(track.album)
return null
}
PiMusicBox (Python):
def update_mpd():
try:
client = mpd.MPDClient()
client.connect("localhost", 6600)
client.update()
client.close()
client.disconnect()
except:
return False
return True
The code snippets showcase different languages and approaches. Iris uses modern JavaScript with ES6 features, while PiMusicBox utilizes Python for its backend operations. Iris focuses on UI-related functions, whereas PiMusicBox deals with system-level interactions like MPD client operations.
moOde sources and configs
Pros of moode
- More active development with frequent updates and bug fixes
- Broader audio format support, including DSD and MQA
- Enhanced web interface with responsive design for mobile devices
Cons of moode
- Steeper learning curve for initial setup and configuration
- Requires more powerful hardware, potentially increasing overall cost
- Less integration with popular streaming services out-of-the-box
Code Comparison
moode
def play_queue(self, index=0):
if len(self.queue) > 0:
self.play(self.queue[index])
self.current_index = index
pimusicbox
def play_tracks(self, tracks):
for track in tracks:
self.core.tracklist.add(uris=[track.uri])
self.core.playback.play()
The code snippets show different approaches to queue management and playback. moode uses a custom queue implementation, while pimusicbox relies on Mopidy's core functionality for track management and playback control.
Both projects aim to create audio playback systems for Raspberry Pi, but moode offers more advanced features and customization options at the cost of complexity. pimusicbox provides a simpler, more streamlined experience with better integration for popular streaming services, making it more suitable for users seeking an easy-to-use solution.
Volumio 2 - Audiophile Music Player
Pros of Volumio2
- More active development with frequent updates and improvements
- Larger community support and ecosystem of plugins
- Modern web-based interface with responsive design for mobile devices
Cons of Volumio2
- Higher system requirements, may not perform as well on older hardware
- Steeper learning curve for advanced configuration and customization
- Some users report occasional stability issues with certain plugins
Code Comparison
PiMusicBox (Python):
def play_uri(self, uri):
self.core.tracklist.clear()
self.core.tracklist.add(uris=[uri])
self.core.playback.play()
Volumio2 (JavaScript):
playUri(uri) {
return this.commandRouter.volumioPlay({
uri: uri,
service: 'mpd'
});
}
Both projects use different programming languages and architectures. PiMusicBox is primarily Python-based and uses Mopidy as its core, while Volumio2 is built with Node.js and has a modular plugin system. The code snippets show basic play functionality, highlighting the different approaches and APIs used by each project.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
This project is no longer maintained.
There will be no more releases and probably no more support from myself. The Pi 4 and Zero W 2 do not work with the last release and I don't know of any workarounds.
Potential alternative software (in no particular order):
HiFiBerryOS <https://www.hifiberry.com/hifiberryos>
_ (Free, Open-Source)Volumio <https://volumio.com>
_ (Free?)Roon <https://roonlabs.com/>
_ (Non-free?)
Have a suggestion/recommendation? Open a PR.
Pi MusicBox
Pi MusicBox is the Swiss Army Knife of streaming music on the Raspberry Pi. With Pi MusicBox, you can create a cheap (Sonos-like) standalone streaming music player for Spotify and other online music services.
Maintainer Wanted
This project is outdated and requires more work than I am currently prepared to invest. If you are interested in becoming the maintainer then please get in touch.
Features
- Headless audio player based on
Mopidy <https://www.mopidy.com/>
_. Just connect your speakers or headphones - no need for a monitor. - Quick and easy setup with no Linux knowledge required.
- Stream music from Spotify, SoundCloud, Google Music and YouTube.
- Listen to podcasts (with iTunes and Podder directories) as well as online radio (TuneIn, Dirble and Soma FM).
- Play MP3/OGG/FLAC/AAC music from your SD card, USB drives and network shares.
- Remote controllable with a choice of browser-interfaces or with an MPD-client
(e.g.
MPDroid <https://play.google.com/store/apps/details?id=com.namelessdev.mpdroid>
_ for Android). - AirTunes/AirPlay and DLNA streaming from your smartphone, tablet or computer.
- Support for all kinds of USB, HifiBerry and IQ Audio soundcards.
- Wi-Fi support (WPA, Raspbian supported Wi-Fi adapters only)
- Last.fm scrobbling.
- Spotify Connect support.
Please note that Pi MusicBox does NOT currently support the Raspberry Pi 4.
Installation
- Download the
latest release <https://github.com/pimusicbox/pimusicbox/releases>
_. - Write the image to your SD card. See
here <https://www.raspberrypi.org/documentation/installation/installing-images/README.md>
_ for details. - Customise the /boot/config/settings.ini file.
- Boot your Raspberry Pi and wait for PiMusicbox to start.
- Finish configuring the system using the web settings.
Creating an image
If you want to build an image from source, note that the current v0.7 image is an incremental update of v0.6 and can be generated as follows::
# 1. Install prerequisite packages (probably not an exhaustive list, sorry....)
sudo apt-get install git coreutils e2fsprogs zerofree util-linux qemu-user-static latexmk python-sphinx
# 2. Download and unzip very latest project source files (use master.zip for current release)
wget https://github.com/pimusicbox/pimusicbox/archive/develop.zip
unzip develop.zip && mv pimusicbox-develop src
# 3. Download and unzip base v0.6 image
wget https://github.com/pimusicbox/pimusicbox/releases/download/v0.6.0/pimusicbox-0.6.0.zip
unzip pimusicbox-0.6.0.zip && mv musicbox0.6.img musicbox.img
# 4. Enlarge image so there is free space to work in
./src/makeimage.sh musicbox.img bigger
# 5. Run update script within base image (requires sudo).
./src/chroot.sh musicbox.img create_musicbox0.7.sh
# 6. Go have a cup of tea/coffee while you wait...
# 7. Shrink the image and other finishing touches
./src/makeimage.sh musicbox.img finalise
Project resources
Website <https://pimusicbox.github.io/>
_Discussion forum <https://discourse.mopidy.com/c/pi-musicbox>
_Source code <https://github.com/pimusicbox/pimusicbox>
_Changelog <https://github.com/pimusicbox/pimusicbox/blob/develop/docs/changes.rst>
_Issue tracker <https://github.com/pimusicbox/pimusicbox/issues>
_- Twitter:
@PiMusicBox <https://twitter.com/pimusicbox>
_ - Facebook:
raspberrypimusicbox <https://www.facebook.com/raspberrypimusicbox>
_
License
Copyright 2013-2020 Wouter van Wijk and contributors.
Licensed under the Apache License, Version 2.0. See the file LICENSE for the full license text.
Top Related Projects
Multitrack Web Audio editor and player with canvas waveform preview. Set cues, fades and shift multiple tracks in time. Record audio tracks or provide audio annotations. Export your mix to AudioBuffer or WAV! Add effects from Tone.js. Project inspired by Audacity.
Discover, explore and manage your music library across multiple sources with this beautiful web-based interface. Iris is a Mopidy frontend extension.
moOde sources and configs
Volumio 2 - Audiophile Music Player
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot