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.
- SongKong is not a replacement for Jaikoz it is a companion product that works in a different way to Jaikoz providing features that would not be a good fit with Jaikoz
- Development of Jaikoz has been slower this year because of the development of SongKong, but once SongKong is released development time of will be split even between both products
- Where they do fit, some of the features of SongKong will make their way to future versions of Jaikoz
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
- Jaikoz will use the same database model as SongKong so it will not be memory bound.
- SongKong properties are plain text (they are encrypted in Jaikoz) making it easier for customers to configure different SongKong configurations.
- SongKong bundles jre in the Windows release, and provides 32bit and 64bit versions for simpler deployment.
- SongKong lets you create javascript functions and give them names to make filename masks easier.
- Improvements in SongKongs matching algorithm.