Korg Kronos - Software Developers User Community Resources


Program/Combi Usage Report Formatter     SysexFiler     PCG2INS  Reference Changer List Generator

Kronos

This files area is intended to support the community of Kronos owners who are also software developers.  As a community effort, we are working together to develop a more comprehensive "Programmers Reference" for the Kronos.

All related discussion on Korg Kronos software development is hosted by KorgForums.com in the forum section Computer Programmers – Software Developers..
The thread I started is here.

Please use this alias email for email, or via KorgForums.
Thanks, Tim.


General Kronos Tips

Kronos Karma Combi Switching Technique - A summary tutorial on using Karma on the Kronos to switch up to 4 Timbres on and off, without any polyphony loss, and maintain use of the Realtime control knobos in the Combi.

Process for integrating new programs into a Kronos with no free program banks (2021) - (PDF) A summary tutorial on how to use PCGTools to load a 3rd party sound set when you have no free banks and a non-factory program layout.  There is a spreadsheet tool for helping automate the creation of data for needed PCGtools Reference Changer for this process.  See below for a more advanced script to generate reference changer lists from a Combi set based on factory program locations. 

Kron

MIDI  Related

Combi Data Structures - Excel file to assist creating your own software data structures for the Kronos Combi.  
(Nov 2012)
Link


PCG File Related

Overview of PCG File Format  (based on examination of Kronos PCG files from OS 2.1)
Partial information, not guaranteed correct!   (April 2014)
Link
  

Scripts and Programming Tools

Perl Scripts to parse Kronos text file documentation into CSV or similar formats for use in software  (Nov 2012) Link

MIDI Libraries

MIDI Library written in Python    ( It is specific to the Krome but should be similar to Kronos)  
Contributed by bmames00      (July 2014)

Link


Sysex Filer

This is a utility I wrote  as a general development tool for sysex and MIDI, to debug and support other programs. It has a
couple of special functions that might be useful to the Kronos community:
1) Ability to copy and merge Timbres within or between Combis
2) Ability to convert Triton (and compatible) Combis to Kronos Combis.  
       It does not convert programs - maybe someday I'll be able to add that capability. Just having the Combi converted is a big time saver though.
Note: This is unsupported freeware. Developed and tested on Windows 7 32 bit and Windows 10 64 bit.

Version 1.6 update - December 2016.  The Combi copy/merge function now support IFX copy and remap also.

Preview the help files here:
SysexFiler Help File - General
SysexFiler Help File - Copying Kronos Timbres
SysexFiler Help File - Triton to Kronos Combi Conversion

Download the program - Version 1.6.0.0  December 2016

Download


Screen Capture

Timbre Copy



PCG2INS  -  Translate Kronos PCG files into Cakewalk (Sonar) Instrument Definition (INS) files

This utility takes a PCG from the Kronos and generates an Instrument File for Sonar
This defines the correct bank change commands for the Kronos, and lets you use the actual Kronos program names within Sonar when you create a Patch Change event:
Sonar Patch Change

Whenever you change the programs in your Kronos, you can save a PCG file and then re-run this program to update the INS file. Sonar will re-read the INS file the next time it starts and use the updated program names.

PCG2INS  is a Windows Console program.  To open a command window, type CMD.EXE in the Start Menu search text box.
There is no installation process other than unzipping. The downloaded  file (PCG2INS_v101_distribution.zip) should contain the EXE and three INS files that are used to build the output file.
Unzip the distribution file into any folder of your choice, and CD to that folder.   You can use the folder you normally store PCG files to make it convenient.

cmd

The output file is written to the same folder, with the same name as the PCG file but with the extension changed to .INS.   Sonar only accepts .INS files.

The INS file will contain two "Instruments" selectable in Sonar, one for Programs and one for Combis.  You have to decide which way you want to map the Kronos, and unfortunately the selction is global, not per-project.  Sonar does not handle dynamic selection of Programs or Combis.  

Once Sonar has been configured to use the INS file, you can easily keep it updated from current PCG files, and Sonar will use the updated definitions.
One easy way to quickly update with new PCG versions is to create a shortcut to PCG2INS on your desktop, and then drag a PCG file onto it. It will run and put the output INS file in the same folder as PCG2INS (which should be the one Sonar is using).

