Korg Forums Forum Index Korg Forums
A forum for Korg product users and musicians around the world.
Moderated Independently.
Owned by Irish Acts Recording Studio & hosted by KORG USA
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Kronos SW Developers - user-created 'programmers ref'

 
Post new topic   Reply to topic    Korg Forums Forum Index -> Computer Programmers – Software Developers
View previous topic :: View next topic  
Author Message
timg11
Senior Member


Joined: 04 Jun 2008
Posts: 459

PostPosted: Sat Nov 17, 2012 6:26 pm    Post subject: Kronos SW Developers - user-created 'programmers ref' Reply with quote

I am starting this thread to engage the community of Kronos owners who are also software developers. Sorry for the large post.
First, I must give Korg a lot of credit for providing the MIDI Implementation data, which is very useful and accurate in the areas that are covered. But if you have actually implemented software, you have probably found some details that are missing or confusing. I propose that we work together to develop a more comprehensive "Programmers Reference" for the Kronos.

At this point, I have personally only worked closely with the Combi (CombiAndSongTimbreSet.txt) and the Effects (Effect.txt) documentation. By making this a community effort we can all contribute what we learn from our individual “deep dives” into any particular area of the Kronos.

I have a few files to contribute to start the project. First is a spreadsheet that shows how the effects-specific parameter data fits into the Combi data structures. This data is represented as * in the Korg document. Although the largest number of bytes defined in any Kronos effect is currently 25, 64 bytes are reserved for the 12 IFXs and 2 each MFX and TFX. It took me a while to figure out how those 64 byte blocks fit into the * gaps in the Combi specification, since they appear to be different sizes. My file KronosCombiDataStructures.xlsx makes it clearer. On the 2nd tab there is a mapping of the offsets in the Combi file to the data structures within and their sizes. I have also included a set of data structures that correspond to the Combi. I used the spreadsheet to make sure my data structures matched exactly to the almost 8000 bytes in a Combi.

I can't guarantee everything is correct, but they are accurate enough to enable my program to convert Triton Studio Combis into Kronos Combis (except for the programs themselves and arpeggiator / Karma).

I have also explored parameters a bit. Many Combi parameters are defined in the CombiAndSongTimbreSet.txt (in the "TYP|SOC|SUB|PID|IDX" columns at the right). However, there are some that are missing. For example, the effects parameters are not documented.

In the process of turning the files like CombiAndSongTimbreSet.txt into data that I can use in my programs, I have developed some Perl scripts to parse those files. One parses the Effect.txt file and outputs CSV format (such as 1,0,8,7,0,"St. Amp Simulation","Amplifier Type","00~02","SS~6L6") that I can easily load (KorgKronosEffect.pl). I have also created one to parse out the parameter information (KorgParameterMapExtract.pl). These took a while to write and debug. If you need something like this, you are free to adapt them to your own purposes. Please upload your modifications so we can all benefit.

What is still needed to be done from the community, to better document the Kronos?

One important area is to understand and define the _meaning_ of parameters that are not simple integer types (like a 0-127 for volume). An example is Banks. The values 00..0x1E map to INT-A through U-GG. There are 14 banks, but the range is 0-30 decimal. How do they map? It turns out that banks are documented in KRONOS_MIDI_SysEx.txt, but many other enumerated types are not documented. Another example is frequency ranges used in the EFX. While some are simple integers, others use a varying step size of hertz/parameter unit to approximate an exponential mapping. Other than incrementing through all the values on the Kronos and observing the parameter change messages, I don't know how to determine mapping of parameter value to frequency. Even numeric values do not always map directly to the parameter value. LFO frequency, portamento or envelope times are examples when the parameter value has a relation to the actual value that is not a 1 to 1 mapping.

This would be an excellent area for those who have figured these things out to share your findings.

