1
0
Fork 0

TMB: fix all instruments becoming pianos

This commit is contained in:
Sen 2025-09-03 21:25:56 +02:00
parent 114fbdfde1
commit c698a030eb
Signed by: sen
GPG key ID: 3AC50A6F47D1B722

View file

@ -169,25 +169,25 @@ typedef struct {
private static Instrument tmb_read_instr(byte[] data, int offset, boolean drum) {
Operator[] ops = new Operator[2];
int transpose = drum ? 0 : (int)((byte)data[11]);
int transpose = drum ? 0 : (int)((byte)data[offset + 11]);
for(int op = 0; op < 2; op++) {
boolean tremolo = (data[op+0] & 0x80) != 0;
boolean vibrato = (data[op+0] & 0x40) != 0;
boolean sustaining = (data[op+0] & 0x20) != 0;
boolean ksr = (data[op+0] & 0x10) != 0;
int mult = data[op+0] & 0x0f;
int attack = ((data[op+4] & 255) >> 4) & 0x0f;
int decay = data[op+4] & 0x0f;
int sustain = ((data[op+6] & 255) >> 4) & 0x0f;
int release = data[op+6] & 0x0f;
int waveform = data[op+8] & 0x07;
int ksl = ((data[op+2] & 255) >> 6) & 0x03;
int level = data[op+2] & 0x3f;
boolean tremolo = (data[offset + op+0] & 0x80) != 0;
boolean vibrato = (data[offset + op+0] & 0x40) != 0;
boolean sustaining = (data[offset + op+0] & 0x20) != 0;
boolean ksr = (data[offset + op+0] & 0x10) != 0;
int mult = data[offset + op+0] & 0x0f;
int attack = ((data[offset + op+4] & 255) >> 4) & 0x0f;
int decay = data[offset + op+4] & 0x0f;
int sustain = ((data[offset + op+6] & 255) >> 4) & 0x0f;
int release = data[offset + op+6] & 0x0f;
int waveform = data[offset + op+8] & 0x07;
int ksl = ((data[offset + op+2] & 255) >> 6) & 0x03;
int level = data[offset + op+2] & 0x3f;
ops[op] = new Operator(mult, level, waveform, attack, decay, sustain, release, tremolo, vibrato, sustaining, ksr, ksl, transpose, 0);
}
Instrument ins = new Instrument((data[10] >> 1) & 0x07, 0, data[10] & 0x01, ops);
Instrument ins = new Instrument((data[offset + 10] >> 1) & 0x07, 0, data[offset + 10] & 0x01, ops);
if(drum)
ins.setFixed(data[11] & 0x7f);
ins.setFixed(data[offset + 11] & 0x7f);
return ins;
}