From 13df5cd47bfcb1878857bcc761da9d44b08cc649 Mon Sep 17 00:00:00 2001 From: Simon Howard Date: Wed, 4 Jan 2012 04:18:06 +0000 Subject: [PATCH] genmidi: Detect null instruments when dumping. --- lumps/genmidi/dumpgenmidi | 49 +++++++++++++++++++++++++++------------ 1 file changed, 34 insertions(+), 15 deletions(-) diff --git a/lumps/genmidi/dumpgenmidi b/lumps/genmidi/dumpgenmidi index 7472561e..df36a059 100644 --- a/lumps/genmidi/dumpgenmidi +++ b/lumps/genmidi/dumpgenmidi @@ -34,33 +34,52 @@ # and output a config to stdout. # +import os +import sys + import genmidi import sbi_file -import sys import midi +import sbi_file -def print_instr_def(filename, filename2, instr): - result = "Instrument(\"%s\"" % filename +def is_null_voice(voice_data): + for f in sbi_file.FIELDS: + if voice_data[f] != 0: + return False + + return True + +def instr_to_str_def(filename, filename2, instr): + if is_null_voice(instr.voice1): + return "NullInstrument" + + args = [ "\"%s\"" % filename ] if instr.voice2 is not None: - result += (", \"%s\"" % filename2) + args.append("\"%s\"" % filename2) if instr.fixed_note is not None: - result += (", note=%s" % midi.def_for_note(instr.fixed_note)) + args.append("note=%s" % midi.def_for_note(instr.fixed_note)) if instr.offset1 != 0: - result += (", off1=%i" % instr.offset1) + args.append("off1=%i" % instr.offset1) if instr.offset2 != 0: - result += (", off2=%i" % instr.offset2) + args.append("off2=%i" % instr.offset2) - result += ")" + return "Instrument(%s)" % (", ".join(args)) - print "\t%s," % result +def print_instr_def(filename, filename2, instr): + print "\t%s," % instr_to_str_def(filename, filename2, instr) def dump_instrument(filename, filename2, instr): - sbi_file.write(filename, instr.voice1) + + if is_null_voice(instr.voice1): + return + + sbi_file.write(os.path.join("instruments", filename), instr.voice1) if instr.voice2 is not None: - sbi_file.write(filename2, instr.voice2) + sbi_file.write(os.path.join("instruments", filename2), + instr.voice2) if len(sys.argv) != 2: print >> sys.stderr, "Usage: %s " % sys.argv[0] @@ -75,8 +94,8 @@ print "INSTRUMENTS = [" for i in range(len(main_instrs)): instr = main_instrs[i] - filename = "instruments/instr%03i.sbi" % (i+1) - filename2 = "instruments/instr%03i-2.sbi" % (i+1) + filename = "instr%03i.sbi" % (i+1) + filename2 = "instr%03i-2.sbi" % (i+1) dump_instrument(filename, filename2, instr) print_instr_def(filename, filename2, instr) @@ -86,8 +105,8 @@ print "PERCUSSION = [" for i in range(len(percussion)): instr = percussion[i] - filename = "instruments/perc%02i.sbi" % (i+35) - filename2 = "instruments/perc%02i-2.sbi" % (i+35) + filename = "perc%02i.sbi" % (i+35) + filename2 = "perc%02i-2.sbi" % (i+35) dump_instrument(filename, filename2, instr) print_instr_def(filename, filename2, instr)