The area of the Programs is also wide open for contribution. Looking at Prog_HD-1.txt, there are a many data structures that are common to Combis, but some are not. Understanding the MS Bank UUId and MS Numbering formats would be very helpful information. The EXi definitions are also unexplored territory for me.

Above and beyond the MIDI implementation, there is also the PCG file format which (as far as I know) not officially documented. Michel Keijzers has obviously done a lot of work to figure that out, but I can't speak for him on whether his is able and willing to share any of the details.

I should point out that I'm not suggesting reverse engineering the internals of the Kronos - I'm not that "brave". This effort is about working with the provided interfaces (MIDI and supported files) and enabling developers to create software to augment the functionality. My hope is that if we work together we can spend more time developing our software’s features and functions (and thus improving the Kronos), and spend less time on figuring out the necessary details.

Also, I don't expect people to post their source code. The useful information to be shared is in the data structures, or even simple text files describing particular parameter mappings or file formats. If you can share those, regardless of the language you program in, others can put the information to use, and save us all a lot of time and effort. By posting in this forum, it becomes a resource for all to use and build on.

I have created a page for related files, including the ones I mentioned above. There is an email link on that page that you can use to provide additional files that I will upload (or PM me here).

What do you think? Is this worthwhile effort? Will you help?
Back to top
View user's profile Send private message
Francois
Approved Merchant
Approved Merchant


Joined: 06 May 2003
Posts: 4854
Location: Northants - UK

PostPosted: Sat Nov 17, 2012 9:18 pm    Post subject: Reply with quote

Cannot help you out, but I applaud the idea.
_________________
 
Kronoscopie, tout sur le Kronos en français

http://www.kronoscopie.fr
Back to top
View user's profile Send private message Visit poster's website
Sharp
Site Admin


Joined: 02 Jan 2002
Posts: 18197
Location: Ireland

PostPosted: Sun Nov 18, 2012 4:29 pm    Post subject: Reply with quote

I take it you don't need me to upload anything now?

Sorry for the delay but I was about to start today on this.

Regards
Sharp
_________________
KORG Store - Irish Acts Irish Acts Online Store
Back to top
View user's profile Send private message Send e-mail Visit poster's website
michelkeijzers
Approved Merchant
Approved Merchant


Joined: 08 Feb 2007
Posts: 9113
Location: Netherlands

PostPosted: Mon Nov 19, 2012 11:43 am    Post subject: Reply with quote

I'm afraid I cannot help really, since I never really checked the MIDI implementation data itself. I use however those documents to analyze the PCG file format, which have a lot in common.

However, the PCG file format is proprietary and I cannot give much information about it, I had to sign a contract with Korg for that.

Btw, the order of the enumeration types is mostly equal as on the synth so you have to manually type it from the order on the synth itself.

If there are questions I might be able to answer them if possible, so I will put a notify on this thread Smile
_________________

Developer of the free PCG file managing application for most Korg workstations: PCG Tools, see https://www.kronoshaven.com/pcgtools/
Back to top
View user's profile Send private message Send e-mail Visit poster's website MSN Messenger
timg11
Senior Member


Joined: 04 Jun 2008
Posts: 459

PostPosted: Mon Nov 19, 2012 10:34 pm    Post subject: Reply with quote

Sharp wrote:
I take it you don't need me to upload anything now?

Sorry for the delay but I was about to start today on this.

Regards
Sharp


Sharp, I'm happy to host - it is no problem.

BTW, I recall that you are a software developer - do you have any information that you have discovered about the Kronos that you are able to share?
Back to top
View user's profile Send private message
Sharp
Site Admin


Joined: 02 Jan 2002
Posts: 18197
Location: Ireland

PostPosted: Tue Nov 20, 2012 12:34 am    Post subject: Reply with quote

I'm afraid I don't to be honest.
I can probably help with writing tools to remotely control the KRONOS, but I'm not able to do anything with their PCG file format.

If I can help anyway I will.

Regards
Sharp.
Back to top
View user's profile Send private message Send e-mail Visit poster's website
timg11
Senior Member


