profile for Perette at Stack Overflow, Q&A for professional and enthusiast programmers

Devious Fish


pianod2 is a free, multi-source, network-controlled music player daemon for use as central music server or scriptable backend. It is published under the MIT license.

  • Multiple sources. Add your personal music collection and multiple Pandora accounts. When listening, choose a single source or use the media manager to mix all the sources.
  • Remote-control. Start, stop, choose or rate music from your web browser or phone.
  • Shuffle mode. Requests get priority, but when the queue is empty pianod can pick by songs, playlist, album or artist.
  • Multi-user. Share control with your family, roommates or visitors—but pianod tracks ownership, allowing only the right person to revise each collection.
  • Automatic playlist selection. Each person rates playlists, and pianod adjusts the mix based on who is listening.
  • Scriptable. Use the included piano script to control playback, runmix to set up a sequence of timed playlists, or write your own and interface via the socket interface.
  • Multi-protocol. Websockets or plain-old TCP, JSON or command-line/SMTP-like, plain-text or TLS secured.
  • Flexible. Build with your choice of 3 media libraries, 3¾ output libraries, 5 TLS packages and 3 sources.
  • Media substitutions. Save bandwidth by replacing streaming media with matching local media.



2021–05–27 r380 in development downloads fixes a compile error due to a missing #include, a correction to WebSockets ‘pong’ packet encoding, and some TypeScript fixes. Thanks to Martin Stumpf for these.

2021–05–09 r376 has been promoted to stable release, featuring a reworked Pandora integration to replace the REST protocol used in r310-r371 which broke as a result of protocol changes, and rolls in a correction for handling a possible “0” error return value from Pandora and refactored container types for music items (artists, albums, songs, playlists).

As COVID is wrapping up and warm weather approaching, pianod2 will be on hold (unless there’s a critical fix or something). This year’s code has been challenging but rewarding—see you in the fall, or maybe out on the road.

The client now uses ECMAScript 6. Older browsers that don’t support EC6 can use the edition hosted here, or install the last EC5 client in a subdirectory of pianod/html.

LinuxMint/Unbuntu/PulseAudio: Following a LinuxMint update to Pulse Audio in late 2020/early 2021, pianod deadlocks with libao output when crossfading, locked on a mutex down in a PulseAudio library. Disabling crossfading avoids this, or try avdevice. I expect Ubuntu, maybe Debian and other related distros are affected too.

Read details and more history…

If you encounter problems, please report them to the developer or the mailing list.


Three clients are included with pianod2:

  • Standard client. Made for using pianod.
  • Console. Made for testing, debugging and nerds, the console provides command line access. Commands entered in one of the inputs (or selected from a list) execute, displaying results in a table.
  • Viewer. The console displays album art and information in large, friendly letters. Suitable when you just want people to know what’s playing.

There’s also an “aftermarket” Android client available. I think it’s for the original edition pianod, but it sort of works on v2.

Project needs

  • Translators: Included are English, German, French and Spanish. Translations were done with software; there may be errors or awkward phrasing. If you want to translate for another language, or want to improve existing translations, take a look at the .lang files in the Development downloads and mail new or updated files to peretteのdeviousfish dot com. SVN access may also be arranged by request.

Similar & Related Projects

  • proximmon provides presence monitoring. Configure it to tell pianod who is coming and going, and automatic playlist selection can adjust the mix automagically.
  • pianod, the original version.
  • Pandora’s official clients are available from Pandora.
  • pianobar is a terminal-mode Pandora client (and the origin of libpiano—thanks PromyLop). It is interactive, with keystroke commands instead of full statements, but has event support which runs a shell script or whatnot to do scrobbling or other things.
  • Tomahawk is another multi-source, social music player but as an application rather than a daemon.
  • Elpis is a Windows Pandora client
  • Pithos is a Linux Pandora client
  • mserv is a similar-style jukebox for local media (and I’ve stolen back my enhanced search algorithm that those guysnever integrated into their code base.)
  • mpd, the music player daemon

Thanks to all those, too numerous to list, who created and maintain the included and non-included packages. Thanks also to those responsible for the tools and artwork on which pianod depends: Dimitri van Heesch for Doxygen, Microsoft for TypeScript, everyone behind C++ and the STL, Liz Aragon for the piano and football/soccer ball, Fletcher Penny for multimarkdown, CodeLite for making a decent Linux IDE, Subversion for providing good source control, and Linux Mint for making a pleasurable distro to an escaped Mac user.