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.



2022–03–26 r392 has been promoted to stable release. It fixes a compile issue on macOS 10.15, corrects help and statistics formatting, and cleans up source parameters constructors, removes support for ffmpeg < 3.1 (6ish years old), and removes adaptations for old file formats. If restoring sources is a problem, edit pianod’s passwd file and check saved source integer parameters are indeed integers and not strings.

2022–03–09 r389 fixes an issue on some BSD & derived systems, including recent MacOS, which caused pianod to exit spuriously. Linux is unaffected.

2021–12–23 fixed for crashes occurring with unpaid Pandora accounts. Thanks to Samui Shiiba for reporting this and providing excellent details.

2021–05–09 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 ffmpeg’s avdevice library for output instead. 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.