Here's how I would try to decode the bytes: Make a MIDI on your Yamaha machine by doing a step recording using the CHD tab. Save a copy both before and after you "expand" it. At least one of them will have the XF chord events present. Make a note of what chords you entered, and analyze the data to find a pattern.
It's been a very long time since I experimented like this. I think what I was doing was using a spreadsheet tool to manually create and edit the meta events. Then "concatenating" (appending) multiple cells together and pasting text onto the end of the MIDI file. Definitely possible, but awkward.
As I wrote in my original post 15 years ago, building a tool that does this shouldn't be too hard for a skilled GUI programmer (which I am not!) Good luck!
Thanks so much for your thoughtful tips!
Yes, your method will work. It is a brute force approach to reverse engineer Yamaha’s XF Chord Events to match a control set of known Chords.
Someone with a lot of patience would be able to set up an Excel Spreadsheet matching up every known Chord on very Scale to the corresponding Yamaha XF Chord Meta Event.
Luckily by chance I found an elegant solution that will solve my problem.
While I was playing with GNMIDI 2.54, I decided to download the latest version 3.25.
I see that Gunter had made a ton of improvements. The one enhancement that stood out was the Chord Editor. This was the answer to my prayers.
I loaded an XF MIDI File into GNMIDI 3.25. Upon playback I could see the Chord Symbols recognized as PSR Meta Events.
Next, I deleted all the Chords.
Then I allowed the software to compute the Chords based on all 16 MIDI Channels except the drum track on Channel 10.
Surprisingly, the auto generated Chords almost exactly mimicked the original. There was just a few that were slightly off. I launched the Chord Editor which brought up a matrix with every row representing a Measure and every column representing a Beat within that Measure.
With this Grid View, it was very easy to locate any chord and double click to replace that with some other chord from a drop down list.
It was a breeze to get all the chords just right.
Moreover, the program lets you transpose to a more playable Key Signature while transposing all the Chords as well.
I played the modified XF MIDI file on a Yamaha CVP-609 Clavinova. The Chord symbols appeared on the display and the Style followed the Chord changes.
This is exactly what I was looking for.
This means I can scan any sheet music using SmartScore X Pro and export that to a Standard MIDI File.
I could load that SMF into GNMIDI 3.25 and allow it to compute the Chords and insert the Yamaha XF meta events. Altering any mismatched chord is a 2 click process.
The resulting XF-MIDI file can now be played back on any Yamaha Arranger. The Style Play will honor the Chord changes.
The cost of this program is 36 Euros (about $44). You can install this on 5 PCs and enjoy 2 years of free updates.
I think this is a fair price and I will buy this.http://www.gnmidi.com/
I still feel there is a golden opportunity for an App Developer to create a simple point and click Music Scanning program.
It would have to do 4 simple tasks.
Scan the image of the score sheet captured by your smartphone or tablet.
Translate the image into a MIDI File.
Read the Chord Symbols and create a new MIDI Track containing the notes of the chord.
Export the MIDI file.
This MIDI File, although not an XF-MIDI file, will still be able to work with all Arranger Keyboards from Korg, Roland, Yamaha and Casio.
The information on the Chord Track will trigger the Chord changes with the Arranger set to Fingered Mode.
All the music scanning apps already do steps 1, 2 and 4.
Someone has to figure out how to include step 3 and instantly become a runaway hit in the Arranger World.
Any Arranger would be able to play back the information from the thousands of Fake Books and faithfully follow the melody line and chord changes.
This makes music more accessible to the masses without having to learn how to read notes and play chords.