From c698a030eb30506f48407f32a3193a108287f5ab Mon Sep 17 00:00:00 2001 From: Sen Date: Wed, 3 Sep 2025 21:25:56 +0200 Subject: [PATCH] TMB: fix all instruments becoming pianos --- .../main/java/client/audio/BankLoader.java | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/client/src/main/java/client/audio/BankLoader.java b/client/src/main/java/client/audio/BankLoader.java index eee3c2c1..8893afa4 100644 --- a/client/src/main/java/client/audio/BankLoader.java +++ b/client/src/main/java/client/audio/BankLoader.java @@ -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; }