The program has been tested PCG files generated by Kronos OS 3.0.x.  The PCG files I tested with have included "all" data.

Note: This is unsupported freeware. Developed and tested on Windows 7 32 bit.


Download the program - Version 1.1.0  (29 November, 2015)
Download PCG2INS
To load the INS file in Sonar:
  1.     Menu: Edit / Preferences
  2.     On left column, select Instruments
  3.     Click "Define" in the right pane.
  4.     Click "Import"
  5.     Navigate to the folder where you saved the INS file that was generated, and select it. Click OK.
  6.     Select "Kronos (Prog)" and "Kronos (Combi)" on the list of instruments to Import (shift click for the second one). Click OK
  7.     "Kronos (Prog)" and "Kronos (Combi)" should now appear on the list of instruments.
  8.     Click Close
  9.     In the list under "Output/Channel" scroll to find the Kronos MIDI output.  Select channel 1 though channel 16 (Click on Channel 1, then Shift-Click on channel 16)
  10.     On the right list  under "uses instrument"  click on "Kronos (Prog)" or  "Kronos (Combi)".  A line should appear from the Kronos MIDI channels to the Kronos entry.
  11.     Click OK on the Preferences dialog.

sonar settings




PCG Program / Combi Usage Report Formatter

One of the great things about the Kronos is the huge number of programs and libraries that are available. The related downside is the shortage of program banks to store them.
Many of us filled all internal program banks years ago. Korg was unwilling to make any improvements in program bank storage, so for a long-time Kronos owner, loading new banks and libraries feels like playing this puzzle:
Puzzle


The excellent PCG Tools program by Michel Keijzers can generate reports of used programs (among many other functions). While very handy and detailed, the large report is not ideal for quickly answering the question "What can I delete or overwrite without breaking something else?  

I developed some post-processing scripts to help this process. It is a Windows command-line process built around a Perl script for much of the text formatting, and a Windows executable to create the usage data for Combi's by Setlists.

The output is in text files.

The Used Program list (short form - providing only the ID of the Combi  or Setlist slot referencing the program):

...
I-A051  : NIACIN Wah (Pitchbend)   UsedBy: I-A004,005/25,

I-A054  : CX-3 Organ 888 SW1 V2    UsedBy: I-A050,005/4,
I-A055  : MOD-7 E.Piano Pad SW1    UsedBy: I-A044,005/8,
I-A056  : Piano Wire SW1           UsedBy: I-B027,I-C001,I-C023,I-D059,I-D069,005/16,
I-A060  : Custom Clav Knob5_6      UsedBy: I-A078,I-B023,I-B033,
I-A061  : VectorianBellscape SW1_2 UsedBy: I-E031,005/17,
I-A063  : The Mist Singing Softly  UsedBy: I-A118,I-E111,U-G033,U-G036,U-G096,
...

The Used Program list (long  form - providing Combi  or Setlist slot ID and names referencing the program):

...
I-A051  : NIACIN Wah (Pitchbend) 
          I-A004 Organic Niacinism
          Setlist 005/25 Preload Set List / CX-3
I-A054  : CX-3 Organ 888 SW1 V2  
          I-A050 Funky Drawbars
          Setlist 005/4 Preload Set List / CX-3
I-A055  : MOD-7 E.Piano Pad SW1  
          I-A044 Tine E.P. & Pan Pad(EP1)
          Setlist 005/8 Preload Set List / MOD-7
I-A056  : Piano Wire SW1         
          I-B027 Massssssive Pad
          I-C001 Electus Grandus
          I-C023 Chasing Vector SW1
          I-D059 AtmosphereThingSweep Rbn
          I-D069 Tangerine Skies
          Setlist 005/16 Preload Set List / AL-1

...

The Unused Program list :

...
I-A075  : TB Rez Square            Unused
I-A077  : Darkside X-Bass          Unused
I-A094  : 5th World Stab           Unused
I-A096  : Porta Stab -Y VJS        Unused
I-A110  : Transformer Lead VJS_Kn6 Unused
I-A122  : TechnoMix Control =C2=   Unused
I-B003  : Bright Mono Piano        Unused
I-B007  : Classic Piano Knob6      Unused
...

