From: Eric A. W. <ew...@cc...> - 2004-08-14 21:42:08
|
> Take this dump, for example: > > 720 Sysex, leng=10 Id is Yamaha, port 0, Reverb type HALL2: data 1 > Dump = <\0xf0\0x43\0x10\0x4c\0x02\0x01\0x00\0x01\0x01\0xf7> > > which is from a Yamaha demo fizzy.mid. After 0x02,0x01,0x00, MSB is 0x01 > and LSB is 0x01. I don't see any code in either "first method" or > "second method" that will parse that correctly. Maybe I'm just missing > it, but I don't see it. In terms of your code, I'm looking for something > like > xg_reverb_type_msb = val[6]; > xg_reverb_type_lsb = val[7]; > > I have many, many examples of midis with dumps in this form. I've gone through > most all my XG midis and haven't found even one example of a separate LSB > event. Ah, I understand now. The "second method" was arrived at by reverse engineering the sysex events that were causing me problems, since at the time I didn't quite grasp what the XG spec was trying to tell me. I see now that it generalizes into the "Parameter Change" event, using the values in Table 3-1 of the XG spec. Looking at that table, the dump you gave does indeed correspond exactly to Reverb MSB and LSB. I'll fix the appropriate code in readmidi.c for handling non-bulk events, so that it correctly detects and handles Parameter Change events. -Eric |