Share

mp3dj

File Release Notes and Changelog

Release Name: mp3dj-3.0

Notes:
Version 3.0 is a rewrite using JavaServer Faces.  A Web Archive
file (mp3dj-3.0.war) is included in the distribution. The
mp3dj web application can be used to setup ices & icecast and
create/refresh the database.   The file selection list and
playlist elements of the main page were combined; a single
table represents both the active playlist.m3u and the files
database table. Mp3dj is more extensible and it's GUI simpler
and a notch more intuitive as a result of these changes.

See the project page for installation information:
http://mp3dj.sourceforge.net/



Changes: * The mp3dj GUI was rewritten utilizing JavaServer Faces. In the previous release, servlets were generating html. Now all html lives in JSPs and backing beans control access to the database and playlist through delegates in the model of a model-view-controller organization. * JavaServer Faces makes internationalization support simple, and it's here in the first version. All labels in JSPs and messages in Java code are centralized in pair of resource files, opening the door for languages other than English. See resources/labels.properties and resources/messages.properties. * Added admin page for editing the configuration via the web interface. The database can also be created/refreshed from the page, which features a custom DHTML progressbar component. This support means you can simply deploy the Web Archive file (ex. mp3dj-3.0.war) and visit the admin page to setup. The interface deals gracefully with a broken configuration and provides instructions for creating a database. Validators check new property values when they're entered, providing immediate "red" messages in a column that collapses when all properties are valid. * All properties live in application context, so they persist across sessions. Default property values are housed in faces-config.xml, which can be edited before building the source distribution. Alternatively you can extract the .war, edit, and recreate the .war using the jar command to your own defaults permanent across deploys. * The refresh operation builds a set of _incoming tables, which are not engaged until the operation finalizes. As a result, while the operation is in progresss, you can continue using the existing database tables. When the [refresh database] button is pressed, it changes to [cancel refresh], so the operation can be stopped. When the operation completes, the progressbar returns to 0%, and the statistics message at the top of the admin page will contain a new date value. * The home page was simplified. A single dataTable represents both the playlist and the database. Rather than adding to the playlist by clicking on a separate files list - this version uses a track menu for all operations. Files are inserted or appended to the playlist by selecting a track number. The same menu is used for removing or repositioning a file already selected for play. The table features a paginator at the top so buttons are stationary. A configuration property (mp3dj.gui.rows) controls the size of the data table. * Controls were consolidated and placed in two rows below a message at the top of the home page. The first row includes the search text field for initiating a query, and a new folders menu which initiates a database query for all files in the assoicated folder. All playlist controls appear in the second row. The start and stop buttons were removed. Now we're always streaming. The elements dealing with an existing playlist (save, restore, and delete) operate on a single menu. * A [show playlist] button was introduced to display the files selected for play in ascending track number order. While viewing the playlist, the button becomes [show filelist]. This takes you back to your previous search results context. The playlist and filelist contexts are preserved, so you remain on page you navigated to previously in either. * A playing track number menu indicates whats playing now. Selecting a new track with the menu skips too the associated track. The track that's playing and the playing menu appear in red. Other files selected for play appear in green. * A message above the data table to the right of the paginator is updated on each request to indicate what was done last, and along with the paginator indicate the size of the result set. A search generates a message like: 14 found for 'merson Lake', [show playlist] like: 109 in playlist, and selecting from the folder menu might say: 66 in folder. * Added cross-fade support. This requires reencoding with liblame, which was added to Components and is included in the updated install-icecast example script which can be used to install icecast, ices, and libshout. Setting ices.crossfade.seconds to zero disables reencoding. * Simplified installation by inserting a recognizable variable (ICES_DIRECTORY) into ices.py and having PlaylistDelegate set it with the ices.playlist.directory value. The ices directory can be non-existent initially now too, because the directory, script, playlist.pos, and inital playlist.m3u are created when they don't exist. The source ices.py file lives in <base>/src/com/mp3dj/resources/ices.py. * Creating the ices base directory dynamically in validating the admin properties form, and also in PlaylistDelegate to deal with the case were broken default values might be set in faces-config.xml. When the ices.base.directory is changed, ices.py is created in the new directory by replacing instances of ICES_BASE_DIRECTORY while copying resources/ices.py. The playlist.m3u and playlist.pos files are copied from the old base directory. As a result, your streaming the same track after the change. * Both Icecast and Ices are invoked with arguments corresponding to the property sets on the admin page. The configuration file for each is included so you can customize further by engaging your own version of a config file. So, for example, if you wanted a bitrate different from the default of 128kbs - there's no property for that - so you edit the <Bitrate> target you'll find in ices.conf. Pressing the [submit] button or <Enter> kills the ices and icecast deamons and restarts them using the new set of arguments.