Using the spreadsheet from Chris of Arabia, hxpert32, some hacking, and a bit of Java code I whipped up, I have the full set of key names for all the kits for the DR-880. Thanks to Chris for his updated spreadsheet which helped me avoid typing the names of all the instruments!
If you're looking for the file, give this one a try. Please let me know if you run into issues - I've tested it with a variety of the kits, but I haven't tried and tested every kit name and instrument to be sure.
http://www.sendspace.com/file/u3n3gv - Complete DR-880 Instrument Def
For those interested in the process, here's how I approached it:
*** Warning - technical content follows ***
** Seriously - If you're not an engineer or hacker, there's nothing to see here. Please move along **
Since the DR-880 has the ability to "back up" it's settings to DR8 files, I reasoned that the UKIT.DR8 file (user kits) would have everything I wanted as long as my device was set to factory defaults (user kits mirror preset kits). So, I did a backup and copied out the DR8 files. Then, I used the DR-880 menus to change the first two kits (USER 001 and USER 002). The changes I made were intended to tell me data lengths and byte positions in the file. I changed only the first two patches (Kick1 and Kick2), and saved in various states (only changing Kick2, Only changing Kick1, changing both, etc). After each change, I'd re-backup and snag the UKIT.DR8 file for comparison purposes (to see what changed).
Using Hxpert32 (shareware), I created files out of just the Studio 1 parts so I could easily compare my changes. I used debug (Windows) to get a text representation of the bytes, and created simple text files for comparison. That let me see the bytes that were different between all the files (original, Kick1 changed, kick2 changed, etc).
Analysis revealed that there are 888 bytes in each kit. Those 888 bytes have a 12-byte text name (space padded), 4 bytes of termination and padding, and then 12-byte records for each note. The notes start at MIDI 35 and go up to 97.
Trial and error showed that at the beginning of each record, the first two bytes are the instrument ID (from 0 to 439), in LSB,MSB form - use (LSB & 0xff) + ( 256 + MSB ) + 1 for the value. If the LSB and MSB are both zero, then it's a gap - a skipped MIDI note.
My little JAVA class simply reads in the entire file to a bytearray (not elegant, but it's less than 200k and I have 8gb in 64bit) and parses each kit.
Lastly, I worked my Master.ins file manually to get all the DR-880 bits in. I then (after the fact) created the instrument definition file. So, if there are mistakes in the file that I uploaded, it's because that file came after I got everything working in Sonar. The core tough parts are definitely working - if something is broken in the .ins file, it's probably that a piece is just in the wrong place. Like we say in software ... "it works on my box". :-D
No warranty, and no whining. If it works for you, fantastic. If you have positive feedback, it's welcomed. If you're a hateful piece of poo that gleefully stamps out all traces of life, hope, and happiness - please keep your comments to yourself. If you correct the .ins file in some way that makes it more portable, I'd love to provide credit and upload a fix for everyone. Send me an e-mail to mborchestrations AT gmail DOT com.
Tks again to Chris
Marc