So, you want to develop gutenbach, eh? Good! Gutenbach is a distributed music player built on top of CUPs. It essentially enables anybody with access to it to play music from their own computer -- all they have to do is "print" to the Gutenbach instance as they would any other document! The current Gutenbach features are: - the Gutenbach server (packaged as gutenbach-server) - a terminal queue display (packaged as gutenbach-queue) - remctl bindings (packaged as gutenbach-remctl) - client-side scripts to print to, list, and delete from queues (packaged as gutenbach-client) - a Rhythmbox plugin - iTunes plugins - a webapp interface All of these are located on GitHub: http://github.com/jhamrick/gutenbach In terms of how the repository is structured: after discussing the possibility of supporting multiple systems, we decided it would be best to merge everything platform unspecific into the master branch, and then keep separate branches for each other system; e.g. at the moment we have the debian branch, which should be the same as the master branch except that it also contains a debian/ directory. Now, this means that you should never edit platform-unspecific files in the debian directory; they should *always* be edited from the master branch. The debian branch should never be merged into the master branch; merging should *always* happen the other way around. See README.old for how Gutenbach /used/ to be installed. This can sometimes offer insight into how to fix things that are broken. Questions or comments should be directed at gutenbach AT mit DOT edu. NOTES: - If you keep getting zephyrs with the following errors: Playback completed with the following errors: bt_audio_service_open: connect() failed: Connection refused (111) bt_audio_service_open: connect() failed: Connection refused (111) bt_audio_service_open: connect() failed: Connection refused (111) This is because you have alsa configured for bluetooth, but bluetooth is not enabled. You should either enable bluetooth, or uninstall the bluez-alsa package. - The commands to print and remove jobs should be used via the scripts in gutenbach-client package. However, if you insist on using them, the correct syntax is: CUPS_SERVER=servername lp -dqueuename foo.mp3 CUPS_SERVER=servername cancel [ID|-a] queuename TODO: - include mixer and channel in debconf, or even better, move it to gutenbach-remctl and implement debconf in that package - this should really not conflict with pulse (the biggest problem at the moment is that pulse will spew a bunch of errors like "Home directory /var/spool/cups/tmp not ours." I can't figure out how to get rid of them, but they're really annoying. As long as pulse is in system mode, things seem to work otherwise.) - CUPS issues * the CUPS daemon processes do not inherit groups from the lp user (so, for example, even if we add 'lp' to 'audio', the process will not be running in group 'audio'). For the time being, I've set the CUPS daemon to always run under group 'audio', but there should really be a better solution. * when the Purge-Jobs command is sent, the jobs are removed, but the current mplayer instance continues playing. This unfortunately leads to jobs being played over each other when the CUPS server restarts - Making it easier to use across multiple platforms, regardless of debathena/normal linux/etc? - Gutenbach should not depend on Debathena -- ideally, gutenbach-server should be debathena free, and then if people want to use zephyr, etc., they can install an additional gutenbach-zephyr package or something - add client scripts for the remctl package, something maybe like `gbvol [set|get] number`. Or maybe just leave it with using remctl. - fix the web interface - Make it possible to play movies; i.e. add video support (the audio support is already there, obviously)