Volumio is an headless audiophile music player, designed to play music with the highest possible fidelity. Volumio runs on most embedded devices (Raspberry Pi, UDOO, Odroid, Cubieboard, Beaglebone...) and on any ordinary PC (x86).
Volumio is obtained with 3 main components:
LATEST
PREVIOUS VERSIONS
Logins
-
user : volumio
-
Password : volumio
Root login has been disabled by default, however user volumio can become root.
Useful for fast developing, no need for a Raspberry Pi (also much faster)
VMWARE Image is suggested, as Network configuration is tricky with Virtual Box
System Images built with Volumio Builder
IMPORTANT NOTE: Volumio is designed to be an highly integrated system. This means that the WebUi is optimized to work along with the custom made Volumio system, and therefore it needs to run in a very tightly controlled environment. IT WON'T WORK on standard Raspbian or other non-volumio OSes. If you want to know what kind of customizations we're using, take a look at the Volumio Builder
Volumio works with 5.5.0 version of NodeJS. Reports of working\not working node version are appreciated!
Clone the repo in the directory of your choice (default: /volumio)
git clone https://github.com/volumio/Volumio2.git volumio
cd volumio
Make sure /volumio folder is owned volumio user
sudo chown -R volumio:volumio /volumio
And that /data folder exists and is owned by volumio user
sudo mkdir /data
sudo chown -R volumio:volumio /data
All other dependecies are in the package JSON, from the working directory just run (as user volumio)
npm install
You can run all the servers in one single step just running with nodejs
node index.js
Finally, point your browser to http://(ip address):3000 to access the UI.
A DEV Console is available at http://(ip address):3000/dev
To make development more comfortable, a samba server is installed. This way the /volumio folder is accessible (and editable) via Network. Just mount it on your dev workstation and it will be available as local filesystem. Testing on PI is strongly suggested.
Please take a look at the
To maximize efficiency and reduce code regression we're using Git Workflow. For example, to create a new feature you'll:
- Create a new branch, named after the feature
- Do your things on the branch
- Test if everything is fine and we don't have regressions
- Submit a Pull Request for branch dev
All new improvements and developments are meant to be done on the dev branch, once it's declared stable it will be merged to master and deployed to happy Volumio users.
-
Templating System
The idea is to allow the installation of different templates and skins. To allow that a template system needs to be created: as general guidelines we'll provide a set of Java functions to hook with the WebSockets connection. The different templates then will be a folder containing just css js and html.
-
Plugin System
Every service (input, output, visualization etc) will be treated as a standalone entity. This will allow to add external plugins in the future. The plugins will be composed of a folder, with all the methods, and a "manifest file" which is an executable that sends via nodes js its name, its available methods and other informations. At system startup every manifest in the manifest folder is executed, so the system receives with WS all the available plugins and their capabilities and methods. Then the core knows what is availbable and how to call them.
-
Music Database System
Music stored on USB Drives, Device memory or NAS will be handled by MPD, and therefore they'll be stored in its DB. Other services which requires a DB can have their levelDB database in place. For online services, that are meant to be browsed "live" this doesn't apply.
-
Custom Debian Based Operating System
-
Minimal Jessie Based BSP
-
SystemD migration
-
Remote Scripted Build system with Recipes
-
X86 Support
-
Volumio APT repo
-
Custom Compiled Core Packages
-
MPD
-
SPOP
-
Upmpdcli
-
Shairport Sync
-
NodeJS
-
Volumio Core
-
Command Router
-
WebUI Endpoints
-
Mixer Controls
-
Volume Controls
-
Communication Interfaces
-
Socket.io Controller
-
API Controller
-
MPD Emulation Interface
-
Audio services Controllers
-
MPD Service and Library
-
SPOP Service and Library
-
Shairport Service and Library
-
UPNP Service and Library
-
(groove?) Service and Library
-
System manager worker
-
Networking
-
CIFS\SAMBA
-
I2S Driver
-
Hardware Layer
-
USB Drives
-
Volumio Service Discovery
-
Volumio 2 WebUI (Playback)
-
Boostrap Based Structure
-
Playback Handling
-
Library retrieval
-
Library Sorting
-
Airplay Hooks
-
Volumio 2 WebUI (Configuration)
-
Playback Option Configuration
-
Network Option Configuration
-
Plug-in System Configuration
-
System Configuration
- Forum Threads for internal discussion, remember to subscribe topics.
- Document your work where possible on the Wiki.
- This is intended to run on Low Power Devices (r-pi). Let's keep code efficient and lightweight.
- To allow code mantainability, always comment your code properly and update DOCs if needed.
- Adhere to MVC Best Practices to maximize project quality.
- Have fun and enjoy what you're doing!