ltgcgo / octavia

🎻 Event-driven multi-standard MIDI state-tracking library.
https://gh.ltgc.cc/octavia/
GNU Lesser General Public License v3.0
40 stars 6 forks source link

Incorrect voice handling under X5D(R) and 05R/W mode #51

Open PoneyClairDeLune opened 1 month ago

PoneyClairDeLune commented 1 month ago

Bank selection

MSB LSB PC. Bank
0 0 0~99 Bank A (RAM, preset, PrgA/PrgB)
1~55, 56, 57 any 0~127 Bank G (ROM, preset, GM-b)
58~61 any any Timbre off
62 any any GM drum kits (kDrm)
63~127 any any Timbre off
# PC kDrm
1 0 GM Kit
2 16 Power Kit
3 25 Analog Kit
4 32 Jazz Kit
5 40 Brush Kit
6 64 Percussion Kit
7 24 Dance Kit
8 48 Orchestra Kit
PC. kDrm
0 Kit 1
16 Kit 2
24 Kit 7
25 Kit 3
26 Kit 7
32 Kit 4
40 Kit 5
48 Kit 8
56 Kit 1
64 Kit 6
72 Kit 1

Initialization

Initialization happens when power turns on, when "GM System On" is received, and when "Set to GM" is executed (SysEx unknown). cc0 for channel 10 is set to 62, while all other 15 channels have cc0 set to 56.

Extended Multi Setup SysEx

Byte at index 0 (1st byte) sets program number (0~99 for Bank A, 0~127 for Bank G melodic, 128~135 for Bank G drums). Bit 6 and bit 7 on byte at index 10 (11th byte) defines if the voice uses Bank A (0x00??????) or Bank G (0x01??????).

PoneyClairDeLune commented 1 month ago

Progress

Related: #28 #50