#!/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 os, sys, struct from disc import disc_root _SD = os.path.dirname(os.path.abspath(__file__)) sys.path.insert(0, _SD) exec(open(os.path.join(_SD, "slb_segment_phase.py")).read().split("def cmd_phases")[0]) pak=Pak(disc_root() + "/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")