Volumio core system


With the Airplay and Spotify integration I’m thinking more and more about how to turn Volumio into a more Sonos-like system.
I dont have much experience with the Spotify integration since in don’t have a premium account, but have used Airplay a few times. Im sure you guys have thought of this more than once, and maybe its already on the schedule, so forgive me if this topic has been discussed.

As far as I know, MPD, Airplay (UPnP/DLNA) and Spotify dont interact with eachother. Since they have to share the ALSA the other services get stopped/paused.

My idea is to build a system (not sure how much is needed, maybe only a few scripts, perhaps a whole program package) that controls the MPD/Airplay/Spotify/Future integrations. Think of how Sonos handles its playlist, you can mix spotify/local phone/nas songs into 1 playlist.

This would allow you to play songs from a NAS-server, add a song from your phone to the playlist to play next and some spotify song randomly added without any interrupts.
The system would handle the webserver input stuff so you would still be able to controll the playback/playlist/database stuff with the nice Volumio GUI and the forward the right stuff to the right service. The system would keep his own kind of playlist, which then controls the right server for the right songs.

MPD has a nice API which would let you keep track of the playback status, and im sure there is way to get the Spotify/Airplay playback status as well.

Hope this image will give you a better idea of the concept. (Professional Paint skills, dont ya think? :wink: )
volumio core.png

MPD/spotify/Airplay wont have to remember its playlists since the system will save the playlist with the right data for each song. It could send the MPD the command to just play a file from filepath, MPD doesnt need to have its own playlist for this to work.

I would be happy to contribute to this system. At the moment im working on my own app for Volumio (mostly MPD, spotify/airplay to be implemented) to make it more of a complete system instead of multiple, different services.

Let me know what you think!

+1 for this

Agree, we are going to this directions! Join us developing it!

Would love to.

I do have programming experiences (Computer Sience student), altho I’m pretty clueless about how to start this for Raspberry.
Does it has to be a runnable C object, Daemon, Service?
I did take a look at the source (github) but would appreciate it if anyone could help me out.

Maybe you guys have already started developing this, in this case, can you update me on the progress?

Hi Meryn,

I suggest you have a look at a page I’ve written on the wiki, it’s a kind of “getting started” for developers : volumio.org/wiki/index.php?title … .27s_guide

The WebUI is currently in PHP for server-side, but we’re working on a new nodejs version. So, you’d better to know javascript, or willing to learn :wink:

PS: don’t hesitate to ask questions when you want

Good progress :slight_smile:

Im too new in NodeJS. One downpart of Javascript is that its harder with an MVC structure. Not sure if you guys use it :slight_smile:.

NodeJS has great streaming features. Altho nowadays, PHP5.5 got generators, which makes things for the pi quite nice.

I’m looking forward to the changes. I hope I can contribute a little then :slight_smile:

I’m also interested in getting involved. I don’t have a ton of time, but I do have lots of professional development experience, passion for music, and a huge desire to learn more about low level hardware & drivers. The guide above has some useful information! The gap in my mind is building an image from scratch. I’d like to be able to grab the firmware (I think Volumio uses Hexxeh/rpi-firmware), kernel, drop in the Volumio UI, MPD. etc. All from source would be great! Does any documentation exist for this process?

I could be terribly wrong here, so dont take my word for it.

In the Git, almost at the top of the page, you see “volumio/Volumio-WebUI”. Click on “volumio” here to go 1 folder up, right there you can see multiple maps, including one “RootFS(-RaspberryPI)”. If I’m not mistaken you can just copy this to your sdcard (filesystem partition ofcourse). Not sure about the kernel/boot stuff tho.

How to create an image/compile your filesystem is something I would like to know as well!
Maybe its nice to have a guide on how to compile/make an image on the Wiki?