The Used Combi  list (short form - providing only the Setlist bank/slot referencing the Combi):

...
I-A048  : ZERO G Pianoforte        UsedBy: 001/1,
I-A055  : Orchestral Woodwinds     UsedBy: 006/14,008/14,
I-A062  : Reminiscing.....         UsedBy: 001/0,
I-A064  : Piano & Constant Voices  UsedBy: 001/11,
I-A065  : Orange Ninja Split       UsedBy: 001/23,001/25,
I-A080  : G.Piano-Stack 1          UsedBy: 001/4,
I-A092  : Guardians of Light o7    UsedBy: 000/26,006/27,007/26,008/27,
I-B000  : California Phase Shifter UsedBy: 001/10,005/20,
I-B027  : Massssssive Pad          UsedBy: 001/36,

...

The Used Combi list (long  form - providing Setlist bank/slot and setlist bank/slot names referencing the Combi):

...
U-F033  : I'm Down  <-3>         
          Setlist 003/13 Abbey Road 01 / 
          Setlist 003/66 Abbey Road 01 / 
          Setlist 003/117 Abbey Road 01 / 
U-F034  : Yellow Sub             
          Setlist 003/43 Abbey Road 01 / 
          Setlist 003/82 Abbey Road 01 / 
U-F035  : In My Life harpsi      
          Setlist 003/70 Abbey Road 01 / In My Life
          Setlist 003/87 Abbey Road 01 / In My Life
          Setlist 003/116 Abbey Road 01 / In My Life
U-F036  : Octopus Garden         
          Setlist 003/113 Abbey Road 01 / 
...


The Unused Combi  list :

...
I-A075  : TB Rez Square            Unused
I-A077  : Darkside X-Bass          Unused
I-A094  : 5th World Stab           Unused
I-A096  : Porta Stab -Y VJS        Unused
I-A110  : Transformer Lead VJS_Kn6 Unused
I-A122  : TechnoMix Control =C2=   Unused
I-B003  : Bright Mono Piano        Unused
I-B007  : Classic Piano Knob6      Unused
...


The final format I find the most useful - an  ASCII graphical presentation of usage. The idea is to quickly identify areas where programs could be consolidated or re-organized.

ASCII Chart of Program Useage for t_180701_usage_output.csv
Key:    "*" Prog referenced by a Combi or Setlist   "_" Non-Init Prog Unreferenced   " "  Init Program
--------------------------------------------------------------
     0                               32                               64                               96                              127
I-A |*********_*__******___**_**_*_*_|____**____*_**___*_*__***___**_*|*****_***_*_*_****************_*|_*************_***********_*****
I-B |***_***_***__**_***__****__***_*|**************_********_***_****|*****_**__****__*_*_********__**|********************************
I-C |********************************|*******************_************|****__**************************|**_********************_********
I-D |*********_*****_*************_**|********_*******_********_******|********__**************_*******|*****************_**************
I-E |*_******************************|**********_*****************_*_*|***__************_********_*****|*___********__********_****__*__
I-F |*_***__***___*_*_*___***_*_*___*|****_******_**_**_*******__*_*_*|*****_**_***********************|*****************_**************
U-A |*******__***___*****___*********|*****__***___*__*_***_*_***_***_|__*____***_*_*_*_*______*_**_*_*|***************_*__***__**___*__
U-B |********************************|****************************_**_|********************************|*********__*****_**********_****
U-C |*******__*********__**********__|******__************************|***********************_****____|__****_*_**_*___******_______*_*
U-D |_*__****___*_*_______*__**_*___*|***______*_*__***_*_**___*____**|*__*_***__****_****__**__*__*__*|***_***____**_____*_*__*_**____*
U-E |***_*___***_*______*___*__*__***|________________*________**____*|___**__**_*____***___*_***_*____|*__*_**________**********_*___**
U-F |______*_*_*_____*___***_**__*__*|*_*_____*_***_*_*__*______*_____|___*______*_______**_*______*___|______*___________*____*________
U-G |*_______________________________|________________________________|_______________                 |                               
U-AA|*_*_____*___*_*_*__ __ __ _ _ _ |_____ __ *__  ___ __________ __*|_     ___ _  ___________________|_______ ________**_____________*
U-BB|________________________________|_____*__________________________|___________________*______*_____|___*__*______*__________________
U-CC|_____*___*_***__**______________|_________________*____________  |        _*__*___________________|_*__________*___________________
U-DD|******_******_*_*____***_______*|_*____*_______________*________*|____*_*_____________*____*______|__________________*_***______***
U-EE|______*_________________________|________________________________|_____*_________*__*_____________|___________*                   
U-FF|_****_*********_*******_***___**|*                            *  |                                |    _                          _
U-GG|*_*__***_*_* ***________________|__****_*_**_____**___*_**__*__*_|______**_****_*******_**        |                             ___


