Song Kong Design

The idea of SongKong came from some recurring issues in Jaikoz that could not easily be solved in Jaikoz itself, or could not be solved in a reasonable timeframe.

With Jaikoz the customer load their songs into Jaikoz, and then they can be autofixed and edited, but there is a delay whilst the songs load. The design of Jaikoz was that the customer should be in total control of when and if files are changed, and also the songs metadata was visible within Jaikoz, this means they have to be loaded first. Many taggers auto-save changes as they go along, potentially wreaking havoc on the way and I couldn't see a way round this problem but then came up with a great idea that is implemented in SongKong. SongKong modifies songs as required, therefore it can start fixing and saving songs as soon as it starts, however it stores all changes in its database so changes can be reverted at a later date. So you can fix songs in SongKong, check the results in another program such as Jaikoz and if there is anything you do not like you can restart SongKong and revert changes for any folder.

Jaikoz cannot process songs from the command line, this is because auto correction is done based on the songs loaded in the main display, and there is no main display if using a command line. SongKong does have a command line option

Jaikoz has many options and features, and this is disconcerting to potential customers. Even though most customers get good results with the default settings, the sheer existence of options is a negative for some customers, but these options cannot be removed because every option is useful to someone. In addition to preferences Jaikoz as a whole is very feature-rich. Many potential customers are looking for a one-click solution that does a good job. SongKong has less options but because SongKong only does auto-matching it does not need as many, it provides just three main functions Fix Songs, Delete Duplicates and Revert Songs.

Jaikoz is memory bound, as you load more songs into Jaikoz more memory is required. So when trying to fix your whole music collection of thousands of albums Jaikoz can run out of memory and/or start performing very slowly. The correct way to solve this is to store all changes to a database, and for the main display to only hold the metadata of the visible songs in memory. But this is a major change, and making this change in Jaikoz means nothing else can be worked on for several months and there is a real risk of introducing new bugs. Working on this problem in a new product is much easier, so now I've ironed out the problems in SongKong it will be much easier to plug the database implementation into Jaikoz.

Jaikoz uses Java 6, SongKong uses some features of Java 7. If we moved Jaikoz to Java 7 it would no longer be available on OSX before the Lion (10.7) release so I would prefer to delay that move for as long as possible.

Features in SongKong that will definitely make it into Jaikoz