Spicefly SugarCube - Version History
Version 4.41 - 11th February 2013= Found a NULL state error around Artist Blocking on Random Track Selection. This would cause a hard STOP with no track selection, now fixed!
Version 4.40 - 10th February 2013+ New Display Option; Added a new player notification for when a Random Track has been selected. This message will show up on the player for five seconds if a random track has been selected.
=Tided up other notification settings which are now all under the Display Options menu, these are; "When Random Track Selected", "Show Technical Information", "Show Coming Up Next", "None"
+ Always Block Artist has now been enhanced, to enable three Artists to be always blocked, this is also respected if SugarCube falls back to a random track.
Version 4.36 - 18th January 2013+ Enhanced SugarCube Live View to highlight to the user when they have misconfigured Mix by Type. I.e. Genre Mixing but no Genre specified, Artist Mixing but no Artist specified and Filter Mixing but no Filter specified.
= Fixed debug log notification for Mixing by Artist, for when Artist is not specified. Seems I dozed off and never originally finished this code!
Version 4.35 - 19th October 2012+ Added Live View notification for when the Player is in a sync group.
Version 4.34 - 16th October 2012= Fixed bug with Wobble Mode for when MusicIP returns no tracks, now correctly falls back to random track selection.
+ Added Artist details to the Random Track notification in Live View.
Version 4.33 - 18th September 2012+ Updates to Dynamic Path Conversion which enables MusicIP and LMS to be on different systems, dynamically converting the library path between both LMS and MusicIP, Wintel LMS with Unix MIP and Unix LMS and Wintel MIP.
Version 4.32 - 12th September 2012= Fixed issues around extended character sets for the new Add Track functionality in SugarCube Live View.
Version 4.31 - 8th September 2012+ Added new functionality to SugarCube Live View to enable any of the MusicIP recommended tracks to be manually added to the playlist.
+ Increased the maximum 'x' level to 100 for Block Artist Repeating for x Tracks, Block Album Repeating for x Tracks, Remember This Many Played Tracks. Be mindful that you could easily end up with no valid MusicIP recommendations and therefore end up with a failback to random tracks! Especially if you use "Restrict Mixing to Genre of Seed Track" and have a small music library.
+ Added additional debug code to check DPC configurations, this will be removed later once all the bugs have been flushed out.
Version 4.28 - 7th July 2012+ Dynamic Path Conversion - Enable MusicIP and LMS to be on different systems, dynamically converting the library path between both LMS and MusicIP.
Version 4.26 - 1st July 2012+ Test functionality to support low CPU powered devices such as NAS drives (that can run MusicIP), up to 2 mins can now be specified before timing out. The default Perl/DBi is 30secs but if the device is under extreme stress it may not respond in time.
+ Added display of License status in the Player Settings to make support easier.
Version 4.25 - 20th May 2012+ Major rewrite of all TrackStat routines, these were not working completely and broken since before 3.5x
= Updated Chrismas automatic genre blocker code to make it cleaner.
= Updated all database calls to improve speed, efficiency and minimise overhead.
= Various bug fixes and tweaks to code.
Version 4.21 - 1st May 2012+ Added Add Album to Playlist within Live View
+ Added More Info for Album within Live View
+ Updated Replace Next Track function which broke if there was no next track in the playlist and will now attempt to block the track being replaced from being re-selected.
Version 4.20 - 23rd April 2012= Changed Various Artists blocking routine. Now takes into account the Album even when allowing Various Artists, this should stop multiple tracks from the same album being allowed to play.
+ Added automatic genre blocking for Christmas and XMas (case-sensitive) this will automatic allow Christmas and XMas genres to play when the month is December.
= Increased Tracks to keep in Playlist View up to 300.
+ Added initial support for multiple genres in tracks, note that the last genre in the metadata is the dominate genre. This is a bit of a workaround as MusicIP doesnt support multi-genres.
Version 4.14 - 3rd April 2012= Fixed Failback Routine; Get a Random Track based on provided Genre broke if genres contained apostrophe characters.
= Fixed Always Block Artists, for Artists that have apostrophe characters
= Fixed Always Block Genres, for Genres that have apostrophe characters
= Reintroduced Icon Weighting for SugarCube Live View and now SugarCube History under LMS => My Music. 1 is Position at Top and 99 is Position at Bottom. A restart of SBS is required to take affect.
= Removed some legacy debug code
Version 4.13 - Internal Release= Internal Test Release
Version 4.12 - 18th March 2012+ Added ability to determine number of tracks to request back from MusicIP. (Feature Tracking; FS#24)
= Removed some legacy debug code
Version 4.11 - 10th March 2012+ Clarity to description items in player settings page
+ Removed some legacy debug code
= Fixed Filter Mixing Logic Error
= Fixed graphic-320x32 HASH ref Error (Bug Tracking; FS#23)
Version 4.10 - 5th March 2012+ All http requests are now Async to improvement performance.
+ Rewrite of all functions and improvements for performance, track selection is approx 30-50% faster than Version 3.51 !!
- Removed Dynamic Playlist code, broken for years and needs to be revisited.
+ Rewrite of SQLite calls to minimise CPU usage and increase performance.
+ Reworkng of SQLite Album Artist calls to be able to handle tracks containing both Album Artist and Artist tags.
+ SugarCube Liveview added Coming Up Next and Current Playing details complete with Album Art.
+ SugarCube Liveview now includes Album Art.
+ SugarCube Liveview includes ability to one-click queue up an album.
+ Added SugarCube History view, showing previous tracks that have been queued up.
+ Removed TrackStat requirement from SugarCube, TrackStat is now an optional enhancement.
+ Added MusicIP Vintage mode, this works like the original MusicIP and will add all tracks into the current playlist that havent been played before.
+ Added ability to specify TrackStat block tracks with playcount > 0, to keep music fresher.
+ Added Group Sync, enabling settings to be saved for all players, previously settings need to be set individually for each player.
+ Added Erland's 3rd Party Licensing Model into SugarCube.
= Fixed Jive menus to return correctly once Play Album and Replace Next Track were selected.
= Fixed Logic error which prevented selecting a Mix Style of 0 and Mix Variety of 0.
= Fixed (hopefully rare) Genre Track selection bug when MusicIP fails to provide a track.
= Heaps of bug fixes and performance improvements.
Version 3.51 - 6th September 2011= Changed detection of TrackStat to remove the "FAILED SugarCube Requires TrackStat Plugin to be Installed and Configured" error message when StartUp Refresh is set to 0.
+ Added Icon Weighting Support for SugarCube Live View under My Music. 1 is Top and 99 is Bottom. A restart of SBS is required to take affect.
= Removed MySQL Support Queries now depreciated in SBS.
+ Tweaked Queries to improve resilence and support ' characters in Artist and Genres.
+ Reduced forced timeout for MusicIP query from 10 to 3 seconds, this is probably long enough to get a response out of MusicIP and may reduce the impression of "hanging" time. May also improve performance on low spec systems.
Version 3.50 - 9th July 2011+ Improved Random track process. Now if SugarCube falls back to a random track it will continue to block an Artist specified to be Always Blocked.
+ Tweak to tidy up the Live View for Tracks that have never been played (TrackStat Last Played Date)
Version 3.49 - 24th June 2011+ Added SugarCube Wobble mode. This allows a tweak to the selection process to pull out a track at "random" from the tracks remaining with status OK. This is a per player setting and turned on under the player settings menu.
Version 3.48 - 23rd May 2011= Fixed typo in Live View.
+ Added encoding for majority of extended characters. Note MusicIP doesn't support really strange characters so tidy up your music library ;)
+ Added ability to specify the pause period added in 3.45 before SugarCube will select the next track. Becareful not to set it to high if you have short tracks as it wont have queued a new one up in time!
+ Added updates to Live View to reflect when SugarCube is not active.
= Tweaked Live View to align the columns better ie. Trackstat columns together and Artist moved next to Album.
= Tidy up of the SugarCube Client Settings and SugarCube Main Settings page, improved descriptions to make it all clearer.
+ Added captures for a few common MusicIP errors, trying to mix from an Artist, Filter or Genre when its set to None in the settings or the available tracks have been exhausted.
+ Added Random Track Title into the Live View display.
+ Changed Live View to Refresh against the SBS Server Setting. See Interface Tab - Browser Refresh Timing
+ Added definable Live View data table width. Under Plugin -> Settings. As a percentage of the screen, for large screens 90% works well reducing space on the edges, for smaller screens set to 100%
Version 3.46 - Released 10th May 2011= Added capture for when SugarCube is installed but TrackStat is not installed. Thanks to Guenter for finding this fault :)
+ Added encoding for characters 'µ' and '¿' these are quite regular so added into the encoding functions to keep SugarCube rocking.
Version 3.45 - Released 9th May 2011+ Made cosmetic improvements to Live View stats page as per recommendations of John Keeling.
+ Optimised SQLite database calls for Live View stats page and removed a number of db calls no longer required resulting in quite a significant improvement in page loading speed.
+ Switched SQLite database calls to utilise Placeholders and Bind Columns to improve performance and mitigate encoding errors.
+ Added capture for Non-Breaking space into the encoding functions
+ Added option to delay 7 seconds before SugarCube initiates may improve performance on certain systems. Set via Plugin Page Settings (Not player settings)
Version 3.43 - Released 6th May 2011+++ Annoucing Spicefly SugarCube Live View. One of the main drivers to moving to a SQLite backend was to provide a live view of the response from MusicIP and the decisions made by SugarCube on the final track selection. This has now been incorporated into the stats page, note you can right-click at the top and select open in new tab for a better view (depending on browser!)
= Fixed issues with Linux/Unix path problems being able to access the SugarCube database, thanks to Robert Duck and Erland for identifying the problem in my absence Laughing
= Added capture for 0 (ie. disabled) settings for Trackstat Rating, Trackstat Played Recently and Trackstat Playcount.
= Various tweaks to the code base and removal of a few old legacy pieces of code not required anymore.
Version 3.40 - Released - 27th April 2011+ Added Jive context menu "Play this Album". When SugarCube uncovers a great track and you decide that you fancy playing the whole album. Just press the + key and then Play this Album will queue up the entire album of the current playing track. This is slightly different to the Album option thats already in the menu in that its helpful when you dont have the controller to hand or using the Touch.
+ Added Jive context menu "Send to Player". This allows you to send the current track to another player and start it. For example if you want to continue the mix on another player because you are moving to a different room.
= Removed few bits of legacy weighting and track tracking code no longer required now we are using a SQLite backend.
Version 3.33 - Released 18th April 2011+++Complete rewrite of numerous functions to move logic into a SQLite database backend and removed various complicated Perl routines which can be handled more efficiently by the database.
+ Added Alarm Filter mode as an alternative for Genre Mixing.
+ Added ability to specify number of tracks to keep in the playlist view.
+ Increased maximum levels for various sliders now we are using a SQLite database structure.
+ Added ability to skip TrackStat Sorting but keep the TrackStat Block by Playcount, Ratings and Recently Played functionality.
+ Added ability to overide the server name for MusicIP on the main plugin screen, default remains as localhost but it allows MusicIP to be on a different server.
= Due to anticipated delays in the release of SBS7.6 until June/July, added back in support for mysql and SQLite
Version 3.02 - Released 23rd January 2011= Fix for Unix/Linux not displaying icon, thanks to Robert
= Removed depreciated Scheduled filtering from the Player web UI
Version 3.01 - Released 13th January 2011+ Added Napster streaming content trap if found stay quiet and dont try and mix.
+ Added capture for when no Genre is actually set but an Auto Mix is started, will now panic and grab any track.
+ Fixed New Sleep routine. If a client sleep was setup but then never initiated (ie. server shutdown) wouldnt always reset correctly on server startup, blocking the client from ever sleeping again. This is now replaced with a simplier and cleaner function.
+ Added ability to clear the count of Number of Tracks Queued and Random Count from the SugarCube Statistics page
Version 3.00 Alpha - Released January 2011= Fixed SQLite database support for Squeezebox 7.6.x
Version 2.99 - Released December 2010+ Added SQLite database support for Squeezebox 7.6.x
+ Rewrote Random fallback functionality, in a situation where no track is chooseable we originally selected a random track. Now we select a random track of the same Genre as the track that is currently playing.
Version 2.98 - Released 1st December 2010+ Added Spicefly Noise mode
= Performance tweak to reduce overhead
Version 2.96 - Released 8th October 2010= Fixed Reporting Error for "Remaining After Album Checks" on the stats page when a Random Track was selected.
+ Added Last Time/Date a Random Track was selected to the stats page.
Version 2.95 - 29th September 2010= Tidy up of Sb3 and Jive menus
= Fixed potential of Divide by Zero on the stats page with a new installation.
+ New Menu Item - Auto Start based on Alarm Genre field or random if none set, see menu on both Sb3 and Jive players. For when you arent quite sure what to choose to play.
+ Added ability to change the Active Filter on the fly, via player menu for both Sb3 and Jive players
+ Added additional Genre blocking, total of 3 genres can always be blocked
+ Updated Stats page for increase of Genres
+ Specify the words used in the Weighting function in the upcoming Track Title
Version 2.85 - Released 28th May 2010+ Rolled and expanded SugarCube Statistics into its own page inside the web interface. Providing detail on the health of MusicIP and SugarCube's Performance and thinking.
Version 2.75 - Released 26th May 2010+ Dynamic Queuing, option to only queue a new track if we are playing the last track of a playlist.
Version 2.71 - Released 20th May 2010+ Added Blocking of Recently Played Tracks. Tracks can be blocked from repeating within a certain number of days. (TrackStat Required)
+ Added SugarCube Statistics into the Player Web Interface for interest.
= Tweak of Album and Artist Blocking routines, were being upset by foreign and various non-alpha characters.
Version 2.65 - Released 19th May 2010+ Added SugarCube into the Alarm Clock. Uses a User specified Genre and so kicks off with a random track each day from that Genre subset. If MusicIP is not running when Alarm fires, will fallback to a random track from the Squeezebox Database.
+ Added functionality to try and pickup inconsistencies between the MusicIP and Squeezebox database and flag them in the logs. ie. MusiciP database provides a track that doesnt exist in the Squeezebox database, actions are to log the issue and fallback to a random track.
Version 2.60 - Released 12th May 2010+ Added Block Album for X Tracks function
= Fix for ? and © characters, added to the encoding functions
Version 2.56 - Released 12th May 2010+ Added Trackstat Rating cull function for tracks under a certain rating level to be removed from the results.
= Fix for ` sign added to encoding functions this didnt stop the file being queued but broke the weighting and rating functions
= Tweak to Genre Blocking function to make it more robust
Version 2.54 - Released 9th May 2010+ Added "Replace Next Track" into the Playlist menu for Jive based players
= Optimisation of New track selection routines and Trackstat routines.
= Correction so as to compare Artist rather than Album Artist for each track selection.
= Various optimisations of code and tweaks.
Version 2.50 - Released 16th April 2010+ Major Update Trackstat Integration for, Low/High Playcount, Recently/Least Played and Rating; If Trackstat is installed the criteria can be used to rank the tracks and queue up the best match.
+ Complete rewrite of the select track and weighting routines, will now process all MIP returned tracks and rank them accordingly. This allows for greater functionality to be added.
+ Added Replace Next Track function. Works nicely with the Coming Up Next Routine, if you dont like the next queued track this will replace it without having to mess about with playlists or stopping the music.
+ Do not block Various Artists as an artist, unless Weighting value is exceeded. This ensures large areas of your music library are not unnecessarily blocked.
+ Added Clear Artists when Playlist is cleared.
+ Added Always block Genre. Make sure Christmas tracks dont play in June!
+ Added Block on Playcount greater than x. (Trackstat Required) Ensure you dont always hear the same tracks by not queueing up tracks that have played many times before.
= Fixed encoding error of symbol # in Track names.
= Encoding Tweak for the directory structure of the MacOS unsure if this has fixed the issues as I dont have a Mac but maybe!
+ Added dynamic timeout to the Web Interface Player preference loading page, ie. if MIP is not running it will wait less time while drawing the web page, 7 seconds initially and then reducing to 2 secs on error. Default timeout was making it look like SugarCube was crashing the server when it was actually waiting 3mins for each timeout, giving an overall wait of 12mins! Will only impact users who have setup MIP incorrectly or forgotten to start it up!
= Fixed Override Shuffle option when SugarCube is disabled, was broken during switch to per client restructuring and would change it even when SugarCube was disabled.
+ Added Block Artist Repeating for x number of Tracks, pretty self explanatory.
+ Added Always Block a Specified Artist Option.
+ Added sorting of Genres, Artists, Filters and Recipes in the option boxes of the Web Interface.
+ Added Warning into Web interface, if the player is part of a sync group but is not the master. The master of a sync group drives the show and therefore only its settings apply, its a warning that you are wasting your time making changes when its a slave player.
Version 2.10 - 22nd February 2010+ Rewrite of the Client Previous Played - tracking routine, logic testing worked ok. IDR testing in live environment seems ok, released to FS 2nd March. Previous Played Routine was found to contain a bug picked up by Philip Meyer, resulting fix didnt work correctly either, so I rewrote the routine from scratch which should hopefully nail this once and for all.
Version 2.06 - 2nd February 2010Bumped into Repository
Version 2.05 - 2nd February 2010+ Added Jive Menu Icon
= Repository Link
Version 2.04 - Its all a blur+ Tweaks to Client Previous Played - tracking routine
+ Added Master/Slave debug code purely for interest
Version 2.03 - 12th January 2010= Fix for ; characters in track names
Version 2.02 - 10th January 2010+ Added Auto Toggle of the Squeezebox Play "Only Song / Play Directory" when SugarCube is Enabled/Disabled
= Tidied up Debug output
Version 2.01 - 2nd January 2010+ Added live365, mediafly and Sound Effects streaming content traps as above
+ Added tweak to Coming Up Next routine to not report on the next track if the current playing track is a streaming feed
Version 2.0 not Quite Final - 1st January 2010= Added timer fix for Coming Up Next routine
+ Added .asx, rtmp, pandora, slacker, lastfm streaming content traps if found stay quiet and dont try and mix
Version 2.0 Beta 4 - 26th December 2009= Tweaked http method to work with Squeezebox 7.5
+ Added trap for streaming content if found stay quiet and dont try and mix
Version 2.0 Beta 3 - 21st December 2009+ Added additional obscure 2x Char encodings
+ Initial 7.5 tweaks - player page loads but may need to be refreshed a couple of times. (This is still being worked on)
= Few tweaks to the menus for better display on the Duet
Version 2.0 Beta 2 - 10th December 2009+ Added Jive menus back into the plugin
+ Added "Mix Type" menu for Jive based players, Squeezeplay, Duet, Touch etc, to be able to select None, Filter, Genre, Artists from the player/controller
+ Added "Mix by Song or Album" menu for Jive based players can now switch between Song or Album as the seed.
+ Added "Weighting" menu for Jive based players, so can modify the New Track Weighting value on the fly.
+ Added Mix Style and Variety menus for Jive based players so Style and Variety can be modified on the fly.
Version 2.0 Beta 1 - 2nd December 2009+ Tweaked Coming Up Next sub-routine to "hibernate" if no players are active or are paused/stopped etc thus minimising CPU time when not running.
- Removed "Prefer Track Return Order" as no longer utilised and has been replaced by new Weighting Routines
= Added fix for when the music library is on a local drive
= Added default fallback position for MusicIP Port if not defined in the preferences, should only impact new installations
+ Added Technical View which is mainly for use on the SB3, it denotes whether the current playing track has cover artwork embedded or folder based and Replaygain Track/Album set. Activate Coming Up Next first in the dropdown and then tick the Technical option, this is helpful just to keep an eye on tracks that are playing and whether this metadata is missing from the library.
Version 2.0 Beta - Released to Friends of Spicefly 27th November 2009Version 2.0 has been a major rewrite of SugarCube and has taken many months of effort in numerous chunks of time! The aim was not just to make it work with 7.4 but to take the time to undertake a major restructure of how it works thus enabling additional features to be added and to break out of some previous coding constraints.
Some of the new features;
+ Re-write of most sub-routines to improve the code structure and reduce memory usage.
+ Completely Client friendly, ie. all data structures are per player (device) so SugarCube can run completely independantly on multiple devices, this includes the tracking of previous played tracks, type of mix/style etc.
+ Will remember played tracks between sessions, ie. if you power off and resume later.
+ Custom foreign character encoding routines, after playing around with numerous encoding methods, MIP uses one form of encoding, Squeezebox another! I couldnt get anything to work correctly, so I ended up writing my own. This seems to work ok on the test tracks I tried and hopefully will be pretty solid.
+ Restructured the player side menu items as they were becoming overly large, additional features didnt "fit" well and were confusing.
+ Added Artist based mixing, the final mix option avaliable on MusicIP, so we now cover the full set (I think), Artist Mixing, Filter Mixing, Genre Mixing, Recipe Mixing as well as Song and Album Type Mixing.
+ Moved from server based settings to player based settings for the web configuration page and repackaged into the new interface.
+ Added Weighting, which is a feature that I've wanted for ages but the original code couldnt support it. This new feature looks at the current playing track and compares it against the recommended next track and analyses it to try and determine whether it is the "same" track or a remix version of it. (MusicIP has a habit of returning remix versions of the seed track, so this is my first attempt to combat it.)
+ Added experimental IR code Hold Button PAUSE to disable/enable Coming Up Next per player
+ Added Shuffle Option ignore/overide
+ Fixed filter issue, in some circumstances a defined filter would not be utilised, no error was ever produced by MIP
+ MIP would sometimes return nothing when Mix by ALBUM Selected, will now fall back to SONG as Seed if this happens and than Random track as the final fallback option.
+ Lots of other tweaks and changes under the bonnet.