ASCII Chart of Combi Useage for t_180701_usage_output.csv
Key:    "*" Combi referenced by a Setlist   "_" Non-Init Combi Unreferenced   " "  Init Combi
--------------------------------------------------------------
     0                               32                               64                               96                              127
I-A |*_**_****_____*____*____________|__________*____**______*______*_|**______________*___________*___|________________________________
I-B |*__________________________*_*__|___________*____________*__*_*__|*___**_____*_____*___*_____*____|_____________________*_____*____
I-C |_*______________**______________|____*______*_*_______________**_|_____*____*____*__________*_____|___________*___________________*
I-D |_____________________________*__|__*_____________________________|____**____________*____________*|*                              
I-E |________________________________|___*__________*_________________|________________________________|________________________________
I-F |                                |                                |                                |                               
I-G |____________________________  *_|______                          |                                |                               
U-A |                                |                                |                                |                               

U-B |________________________________|________________________________|_________                       |                               
U-C |__                              |                                |                                |                               
U-D |________________________________|                                |                                |                               
U-E |______________                  |                                |          ____                  |                               
U-F |******_*****__**_******_*******_|******                          |                                |                               
U-G |*****************_**______**_***|***_****_**___*_*_**************|**_***_**_********__*__*_*_*_**_|******_****_*******_**___******


Intructions:

Dowload the ZIP file here.  
    It contains: Process_Usage_Report.cmd,  PCGparseSetlist.exe, Kronos_Used_Unused_Programs.pl, README-Kronos_Used_Unused_Programs.txt
First extract this ZIP into the folder where you have your PCG files.
You should have Perl installed.      Perl 5.20-something should be fine.
You should have PCG Tools installed.

(Note: The following was developed and tested on Windows 10 64 bit, with Perl 5.22.1 and PCG Tools 3.0.0.   YMMV on different versions)

1) First, run PCG Tools, open PCG file, click on "Generate List..."

2) Generate Patch Report
    Patch is default report setting.
    Select "Comma Separated Values" output file format
    Edit report output path to folder where PCG files is located
    Set the output name to {pcgbase}_patch_output.csv. 
         For example, if your PCGfile is named "mypcgfile.pcg", the default filename will be mypcgfile_output.txt
         Change the patch report to include the word patch, like this "mypcgfile_patch_output.txt"
    Click Generate.  (note Excel will open. Just close it)

3) Generate Usage Report
    At the upper left of the List Generator dialog, Change List Type to "Program Usage List"
    It should still be selected, but verify "Comma Separated Values" is the output file format
    The path the the output folder should still be correct.
         Change the patch report to include the word usage, like this "mypcgfile_usage_output.txt"
    Click Generate.  (note Excel will open. Just close it)

4) Open a Command window (CMD.EXE) and change to the folder where your PCG file is located.
5) Run the commmand script:
    Process_Usage_Report.cmd mypcgfile
   
    Note:  Just use the bare filename of your original PCG file, no need to add .pcg suffix

The seven output files are generated in the same folder. Their names are appended based on the PCG file name:
  mypcgfile_usage_output.usedprog.txt
  mypcgfile_usage_output.longusedprog.txt
  mypcgfile_usage_output.unusedprog.txt
  mypcgfile_usage_output.usedcombi.txt
  mypcgfile_usage_output.longusedcombi.txt
  mypcgfile_usage_output.unusedcombi.txt
  mypcgfile_usage_output.ascii.txt

   
If you want to open the output files automatically for viewing, I recommend the free NotePad ++. Windows Notepad cannot open multiple files in tabs, so it is not used.





