I was determined to make another preview release before the end of the year, and here is the 0.5 BETA preview, which will be the final preview before the first release.
This has been a very long journey due to limited spare time to devote to programming (and a very fine summer cut it down even more!) and the flexibility (read complexity) of the Kronos file format to have any permutation of banks in it.
Also, following feedback from beta testing, it came apparent that my plan to only support OS 3.0 file formats would exclude a lot of files. In my own collection of files, I found I had the following breakdown of files:
19 % V1.0/V1.1
17 % V1.5/V1.6
30 % V2.x
34 % V3.x
I.e., I would have been excluding 66% of my own files if I only supported V3.x That was quite a surprise statistic
Therefore, I dived into understanding the differences between the different OS versions, which opened up another world of complexity, particularly with V1.5 files and how they extended the format to maintain compatibility with V1.0 files - which all then disappeared in V2.0 and above!
So, what is in this release
- Full support for all known OS file format versions.
- Wave Sequences are further decoded to allow you to see the individual steps (and move and copy them) and the sample each step is using
- Ability to drag and drop from older version files to newer versions with the appropriate version migrations taking place
- More visual feedback on what is happening during complex/lengthy operations
- Drag and drop support extended down to all visible objects
- Not a program feature itself, but my testing regime expanded to test read/copy/write operations of as many files as possible and checking 100% perfect results. Over 200 files are being successfully tested.
- Minimum Java version is now Java 8 as Java 7 is no longer getting security updates as Oracle have dropped public support for it.
kronos.factory is effectively in beta preview, and you can download via the following links
OS X Installer and any Java system
Instructions on how to install are here http://xfactory-librarians.co.uk/installation.html, and if you do not already have Java on your system, then follow the guide here http://xfactory-librarians.co.uk/java.html
Finally, a public thanks for Galf2, who has been assisting me in the beta test process and who has provided invaluable support.
- The screen resolution issue if working on a device with a hi definition monitor (I will sort as part of a later java migration)
- The software (and all my librarians) is NOT compatible with Java 9 and above. Java 9 introduces a major change to Java which broke several libraries that I was using. I have now migrated away from those and was making good progress with making my applications Java 9 compatible until I discovered a major bug in Java 9 MIDI Port Naming on Windows (OS X is fine!) that corrupts port names, which needs fixing by Oracle (Java vendor) before I can complete the migration
- Now that I have introduced reference checks, then there is a performance hit when opening some tree branches. It is OK for most items on a reasonably fast computer, but there is a huge delay when opening KSC drum sample branches due to the number of items to check to see if they are referencing any sample on display. I need to look into how I can optimise for this. I have added in progress monitoring, so you will know what is happening.
- Copy referenced objects requires suitable free data spaces, and currently fails silently if non are available. I will add error reporting in a later release and also the options to create data banks if space is available. I will also add some menu items to allow you to query a selection and see how much space is required for referenced items (e..g a Set List is using XXX Combis, which are using YYY HD-1 Programs and ZZZ EXi programs, which are using NNN Wave Sequences, Drum Kits, etc.)
My future roadmap is as follows. Hopefully 1.0 will be out by end of Jan with the current progress I am making.
- 0.6 - 0.9 bug fixing. Completion of documentation
- 1.0 First release
- 1.1 Song file support
- 1.2 Writing of KSC and KGE files (they are currently read only to "peek" at the data in them)
- 2.0 Library Support
- 3.0 MIDI Support (if the demand/interest is there)
Why, the heck is it taking so long to produce this software, and then why are some operations lengthy? All the permutations and things to check! For example in a PCG file , there are
- 20 Program (Voice) banks (x 128 Programs) that may or may not be there in any combination...
- But after Bank I-F there are the preset GM banks (9 of them!) before the other User banks carry on from U-A onwards
- And Program banks can be either HD-1 (ROMPLER) or EXi (Virtual Instrument) banks
- There are 14 Combi Banks that may or may not be there in any combination...
- There are 15 Wave Sequence banks that may or may not be there in any combination, and the first bank has 150 Wave Sequences, the rest 32 (so lots of fun if you move a 32 element bank to the first one and vice versa)
- There are 15 Drum Kit banks that may or may not be there in any combination, and the first bank has 50 Drum Kits, the rest 16 (so lots of fun if you move a 16 element bank to the first one and vice versa)
- Drum Pattern Tracks are totally free form, there may be up to 1,000 of them and they do not have to be sequentially numbered....
- The only thing fixed is Set Lists where there are 128 of them with 128 entries
- Is a Program Bank a HD-1 Bank?
- Yes, are any of the 128 Programs in a Program Bank a Normal Voice or a Drum Voice?
- Normal Voice, check oscillator 1 always and only oscillator 2 if it is a double oscillator voice
- For each of the 8 trigger zones in an oscillator, is it off, a sample or a wave sequence?
- If Wave Sequence then has it been affected by the move?
- If so then remap the Wave Sequence reference to take account of the change (and just to make life interesting you need to convert between a single index in the trigger zone and the Wave Sequence Bank/Wave Sequence Number (with the first bank being 150 elements in length and the rest 32
- A wave sequence move inside a bank
- A wave sequence move to another bank
- A reordering of the banks
- A renumbering of a bank!