Joined: 04 Jun 2008
Posts: 459

PostPosted: Mon Apr 28, 2014 10:20 pm    Post subject: Reply with quote

This thread has been quiet since I started it a couple of years ago. I haven't had much time to devote to programming, but I have recently done a little work on PCG files. I documented my discoveries on the PCG File Format along the way. In case anyone ever wants a head start, I have uploaded the spreadsheet to my Kronos SW Dev page

Thanks to michelkeijzers for his help, and to daz for the information he posted back in 2010 (which is actually for the Oasys, but still very helpful).
Back to top
View user's profile Send private message
bmames00



Joined: 11 Jul 2014
Posts: 1
Location: Ohio

PostPosted: Fri Jul 11, 2014 1:08 am    Post subject: Reply with quote

I have developed a Python library I use for for controlling my Krome workstation via a web interface that I am willing to share. In the process, I have corrected numerous errors in the MIDI Implementation chart published by Korg. I am running it on Linux with the intention of putting it onto a Raspberry Pi. The Python library is platform independent.
_________________
Music is life
Back to top
View user's profile Send private message
timg11
Senior Member


Joined: 04 Jun 2008
Posts: 459

PostPosted: Sun Jul 13, 2014 6:53 pm    Post subject: Reply with quote

bmames00, thanks for chiming in. I thought there were more developers around, but this thread has been pretty quiet. I've been off working on other things for a while as well, but am always interested in adding to the available information for programmers.
I'd be happy to add your information to my site linked above. PM me and we'll figure out a way to transfer the files.
Back to top
View user's profile Send private message
michelkeijzers
Approved Merchant
Approved Merchant


Joined: 08 Feb 2007
Posts: 9113
Location: Netherlands

PostPosted: Sun Jul 13, 2014 8:25 pm    Post subject: Reply with quote

I probably can help with questions regarding the chunk information for certain PCG file formats.

Also there are some software developers for making software for Korg synths, but not many, and some are more active than others, or at least variable over longer time.
_________________

Developer of the free PCG file managing application for most Korg workstations: PCG Tools, see https://www.kronoshaven.com/pcgtools/
Back to top
View user's profile Send private message Send e-mail Visit poster's website MSN Messenger
timg11
Senior Member


Joined: 04 Jun 2008
Posts: 459

PostPosted: Thu Jul 24, 2014 1:38 am    Post subject: Reply with quote

The Korg Python library provided by bmames00 is now available at my Korg Kronos - Software Developers User Community Resources page

I have not yet tried it myself. though.
Back to top
View user's profile Send private message
scottgblood
Full Member


Joined: 25 Nov 2014
Posts: 119

PostPosted: Wed Dec 03, 2014 6:27 pm    Post subject: Reply with quote

timg11 wrote:
This thread has been quiet since I started it a couple of years ago. I haven't had much time to devote to programming, but I have recently done a little work on PCG files. I documented my discoveries on the PCG File Format along the way. In case anyone ever wants a head start, I have uploaded the spreadsheet to my Kronos SW Dev page

Thanks to michelkeijzers for his help, and to daz for the information he posted back in 2010 (which is actually for the Oasys, but still very helpful).


I haven't got my hands on the Kronos yet, waiting for my V2 to be delivered, however once it comes, the first thing (after my initial play) I plan on doing is writing software for this beast.

Its quite common that the most required functionality is some form of on screen editor that is free, so I will be fighting my way through this.

Am kind of hoping korg will assist with this, but if necessary I will work out any formats I have to and post the results on here.

In the mean time if anyone needs something writing for the .net framekwork (yes I know it isn't the best choice of languages but I am DNA's \ Contracted not to write in other languages at the moment cause of my job) I am happy to assist.

Thanks.
_________________
Scott
Music Programming Geek in c++, c# and asm
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Korg Forums Forum Index -> Computer Programmers – Software Developers All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group