PCG Reference Changer List Generator

 PCGTools <https://www.kronoshaven.com/pcgtools/> has a useful feature for changing program references in Combi's and Setlists. This is needed when you have a set of Combis that are assuming a standard factory layout of the programs. If you're like me, you have extensively customized your program layout since running out of program banks over 10 years ago (see Usage Reporter above), so the "factory layout" is ancient history. PCGtools supports loading a file with the reference changes, but it can be tedious to create the file manually when it requires hundreds of entries. This script automates the process of creating the reference changer file. It reads the content listing of a PCG containing a bank of Combis that is using factory set references, and the patch listing of your current Kronos PCG to provide the current program locations.

The script will report if any of the programs referenced in the Combi bank do not exist in your current Kronos configuration. You can decide if you want to add those programs to your Kronos, or later manually edit the Combi to use a program that you do have.

The matching of the references is made by comparing program names. My personal convention is to save factory programs that I tweak with a new name, so I don't worry about a vastly modified program being matched as the original factory program. (PCGtools report generator does offer an optional CRC value, so you are free to modify the script confirm name matches as well as the CRC matching) 
 

Download the Python script file here.  

 Notes:  

The following assumes you're using Windows since PCGtools is on Windows, but Python is cross platform. It is tested with output listings from PCGtools 3.1.0.

Usage: Python Kronos_Ref_Changer-CCL.py <combi-pcg-list.txt> <my-current-pcg.txt>  <ref-changer-output.txt>
combi-pcg-list.txt --- Combi Content List (subtype Long), ASCII Table, List from PCG Tools of  Combi that needs references changed while Master File is set to PRELOADK2.PCG')
my-current-pcg.txt --- Patch List, ASCII Table, generated from PCG Tools from Kronos customized PCG saved from your Kronos
 
C:> python Kronos_Ref_Changer-CCL.py <combi-pcg-list.txt> <my-current-pcg.txt>  <ref-changer-output.txt>
 
The reference changer list should be created in the current directory as "ref-changer-output.txt"
 
Step 7: Open the PCG file of the Combi's you want to change references in PCGTools again (Make sure it is the only PCG file loaded for this step) 
Select one Combi, and click the "Timbres…" button. Look at the program references for the programs in the Timbre, and note them.
From the menu, Tools / Program Reference Changer / From File.  Select the file you just created "ref-changer-output.txt". Click OK, and there will be a progress bar as the reference are updated.
Now with the same Combi selected, click the "Timbres…" button. Ensure that the program references for the programs in the Timbre have changed.
Step 8: Save the modified Combi PCG to a new file using Save As…
Step 9:  Load the combis into your Kronos, and verify that the Timbre's reference the proper programs.

Example Output - Normal Run

C:\DEV\PythonCode>python Kronos_Ref_Changer-CCL.py c:\Kronos\K2_EnnE_combi-content_output.txt c:\Kronos\t2_230903_output.txt c:\Kronos\refchanger2.txt

Opening c:\Kronos\K2_EnnE_combi-content_output.txt and c:\Kronos\t2_230903_output.txt for read

Opening c:\Kronos\refchanger2.txt for output

Created Custom Combi programs used dictionary with  430  items

Created my library dictionary with  2492  items

 

0  do not exist

430  entries in refs
430  sorted entries in refs
430  unique entries in refs

Example Output - Some referenced programs are not present in Kronos

C:\DEV\PythonCode>python Kronos_Ref_Changer-CCL.py c:\Kronos\K2_EnnE_combi-content_output.txt c:\Kronos\t2_230827_output.txt c:\Kronos\refchanger1.txt
Opening 
c:\Kronos\K2_EnnE_combi-content_output.txt and c:\Kronos\t2_230827_output.txt for read
Opening 
c:\Kronos\refchanger1.txt for output
Created Custom Combi programs used dictionary with  430  items
Created my library dictionary with  2487  items

"DONKADrums" Key doesn't exist in my set
"Winter Vox Pad" Key doesn't exist in my set
"Hollywood Strings" Key doesn't exist in my set
"The Power & The Glory" Key doesn't exist in my set
"Electro Clash Bass" Key doesn't exist in my set
"Vaporization Pad" Key doesn't exist in my set
6  do not exist

430  entries in refs
430  sorted entries in refs
430  unique entries in refs