From aefdc8d0edad5d77d73ac40d8002363e12da00da Mon Sep 17 00:00:00 2001 From: Chris Xiong Date: Tue, 9 Aug 2022 02:56:10 -0400 Subject: fures, ostendite se! --- wave_stats.py | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 wave_stats.py (limited to 'wave_stats.py') diff --git a/wave_stats.py b/wave_stats.py new file mode 100644 index 0000000..26dd2dc --- /dev/null +++ b/wave_stats.py @@ -0,0 +1,64 @@ +# Part of the Fifteen-Thieves Project +# Chris Xiong 2020 +# License: Expat (MIT) +import sys +import os +import xv.util +import xv.amap + +wavecnt = [0] * 1024 +wavenames = [] + +def process_preset(t, is_rhy=False): + if is_rhy: + for rkey in range(0, 85): + for rtone in range(0, 4): + if t.value(f"sd_root.part[0].rhythm.rtone[{rkey}].rt_wmt[{rtone}].switch"): + try: + wavecnt[t.value(f"sd_root.part[0].rhythm.rtone[{rkey}].rt_wmt[{rtone}].wave_number_l")] += 1 + wavecnt[t.value(f"sd_root.part[0].rhythm.rtone[{rkey}].rt_wmt[{rtone}].wave_number_r")] += 1 + except IndexError: + pass + else: + for tone in range(0, 4): + if t.value(f"sd_root.part[0].patch.tmt.tmt_block[{tone}].tone_switch"): + try: + wavecnt[t.value(f"sd_root.part[0].patch.tone[{tone}].tn_wave.wave_number_l")] += 1 + wavecnt[t.value(f"sd_root.part[0].patch.tone[{tone}].tn_wave.wave_number_r")] += 1 + except IndexError: + pass + +if __name__ == "__main__": + print("loading address mapping...", flush=True, file=sys.stderr) + m = xv.amap.AddrMapTemplate("amaps/sd-80.amap") + t = xv.amap.create_addr_map_tree(m) + + print("loading wave names...", file=sys.stderr) + with open("data/sdwavelist","r") as f: + for l in f: + wavenames += [l.split('\t')[1].strip()] + + inst_dir = ["./data/patchparam/classical/", "./data/patchparam/contemporary/", "./data/patchparam/solo/"] + #inst_dir += ["./data/patchparam/enhanced/", "./data/patchparam/special_1/", "./data/patchparam/special_2/"] + + rhy_dir = ["./data/rhythmparam/classical/", "./data/rhythmparam/contemporary/", "./data/rhythmparam/solo/"] + #rhy_dir += ["./data/rhythmparam/enhanced/"] + + for i in inst_dir: + for fn in os.listdir(i): + mr = xv.util.load_memoryregion(os.path.join(i, fn)) + for addr, data in mr: + ra = xv.util.b7belist2int(addr) + t.data[ra:ra + len(data)] = data + process_preset(t) + + for i in rhy_dir: + for fn in os.listdir(i): + mr = xv.util.load_memoryregion(os.path.join(i, fn)) + for addr, data in mr: + ra = xv.util.b7belist2int(addr) + t.data[ra:ra + len(data)] = data + process_preset(t, True) + + for i, w in enumerate(wavenames): + print(f"{w.ljust(16)}{wavecnt[i + 1]}") -- cgit v1.2.3