Wohlstand / OPN2BankEditor

A small cross-platform editor of the OPN2 FM banks of different formats (Downloads in README below)
GNU General Public License v3.0
42 stars 8 forks source link

Definitions of banks for XG and other standards #63

Closed jpcima closed 11 months ago

jpcima commented 5 years ago

It has these XG percussion banks. Some numbers disagree with the naming, with value off by 1.

Name MSB LSB
48 - Orchestra 000 048
26 - AnalogKit 000 025
25 - ElectroKit 000 024
2 - StandardKit2 000 001

In contrast, this is the data I collected from Sekaiju's MU1000 instruments. On the left is MSB:Program with 0-indexing.

P127:048  "YAMAHA MU1000/MU2000 #049 SymphKit"
P127:025  "YAMAHA MU1000/MU2000 #026 AnalgKit"
P127:024  "YAMAHA MU1000/MU2000 #025 ElctrKit"
P127:001  "YAMAHA MU1000/MU2000 #002 StndKit2"

(in comparison, XG spec indicates MSB in 0-indexing, LSB constant at 0, and Program in 1-indexing)

jpcima commented 5 years ago

Actually my bad, it's just me as I try to figure out XG mappings. It's just the first naming inconsistent, but rest looks fine.

A question: why do we use 000 for MSB, as documentation indicates 127? what to map in place of the MSB 126? (SFX Kit 1/2, Techno Kit, etc..)

Wohlstand commented 5 years ago

Because the 127 is handled by synthesizer side and the LSB is mapped to patch change events when drums mode is on.

jpcima commented 5 years ago

I deduce that MSB=0 is XG 127, MSB=1 is XG 126, in context of libADLMIDI. My current work is to put together the database of patches. (made XG set from definitions of Sekaiju, and should be able to repeat the same for MS-GS, SC88, GM2) I will work to integrate this the editor, to facilitate the bank editing.

jpcima commented 5 years ago

I finished collecting the instrument set from Seikaju in one file. Included are MU1000 XG, Microsoft GS, Roland Sound Canvas, GM Level 2. It's a large file. https://gist.github.com/jpcima/0ace01fc2be138ea61119bf68421dafc

It converted the XG (127,120) to MSB 0, 1. It's a flat array for static data. At runtime, I think we can construct a hash map to accelerate lookups.

Wohlstand commented 5 years ago

I think, we need to append one another XG list: In the set of Cakewalk Sonar 1.3 I have the list of instruments which is matching the SYXG50 and MU2000 isn't matching by some set, I have checked out... I'll append the files from Sonar where those names are defined... default.txt

jpcima commented 5 years ago

I'll check the set of differences. For now I posted my generator program used. https://github.com/jpcima/gm-xg-gs The ini library has ability to read these except for heading parts like .Instrument Definitions and others. It's identical format so this should be readable.

Wohlstand commented 5 years ago

Sonar's spec is similar, so, it's need to chop the XG part from this Sonar's dump and put as "syxg50.ins"

jpcima commented 5 years ago

Missing instruments are 0:0 XG percussions.

jpcima commented 5 years ago

No instruments missing, I did actually add these. What misses is possibly:

freq-mod commented 5 years ago

Hmmm... When starting editor with or without loaded bank, blank entries are displayed as "+fireball" for melodic instruments and "bell tree" for percussion. edit shit

jpcima commented 5 years ago

Fixed by #66, I believe. Tried the build artifact under Appveyor.

freq-mod commented 5 years ago

That fixed this one, thanks!

Wohlstand commented 11 months ago

Closing as completed/abandoned.