Structure of the LiveSet RDS-File
28 Dec 2012, 19:14Hi all,
would anyone be interested in some reverse engineering on the structure of the LiveSet RDS-File? As I understand, Roland does not intend to lay open the data structure - so maybe we have to take things into our own hands. After all, we purchased these expensive machines and should not be prevented from operating them at their full potential...
If we could find out a little more about the structure it might well be possible to create a RDS-Librarian software that would allow swapping and storing (and sharing) individual LiveSets. It might also open a possibility of replacing (some of the less favorable) quick access "preset" SN-Pianos, since their data is also contained within the file and could therefore be manipulated.
I did a little bit of number crunching today by means of a crude hex-editor and -comparer and found some basic structures, that might help further exploration (These findings probably only apply to firmware versions >= 2.0):
File size is constant 561762 bytes
Contents: 260 blocks of each 2160 bytes + 162 bytes of footer
Data of LiveSet 001 starts at file offset 0x00000
Data of LiveSet 200 ends at file offset 0x6977f
From file offset 0x69780 there are 60 further 2160-byte-records for the SN Piano Presets
After this follows the footer of 162 bytes (probably containing some general system settings), closing with the firmware version ("RD-700NXV02.000") and appearently a 2 byte checksum at the end.
From making some parameter changes and comparisons between the contents of the file I was able to identify a few positions, where certain parameters are stored within each 2160 byte record. Finding out the whole parameter set and dependencies still seems to be a long way to go (any volunteers?). For a next shot I would be happy to find out:
1.) How and at what offsets the LiveSet names are encoded and
2.) How the checksum at the file end is calculated (MD5, CRC, simple parity, ...)
With this information, it would be possible to create a simple librarian application.
Who would like to join the effort?
would anyone be interested in some reverse engineering on the structure of the LiveSet RDS-File? As I understand, Roland does not intend to lay open the data structure - so maybe we have to take things into our own hands. After all, we purchased these expensive machines and should not be prevented from operating them at their full potential...
If we could find out a little more about the structure it might well be possible to create a RDS-Librarian software that would allow swapping and storing (and sharing) individual LiveSets. It might also open a possibility of replacing (some of the less favorable) quick access "preset" SN-Pianos, since their data is also contained within the file and could therefore be manipulated.
I did a little bit of number crunching today by means of a crude hex-editor and -comparer and found some basic structures, that might help further exploration (These findings probably only apply to firmware versions >= 2.0):
File size is constant 561762 bytes
Contents: 260 blocks of each 2160 bytes + 162 bytes of footer
Data of LiveSet 001 starts at file offset 0x00000
Data of LiveSet 200 ends at file offset 0x6977f
From file offset 0x69780 there are 60 further 2160-byte-records for the SN Piano Presets
After this follows the footer of 162 bytes (probably containing some general system settings), closing with the firmware version ("RD-700NXV02.000") and appearently a 2 byte checksum at the end.
From making some parameter changes and comparisons between the contents of the file I was able to identify a few positions, where certain parameters are stored within each 2160 byte record. Finding out the whole parameter set and dependencies still seems to be a long way to go (any volunteers?). For a next shot I would be happy to find out:
1.) How and at what offsets the LiveSet names are encoded and
2.) How the checksum at the file end is calculated (MD5, CRC, simple parity, ...)
With this information, it would be possible to create a simple librarian application.
Who would like to join the effort?