Jukebox for Source
is a fully featured music streaming plug-in for SourceMod. It is designed to offer a complete solution for server admins who want to enrich their server's character and overall experience and places heavy value on social play. Jukebox uniquely offers a searchable and dynamic interface similar to those of many other music players, such as iTunes and WinAmp.
Jukebox is compatible with all Source engine mods on both Linux and Windows. For admins, Jukebox also includes a web-based suite of tools for uploading and managing your music library.
- Intuitive, dynamically generated menu-based interface.
- Browse tracks by genre, artist, album or title.
- Look up and select from the newest or most popular tracks.
- Command-line interface, including full search capability, for more familiar users.
- Customizable playback behavior available to each client, with automatically saved and restored settings.
- Easily listen to an entire genre, album or any search result using convenient playlist generation and playback.
- Queue up additional tracks at any time.
- Easy-to-read display of track info in synchronization with playlist tracks.
- Admin-reserved ability to play music for everyone on the server.
- Easily integrate MP3 tracks from any folder on your website.
- Currently designed for separate FTP upload prior to track integration.
- Supports batch processing of new tracks. Upload several albums at once!
- Minimizes work in populating track metadata.
- Automatic ID3 extraction.
- Make batch changes to album, artist and genre info.
- Browse, preview, edit and delete tracks using the provided library browser.
- Optionally host MP3 files on a low-cost remote server.
- Intended for rental packages which do not include enough bandwidth and storage spaces for Jukebox.
- Remote file server is automatically managed via FTP.
- Access is controlled and secure.
- Create user accounts for people you wish to have uploading or administrative access.
- Identify who is uploading which tracks.
- Non-administrative users may edit and delete their own additions.
- No risk of leeching.
- Playback URLs expire due to encrypted timestamp.
- Stored files have randomized file names, making direct browsing impractical.
- Website Server
- PHP 5 or later
- MySQL 5 or later
- Source Engine Game Server
- SourceMod 1.3.8 or later
- Access to same MySQL database as Website Server
- Mod must include an HTML-enabled Message of the Day feature
- Remote File Server (optional)
- User requirements
- jb_admin_flags_playall (default: “jz”) – An admin flag string identifying the admin flags that grant Public Stream playback control permissions, or leave blank to grant access to all users.
- jb_admin_flags_reserved (default: “jz”) – An admin flag string identifying the admin flags that grant Jukebox operation rights during the 'reserved' state.
- jb_admin_flags_settings (default: “hz”) – An admin flag string identifying the admin flags that grant Jukebox Admin Menu access, or leave blank to grant access to all users with general Admin Menu access rights.
- jb_advertisement (default: 0) – The number of seconds after first spawning to display the Jukebox advertisement, or set to 0 to not display the advertisement.
- jb_announce_mode (default: 1) – Sets the in-chat playback announcement mode. 0 = no announce, 1 = announce first track of each selection list, 2 = announce every track for Public Stream and only first track for Private Streams, 3 = announce every track for Public and Private Streams.
- jb_base_url (default: “”) – URL path to Jukebox's base folder.
- jb_db_conn_name (default: “default”) – Named SQL connection to be used by Jukebox. Database must be defined within sourcemod/configs/database.cfg
- jb_db_log_history (default: “jb_log_history”) – SQL table name for the Log History table.
- jb_db_log_usernames (default: “jb_log_usernames”) – SQL table name for the Log Usernames table.
- jb_db_options (default: “jb_options”) – SQL table name for the Options table.
- jb_db_playlists (default: “jb_stream_tracks”) – SQL table name for the Playlists table.
- jb_db_streams (default: “jb_streams”) – SQL table name for the Streams table.
- jb_db_tracks (default: “jb_tracks”) – SQL table name for the Tracks table.
- jb_enabled (default: 1) – Set to 0 to disable Jukebox, 1 to enable Jukebox for all users, 2 to reserve Jukebox operations for admins.
- jb_leech_password (default: “”) – Anti-leech password used to timestamp produced URLs. Must match the leech password specified on the web server.
- jb_log_use (default: 0) – Enables playback logging.
- jb_monitor_jboff_use (default: 3) – The number of times the user must cancel a play-to-all song to be automatically reminded and invited to adjust personal playback settings. Set to 0 to disable.
- jb_motd_restart (default: 0) – When enabled, users will be reconnected to their music stream after being interrupted by an HTML-based Message of the Day.
- jb_playall_default (default: 1) – Default setting for if clients should comply with 'play all' command.
- jb_playall_on_connect (default: 1) – When enabled, connecting new players will be merged into the latest active play-to-all stream.
- jb_popularity_decay_interval (default: 86400) – The interval time between popularity decay events, in seconds.
- jb_popularity_decay_rate (default: 5) – Percentage rate of decay of popularity scores per interval time.
- jb_queue_default (default: 0) – Default setting for automatic music queuing.
- jb_reserved (default: 0) – Reserves Jukebox operation for admins.
- jb_volume_default (default: 80) – Default playback volume for new users.
- jb_volume_loud (default: 20) – Volume boost for ‘loud’ playback.
- jb_volume_min (default: 10) – The minimum permitted volume setting, as a percentage of maximum volume.
- jb_volume_soft (default: -20) – Volume reduction for ‘soft’ playback.
Current Version: 0.5.5.0
- sm_jukebox – Invokes the Jukebox music system.
- sm_jb – Shorthand alias for sm_jukebox.
- sm_jboff – Stop music playback.
- sm_jballoff – (Admin reserved) Stop music playback for all players.
- sm_eavesdrop – Use: sm_eavesdrop <username>. Join the most recently started music stream, or a particular player’s stream, if named.
- sm_volume – Use: sm_volume <value>. Stores a playback volume level from 1 to 100%.
- Completely replaced the music playback system with a new HTML5 and flash-based media player called jPlayer. This new media player will allow Jukebox to work as it did previously within TF2, Counter-Strike and any other Source Engine games and mods that make use of the newer WebKit browser which accompanied the Mac OS updates.
- Jukebox now requires all users to have Adobe Flash for Other Browsers installed for music playback to work. This same version of Flash is required by all users for full functionality within the Steam store. More information may be found here: https://support.steampowered.com/kb_...8175-XFMJ-5769
- (include/login/constants.php, include/settings.php) Changed document include method to avoid path error observed on many servers.
- (include/login/constants.php, include/settings.php) It is no longer required to populate constants.php with settings. Settings.php has been updated with additional fields.
- Existing installations are required to replace settings.php on your server with the new version in the upgrade package.
- Fixed major error during track change process introduced in previous release.
- Removed log error which reported lack of track info during Playback Menu start.
- Changed new user Options entry sequence to deal with slow SQL query case.
- (Database) Corrected absence in SQL installation script included in 0.5.4.0 so that the default “admin” account is not properly created.
- Existing installations need not take any special action. This correction does not affect those who took the upgrade path to 0.5.4.0.
- (General admin website) Completed edit of webscript to use full PHP open tag, so that the php.ini setting “short_open_tag” can be left at its default value of false.
- Legacy SQL installation scripts are no longer distributed with Jukebox, to avoid confusion. Refer to the development thread for legacy versions.
- Jukebox is now developed and tested on SourceMod 1.3.1.
- This and future releases should be run on a server running SourceMod 1.3.1 or later.
- Technical support is not offered for servers which do not run on SourceMod 1.3.1 or later.
- Made several SQL database changes.
- Existing installations must run the included SQL database upgrade script. The upgrade to version 0.5.4.0 can be found within the “sql” folder in the website files.
- Fixed SQL database error so that the “queue” column within “jb_streams” is created with a default value of 0.
- Revised design of Playback Log to simplify the design of various search operations.
- Log entries are stored in “jb_log_history”, each containing a “user_id”, “username_id” and “track_id”.
- Each “user_id” refers to a user entry in the “jb_options” table, which includes the user’s Steam ID.
- Each “username_id” refers to the Username entry in the “jb_log_usernames” table, which includes the user’s Username observed when he or she connected to the server.
- Each “track_id” refers to a Track entry in the “jb_tracks” table.
- In addition to the above, the “jb_log_history” table stores some event data. The “start” column denotes the time at which the listened to track began playing, not the time at which the user joined in listening. The “joined” column denotes the amount of time into playback of the track that the user started listening. The “finish” column denotes the amount of time into playback of the track the user ended listening. Entries with a “finish” value of 0 implies that the track is currently being listened to.
- Removed “jb_log_users” table, replacing its function with the Steam ID data already within “jb_options”.
- Removed cvar “jb_db_log_users”.
- Restored custom named database feature previously removed in 0.5.3.1, this time corrected to properly connect using connection names other than “default”.
- Restored cvar “jb_db_conn_name” (default = “default”). Named SQL connection to be used by Jukebox. Database must be defined within sourcemod/configs/database.cfg
- Existing installations must add this cvar to jukebox.cfg and specify the named database connection to be used by Jukebox.
- For most servers, the value should either be “default” or “jukebox”.
- (upload.php) Fixed Jukebox incorrectly type casting the playtime duration from floating point to integer.
- Previously uploaded MP3s have the playtime stored as a value rounded to the second. Server admins are strongly advised to run “jukebox_0540_playtime_fix.php” found within the “sql” folder. It must be moved to Jukebox’s root folder and run from there. While not technically required, Jukebox will benefit from a more accurate playtime measurement.
- Server admins can now specify which admin flags grant access to the Public Stream playback, Reserved use and Admin Menu functions.
- Added new cvar “jb_admin_flags_playall” (default = “jz”). An admin flag string identifying the admin flags that grant Public Stream playback control permissions, or leave blank to grant access to all users.
- Added new cvar “jb_admin_flags_reserved” (default = “jz”). An admin flag string identifying the admin flags that grant Jukebox operation rights during the 'reserved' state.
- Added new cvar “jb_admin_flags_settings (default = “hz”). An admin flag string identifying the admin flags that grant Jukebox Admin Menu access, or leave blank to grant access to all users with general Admin Menu access rights.
- The admin flag “z” must explicitly be included in order to grant access rights to admins with this “root” admin flag.
- Refer to the SourceMod Wiki for more information on admin flags: http://wiki.alliedmods.net/Adding_Admins_(SourceMod)
- The in-chat playback announcement feature can now operate in any one of three different modes.
- Mode 1 (default): Announce the first track of each Public and Private Stream.
- Mode 2: Announce the first track of each Private Stream and every track from the Public Stream as they begin playing.
- Mode 3: Announce every track from all Private and Public Streams.
- Added new cvar “jb_announce mode” (default = 1). Sets the in-chat playback announcement mode. 0 = no announce, 1 = announce first track of each selection list, 2 = announce every track for Public Stream and only first track for Private Streams, 3 = announce every track for Public and Private Streams.
- Users can now Eavesdrop on the Public Stream without knowing who created it by including the search keyword “public”.
- Usage example: “!eavesdrop public”
- Added “Back” menu operation to search results menus.
- Corrected error during config file reading which caused some settings to be improperly read unless the plugin were loaded twice.
- Improved accuracy of track progression tracking on heavily loaded servers and over map changes.
- Fixed calculated “Last Updated” time to properly correct for time difference between the game and MySQL server clocks.
- If a queued playlist starts during map change, the participating users will be connected to the queued stream after reconnecting to the server.
- (query.php) Fixed minor error which would improperly format MP3 paths in the playlist when the Jukebox path includes uppercase characters.
- (browse.php) Improved Browse page’s sorting to properly coordinate target sort column, sort direction and page number.
- (browse.php) Added visualization to the sorting controls to indicate current status.
- (browse.php) Added a “Date Added” column to the Browse page.
- (browse.php, upload.php) Replaced Function text buttons and links with graphical buttons.
- (upload.php) Admins and Uploaders can now delete uploaded items directly from within the Add Tracks page.
- (upload.php) Improved deletion process to allow Windows servers to delete uploaded tracks with spaces in the file name.
- (upload.php) Subfolder objects in the list now display the number of files within the subfolder.
- (upload.php) Tracks selected for addition to the library can be selectively removed during the Edit stage.
- (upload.php) The Add Tracks process will not proceed past the Edit stage until all errors have been cleared.
- (upload.php) Changed how Jukebox determines the local folder path to avoid a rare and unknown false path issue.
- (General admin website) Added display of installed Jukebox version.
- (General admin website) Updated several scripts so that the php.ini setting “short_open_tag” is no longer required to be On.
- Existing installations are advised to return “short_open_tag” to “Off” if it was previously adjusted.
- Added proper character escape step to SQL queries so that searches involving special characters like ‘ and “ will properly execute.
For additional change log history, please refer to the support manual included within the Jukebox installation bundle.
These are ordered from most to least urgent.
- Alphabetical sub-grouping of the Browse Menu (2010/01/19)
- Menu-based eavesdropping, including "who's listening to what" info. (2010/01/11)
- Better management of queued music. (2010/01/11)
- Public and Private playlist creation, including the ability to save them to the server for later use. (2010/03/22)
- Automatic music playback on map change and on first join. (2010/01/11)
- Automatic database tables installation for easier setup. (2010/01/11)
- When adding tracks, double quotes (") get dropped from metadata fields right as it is saved to the server (but is carried through the rest of the way) (2009/04/28)
The purpose of this beta release is to gather bug-reporting feedback from multiple servers. Progress on Jukebox depends on bug reports.
When reporting a bug, specify the version of Jukebox that you are running. Provide an appropriately detailed description of the symptoms and the sequence of events that led to it. Specify if the problem is being experience on the game server, the web server or both. Also check the console for errors when attempting to invoke Jukebox commands.
Include details on the server machine displaying the bug, such as your SourceMod version, game server OS, web server OS, PHP and MySQL version, etc.
Submit bug reports via this thread, which will be reviewed by SirLamer.
- Server operators are advised to refer to the documentation within the release package for more detailed information.
- An operational guide tailored to end-users is in development. This manual is accessible from within the game but can also be accessed by clicking here. Note: Though the design and layout is not finished, all the needed information is available.
Last edited by SirLamer; 08-14-2011 at 20:54.
Reason: Update to version 0.5.5.0