#!/usr/bin/env python3 """Every BGM bank's sub-wave structure: count, bytes, PsuedoBytesPerSec, seconds. Static, disc-only. See docs/re/structures/bgm-two-stems.md.""" import sys, struct sys.path.insert(0,"/work/Syplheed-Reborn/tools/re-capture") exec(open("/work/Syplheed-Reborn/tools/re-capture/slb_segment_phase.py").read().split("def cmd_phases")[0]) pak=Pak("/work/sylph_extract/dat/sound.pak") def bps(b, riff_at): # PsuedoBytesPerSec at RIFF+0x20 (u32 LE), SampleRate at +0x24 return struct.unpack_from("5s} per-wave (bytes, bytes/s, Hz, seconds)") same=0 for name,k,ds in rows: txt=" | ".join(f"{d:8d} {pb:6d} {sr:5d} {sec:7.2f}s" for d,pb,sr,sec in ds) eq = len(ds)==2 and abs(ds[0][3]-ds[1][3])<0.05 same += eq print(f"{name:14s} {k:5d} {txt} {'EQUAL-LENGTH' if eq else ''}") print(f"\n{len(rows)} BGM banks; {same} are exactly two waves of equal duration")