genmidi: Add tune= for setting fine tune field.

The fine tuning field was previously being hard-coded to the value of
128 with no option to change it. DMXGUS in particular makes use of this
field to tune individual instruments, so let's add proper support for
it.
This commit is contained in:
Simon Howard 2023-06-24 00:46:52 -04:00
parent f1c7a44af0
commit 276118107b
2 changed files with 5 additions and 3 deletions

View file

@ -78,7 +78,7 @@ def encode_instrument(instrument):
else: else:
fixed_note = 0 fixed_note = 0
header = struct.pack("<hBB", flags, 128, fixed_note) header = struct.pack("<hBB", flags, 128 + instrument.tune, fixed_note)
return header + instr1_data + instr2_data return header + instr1_data + instr2_data
@ -149,7 +149,8 @@ def decode_instrument(data, name):
fixed_note = None fixed_note = None
return Instrument( return Instrument(
voice1, voice2, off1=offset1, off2=offset2, note=fixed_note voice1, voice2, off1=offset1, off2=offset2, note=fixed_note,
tune=finetune - 128
) )

View file

@ -56,7 +56,7 @@ def load_instrument(filename):
class Instrument: class Instrument:
def __init__(self, file1, file2=None, off1=0, off2=0, note=None): def __init__(self, file1, file2=None, off1=0, off2=0, note=None, tune=0):
self.voice1 = load_instrument(file1) self.voice1 = load_instrument(file1)
if file2 is not None: if file2 is not None:
@ -67,6 +67,7 @@ class Instrument:
self.fixed_note = note self.fixed_note = note
self.offset1 = off1 self.offset1 = off1
self.offset2 = off2 self.offset2 = off2
self.tune = tune
NullInstrument = Instrument("dummy.sbi") NullInstrument = Instrument("dummy.sbi")