TMB: fix all instruments becoming pianos
This commit is contained in:
parent
114fbdfde1
commit
c698a030eb
1 changed files with 15 additions and 15 deletions
|
@ -169,25 +169,25 @@ typedef struct {
|
||||||
|
|
||||||
private static Instrument tmb_read_instr(byte[] data, int offset, boolean drum) {
|
private static Instrument tmb_read_instr(byte[] data, int offset, boolean drum) {
|
||||||
Operator[] ops = new Operator[2];
|
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++) {
|
for(int op = 0; op < 2; op++) {
|
||||||
boolean tremolo = (data[op+0] & 0x80) != 0;
|
boolean tremolo = (data[offset + op+0] & 0x80) != 0;
|
||||||
boolean vibrato = (data[op+0] & 0x40) != 0;
|
boolean vibrato = (data[offset + op+0] & 0x40) != 0;
|
||||||
boolean sustaining = (data[op+0] & 0x20) != 0;
|
boolean sustaining = (data[offset + op+0] & 0x20) != 0;
|
||||||
boolean ksr = (data[op+0] & 0x10) != 0;
|
boolean ksr = (data[offset + op+0] & 0x10) != 0;
|
||||||
int mult = data[op+0] & 0x0f;
|
int mult = data[offset + op+0] & 0x0f;
|
||||||
int attack = ((data[op+4] & 255) >> 4) & 0x0f;
|
int attack = ((data[offset + op+4] & 255) >> 4) & 0x0f;
|
||||||
int decay = data[op+4] & 0x0f;
|
int decay = data[offset + op+4] & 0x0f;
|
||||||
int sustain = ((data[op+6] & 255) >> 4) & 0x0f;
|
int sustain = ((data[offset + op+6] & 255) >> 4) & 0x0f;
|
||||||
int release = data[op+6] & 0x0f;
|
int release = data[offset + op+6] & 0x0f;
|
||||||
int waveform = data[op+8] & 0x07;
|
int waveform = data[offset + op+8] & 0x07;
|
||||||
int ksl = ((data[op+2] & 255) >> 6) & 0x03;
|
int ksl = ((data[offset + op+2] & 255) >> 6) & 0x03;
|
||||||
int level = data[op+2] & 0x3f;
|
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);
|
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)
|
if(drum)
|
||||||
ins.setFixed(data[11] & 0x7f);
|
ins.setFixed(data[offset + 11] & 0x7f);
|
||||||
return ins;
|
return ins;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue