Mar 9 Added test to prevent unmounted files (removable media) from being added to the queue, and to prevent writing of id3 tags to unmounted files. Added support for new mod_fcgid module, appears to work much better than mod_fastcgi. Finished id3 writing for m4a! Fixed a bug in the loader that misread incoming numerical genres. Fixed several small bugs in loader relating to extracting info properly from files and tags, including the "doubling" of genres (e.g. "jazzjazz"). Fixed null song bug! Added error checking to prevent songs of incorrect type from being added to a stream queue. Moved remaining filetype specific calls (id3 read and write) to Interface. All file- and binary player- specific calls and options are now held in the Interface for that file type. Added full support for m4a cd burning (m4a or wav). Fixed bug where songs with no id were being added to the queue (dont add songs with no id!). Also, when channel is stopped or paused, clearing the the queue will now remove these elements. Fixed bug in albumcover/symlink. Additional work on cleaing up loader. Fixed utf8 double-encoding in loader. Altered Loader album image logic for better results. Fixed a number of bugs in Filter, should be working now. Altered flushdb logic to reset autoincrement for DB tables back to 1. Finalized flag logic - users without appropriate permission now cannot play "prevented" songs - flagged songs that you must have group membership in to play (e.g. explicit lyrics). rebuilt jockey filtering mechanism as Filter.pm, now available on a per-channel basis (under admin?) added "TITLE" to the image icon tags so their name displays in the web interface. added upload songs (under edit menu if allow upload is on) added 'Name' and 'Random' to music root - these will eventually allow music root names to be displayed, and the inc- exclusion of roots from random play. added album image associations, both in the loader, and the edit interface. updated the git to current status. improved extensibility for song formats. NOTE that this involved renaming the various Interface formats. added support for m4a files! navbar menu now generated dynamicaly, better support for interationalization. improved messages capacity, towards better internationalization. improved installer, better support for Apache2, fastcgi, and burning, as well as more options. altered path to calliope link in install (now /usr/local/bin/calliope to help with system upgrades). Commented out "nonblocking" in Stream, seems to solve streaming problems on some systems, while hurting no one. We'll call that a bug fix! Fixed a permissions bug in BSD (now only setting the effective user of the processes). Some improvements in fastcgi/db disconnect problem. Fixed bug where changing the volume didn't propagate to other users (now updates on page refresh). Fixed minor bug that caused "not a valid channel" when starting calliope and burning turned off. added UseTransactions in conf to allow admin to turn db transactions off. minor bug fix on info page (contacturl). fixed bug in burn status, not updating in IE. July 9 - RC 15 you can now add/remove albums from a list. you can now burn CD's / export lists from a search. added "expiration" to the conf file, allowing admin to control when login cookies expire. cd burning now appears to be working! fixed bug that caused streamer to point to the web home instead of icecasthost. loader now properly complains in verbose mode when skipping duplicate files. altered command line interface - root now required for some operations. fixed minor javascript bug on associateintro page. improved how turning on/off lists or editing change the interface - more intuitive. now stripping whitespace from pages for faster transmission. fixed bug that caused calliope to hang when processing requests (ActionQueue) while channel was stopped. fixed bug where fastcgi would hold a db connection that dropped internally, preventing access. clock now adjusts when jumping back/forth in song. fixed bug in loader that caused calliope to index hidden files. fixed (i think) "Duplicate Entry" bug in loader. added transaction logic to queue managment, loader (but not editing). added command line interface for song control: calliope pause [channel] calliope unpause [channel] calliope fwd [channel] calliope rew [channel] calliope volume [channel] calliope getvolume [channel] calliope louder [channel] calliope quieter [channel] calliope title [channel] updated "calliope status" command (more verbose) fixed bug that caused "strange parameter" error in apache error logs (mostly). fixed bug that caused genres not to be excluded from random play (caused by fixing streaming bug of the same type! sigh.). switched from mknod to mkfifo in Util:fix_pipe for FreeBSD compatibility. some updates to installer, hopefully improved logging, fewer glitches. updated loader to correctly handle removeable media. missing songs on mounted removeable media are now removed from the db when not encountered during load. also, no longer loading empty songs (0 length). fixed bug where the "choose" menu didn't display artists starting with x and y. Also added '#' for numerical artists (e.g. 808 state). modified the editing / creation of artist:type relationships in the interface. fixed bugs in Loader related to $artistsfoundhash. fixed problem re: hardcoded artist types in Parse. began working on cd burning deprecated Curses from install, library. Mar 5 2006 - RC14 added support for fastcgi. added "calliope status". deprecated shell mode (command line). fixed bug that prevented deletion of last item on list. fixed javascript error on display of empty list. fixed bug that prevented trash item deletion. fixed Loader to correctly detect whether incoming text is utf-8 or not! updated Master file . adjust conf CharSet to iso-8859-1 for correct display of international characters in mozilla/IE. fixed bug where IE users could not add lists. fixed bug in DB.pm, 03.mysql. added rating of songs by user. added upgradedb to calliope's commands: calliope upgradedb [password] fixed bug that prevented display of genre/albums when genre only associated with a song. once again, trying new strategy to lower system usage while song is paused. sleeping when channel is paused works, so we try poll_delay for paused song, in hopes it wont de-sync the playing of songs (momentary interrupts under system load, like switching desktops). major overhaul to handle songartisttype and albumartisttype tuples, including editing, display, loading and writing of id3, as well as db architecture. allows for much more refinement, and handles additional id3 tags (such as tope, tcom, tpe2 and tpe3), and provides a means to back up calliope's relational data succesfully. artists now show up under first and last name (e.g. "C" brings up Cash,Johnny and "J" brings up "Johnny Cash" - artists will show up both ways). fixed bug that caused "display by artist" to not show all artists associated with an album. deprecated 'calliope clean' and Clean.pm. started major db overhaul. updated loader to handle multiple genres and multiple artists (vis-a-vis id3v2 spec). hopefully, fixed bug that caused calliope to hiccup during play after long (days) pauses by dropping can_read delay to 0 when player exists. Don't think it's an issue for stream? altered jockey to check if queue is active before re-starting a player. Pausing was causing the Streamer to restart, when we now want it not runnnig if not playing. fixes bug where stream player would restart and dangle. lowered pause in player/streamer to .0001 - calliope seemed to be getting stuck (skipping a beat) under system load. seems better. Added 'calliope rolllogs', which, not surprisingly, rolls the logs, and add that to the cron job. Jockey now only creates a Player/Streamer on demand (when music is playing), and pausing a channel now kills the player. This and the next fix below appear to resolve calliope's system usage problems. Added minor delay to all Player object to prevent calliope from using too many system resources when idle. Integrated Multi-Slash patch from Bodo. Integrated DB-rework3.patch from Bodo. Fixed loader bug where many songs from many albums in a "flat" directory were not loading properly (i.e. the "Dave McGowan" bug ;-) Modified conf so that the "default" filespec of blank is used, rather than the optional owner, which caused problems. Deprecated "-a" option from flushdb (no real use for it, and it can cause problems). Modified rc.calliope to be (i think) LSB compliant vis-a-vis init scripts. Previous problem where calliope won't start at boot on new Suse installations should be resolved. Fixed streaming of Meta Data, so song info displays when listening to streams - thanks to Rod Hughes! deprecated "synch" feature - mysql dump works just as well. added storeList to DB.pm, allows storing many rows in one query. fixed loader bug that caused track number to be wrong. Modified Jockey to use fewer queries when picking songs. Updated DB*.pm by moving most calls into DB.pm. Modified TestChannel so that it can run without any actual files (just data in the db). In other words, it simulates actual play. Fixed bug that caused a paused song status to stay "stuck" in paused, eventually causing calliope to stop playing. also fixed interface to correctly display a pause/play button when song is playing/paused. Fixed bug that prevented user from being added properly from the web interface, or by the list loader. Nov 8 - rc13 re-organized the dev folder, and added all my quirky little tools. of note is (or will be) the testdb.pl, which will eventually prove useful for rc14. Added support for TCMP id3v2 flag = iTunes compilations. Updated Master file, now entirely in utf8. Resolved several utf8 / latin1 issues in the code. Created conf flags that allow user to specify filesystem and id3 encoding as either latin or utf8. Fixed bug in listexport that exported the queues, and failed to create an owner for the trash list. Resolved loader bug where new filespec caused problems (modification of non-creatable array...). Fixed bug in loader that caused a combination of UseCorrections=1 and UseThe=0 (ie The Magnetic Fields becomes Magnetic Fields (lists under M) to have all artists with "the" in the name to show up as having both albums and combinations (ie all ablums duped as combos). All Fixed. Minor bug in actionqueue edit where url to dragdrop was hard-coded. Fixed. Minor bug where using Corrections and Renamed would cause song title to use file path, rather than tag, even if song not "renamed." Fixed. Addedd postgres support to the installer and db upgrader. Changes to the db scripts to help with installation and upgrading. See README_DB or INSTALL for details. Improvements to the installer. Major overhaul of Loader.pm. See conf file for new configuration options and details. NOTE that MP3::Tag is now required. Note also that conf has been rearranged and altered, and your old conf file is now incorrect (see the Loader section of the conf file). Added '-s' optiion to flushdb to save user song lists. Using: calliope flushdb -rs will now save lists, flush music data, reload the DB and restore the user songs lists in one fell swoop. Drag and drop editing of actionqueue now supported. Mostly fixed bug where actionqueue shows previous song when initially starting. It's a race condition, increase sleep time in QueueWeb->start if it still happens. Note that I also lowered Jockey sleep to 1 to help jockey "wake up" faster. Resolved bug that caused the actionqueue not to refresh every 20 seconds when initially started. Fixed problem where refreshing at the end of a song could cause actionqueue to show the previously playing song with no time, and hang there. Also happened occasionally when a song was killed. Similar to when starting song above, but different problem. Fixed minor bug where if user is editing a list that is no longer active, they were prevented from saving it. Fixed obscure problem with actionque and permissions relating to display of delete and bumup button for users in default groups 3 and 4. Deprecated the "Various" file - not used, not much in it. Sometimes, if jockey dies, it leaves the player around. When starting jockey, we now double-check and kill old players, if any. Fixed bug that prevented test channel from working (can't be '0'). Fixed bug that caused problems when cookies are set, and a new channel number is defined. Fixed bug where displayed "streaming" song was out of synch with actual streaming song. Adopted patch that improves inheritance in DB/DB. Fixed bug in loader where track number was NOT being captured from the ID3 tag. Duh. Fixed (mostly) Dispatch problem, whereby one could get around login by manually using 'home.cgi' with a request. Fixed bugs where song could get picked twice (problems in both Jockey and List.pm). Fixed Jockey so that filterByGenre and now filterByStream both work properly with soundcard and stream channels. Fixed bug that prevented creation of trash list. Queue/Actionquue now correctly indicate when a channel is paused, vs. not running (no jockey). show->actionqueue now refreshes the actionqueue fixed PlayOnStart to work correctly (now possible to start a channel and have it paused). Now require MP3::Tag for reading (and ultimately writing) id3 v1 / v2 tags. Aug 6 - updated git, posted RC12 Fixed bug where filter by genre + streaming wasn't working properly? Still working on this with Alex. July 23 - updated git Fixed (it appears) multi-soundcard support! Fixed bug where streams didn't filter by genre properly. Fixed bug where cookies were not set properly. Fixed bug where all users could set volume. Fixed bug where volume knob kept (visually) returning to 73 (even though volume was set properly). July 10 - updated repository Recently released HTML::Template::Pro turns out to be a much faster replacement for HTML::Template, halving response times. Actionqueue now takes .6 seconds to return, .4 of which is the HTML display call, and a perl simulation (a hack) took about the same time, so without re-writing HTML::Template::Pro, this is the best we're going to get. Hopefully, this will also fix memory problems with HTML::Template (despite the fact we weren't apparently using caching). Modified createdb_mysql to allow for a '-p' option, which will then request the password for mysql, in case you're using one. June 29 - updated repository Modified ogg123.pl to be 123.pl, a wrapper for ogg, mp3 and flac. This would appear to fix the stuck times, the multi-spawns, the mpg123 "burp", as well as facilitating the use of multiple soundcards, and turning off the player when song/channel is paused. June 21 - updated repository Fixed minor bug in rename. Integrated drag and drop editing to list editing! Added some tools in dev to help with getting music off an ipod. June 16 - updated git repository added some missing files, and moved my branch to: http://neil.verplank.org/opensource/calliope/calliope-git June 15 - updated git repository Fixed bug (1218084) where calliope would occasionally hang on start, or after playing some number of songs. Quieted debug a bit as well. June 14 - updated git repository Fixed bugs in loader that incorrectly dealt with missing songs, artists, albums. Modified Conf.pm and conf to make FileExt a simple array. Fixed small bug in Conf.pm Updated and simplified installer. Updated Master artists file. Fixed bug (1218104) that prevented filtering songs by genre in random play. Fixed bug where player skipped songs with non-lower-case extensions. Fixed bug (1218095) where actionqueue didn't sort through channels properly. June 9 - updated git repository Added fine-grained volume control, and fixed bug where song volume (in db) wasn't affect system volume. Note that this affects the DB schema!! AND your conf file. Fixed bug where user could not change interface prefs. Fixed several minor bugs in Conf.pm (showed up when conf() called from command line, e.g. during install). June 6 - updated git repository Fixed bug (1218090) in the streamer (frozen after one song). Streams now allow clock display as well. June 4 - updated git repository, uploaded rc11 Fixed various editing bugs (left over from re-write). Fixed bug where randomqueue is cleared, then it paused itself. Fixed "clear random queue" not working. Fixed bug where un-owned list wouldn't display. Fixed bug where subassociate wouldn't display artists (postgres-specific). Fixed bug where subassociate individual letters linked only to songs, not also albums. Fixed bug where pausing a channel didn't kill playing song. Fixed bug in rename - now working. May 31 - posted present branch as git repository. http://neil.verplank.org/opensource/calliope/git/ Integrated latest git branch from jonathon with my loader rewrite. Fixed "hanging calliope stop" bug. Fixed improper insertion of request into queue. Fixed bug in loader that dropped song/album/artist info when using ID3 tags. Resolved "memory" bug using Parser related to UTF8 encoding (internally, everything is utf8, but filenames and data are all iso) No longer display "blank" when info is missing (too annoying!). May 23 - version 1.0alpha_rc 10 Major database overhaul. Significantly trimmed number of queries needed for a give request, or the actionqueue. Morphed all .sql files into schema.mysql - drop and reload database with a simple: mysql -u root < schema.mysql calliope load Modifed schema to bring it in line with sql standards, in preperation for adation of postgresql. Cleaned up and modified several tables, eliminated unnecssary fields, merged channels with lists, changed various field names, notably user -> uzer. Moved Port.pm to Web, so all modules drawing on HTML.pm are in ~/Web. Adopted new config+hash arrangement from Bodo. Integrated new player backend from Jonathon. Fixed the edit/reload bug. UTF8 is now used across the board internally. Incoming tag data is assumed latin, converted to UTF-8 encoding in Loader (fixes "weird character" problems, enhances db compatibility). May 12 - version 1.0alpha_rc9 Incorporated bug fixes from various bug reports and patches posted on sourceforge to integrate all developer work. May 10 - version 1.0alpha_rc8 NOTE: if you have previously installed calliope you will need to drop and recreate your database. Don't forget to reload the default data! You will also need to edit your httpd.conf file (if you're using modperl) to use Web::ModPerl (vs. ModPerl). And you will need to use the new conf file supplied, vs. simply copying your old one. You will also need several new perl modules (easiest is ./install -m from the installer directory). You also need to upgrade your perl to version 5.8.x or greater, due to class inheritance requirements (Exporter.pm). Major code revisions, including completely new inter -process communincation, courtesy of David Greaves. Made Conf and HTML singletons, and the DB and Log global classes, eliminating all that passing around. Completely re-wrote List And Queue modules, factoring them into several different objects with inheritance. Fixed bug that prevented turning lists off. Fixed a bug in httpd.conf that caused the cgi scripts to display as text in some installations. I think. Fixed several bugs in the editing interface screens. Fixed installer to handle required vs. optional calliope modules. Notably, ModPerl.pm may fail to load, causing the installer to quit, but ModPerl.pm is optional. This is now handled more gracefully. Note that due to IPC changes, new perl modules are required (try ./install -m). Updated installation notes to be more consistent with current state of things (thanks for suggestions stefan!) Updated conf to make ogg files optional, not automatic. Note that Player.pm may require both? Protect=none, or no Protect variable forces user to be admin, giving any user complete access (instead of limiting them to only be a guest). Fixed bug where after running test channel, music wouldn't play. Fixed clock display to show correct place in song. "recently played songs" now displays history by channel. Fixed a security whole where by backticks in filenames executed shell commands. Thanks to Bodo Eggert for this one! Fixed a problem with memory consumption on big queries. Added patches from Bodo, including secure open, closing STDIN on daemon creation (fixes hang on starting calliope via ssh), follow_skip. Apr 3, 02005 Released version 1.0alpha_rc7 Finished reviewing templates, all templates now appear to be 100% HTML 4.0 Transitional compliant. Huge interface performance gains. Fixed bug with listid that prevented the cookie from retaining it's value. In theory, when a list is "on" (in the menu bar), every occurence of a song should show a '+' or '-', allowing it to be added/removed from the list. Music play is now fully threaded - both streaming and soundcard play songs in a separate thread, allowing the jockey to pick songs and whatnot in it's own thread prior to waiting for the song to finish. Woof, that was a head-banger, let me tell you. Still some potential issues with db handles and forking, but constant re- connecting keeps things working for now. Mar 22 02005 Released version 1.0alpha_rc6 Added 'pick N' option to random play. Available under the admin menu to those with permission to modify the queue, you can choose to pick 1 to 5 songs by the same artist (thus, two-fer tuesdays, three-fer thursdays, etc). Modified Jockey to fork player and return, so that we can pick random songs *while* a song is playing, instead of in between songs. more responsive this way. Major problems in templates (due to poor HTML) resolved, HTML in templates now largely validated, big performance gains, elimnation of much browser weirdness Mar 18 02005 Released version 1.0alpha_rc5 Calliope now correctly supports streaming of ogg as well as mp3 files! Hurray! Significantly updated the INSTALL file to be more current. Some bug fixes in Jockey.pm smartRandom. Mar 17 02005 Released version 1.0alpha_rc4 Updated Player.pm and Loader.pm to fix some bugs, support ogg loading and playing. Some additional security improvments in playcontrol.pl Added support for multiple sound cards. Calliope multi-channel support now works correctly, except for the streaming of Ogg files (playing ogg files on the soundcard works fine). Listener utilities also not functioning. added -m option to installer, allows for testing and loading of perl libraries only. Mar 14 02005 Released version 1.0alpha_rc3 Added support for multi-channel / icecast streaming. This means you can use n icecast channels in addition to your soundcard. Multiple soundcards currently untested. The "listeners" functionality (showing all present icecast listeners) is not currently working. Note that this required a new DB definition (notably channels), so you'll need to reinstall. Also note there were changes and additions to the CONF file, so don't just copy your old one. Also, I *believe* this will represent the final schema changes, and that will allow us to move from alpha to beta, but I'm still reviewing current and future features. Additional changes to the install file and Makefile to improve security. Calliope now runs as nobody, the var directory is owned by the same, and only the commandline player (e.g. mpg or ogg) need run as root (for soundcard access). Which is definitely a security improvement. More development docs added to the about menu. New Clock script and images. Mar 7 02005 Released version 1.0alpha_rc2 Bug fixes in the installer. Mar 6 02005 Released version 1.0alpha_rc1 Modified Conf.pm to have two new features, ->set (set variables on the fly) and ->write (output current state to file). Cleaned up files, permissions Created and loosely tested new installer Feb 22 02005 Released version 1.0alpha