Version 3.4.0: Edit tab (edit list, large subtitle, replacements with effects and presets), Sounds tab only browses, ackit fx (pedalboard + own reverb) and replace --fx, first Linux build, catalog without a mod package

This commit is contained in:
2026-10-28 13:54:12 +01:00
parent a706dae419
commit 6de470174e
36 changed files with 2872 additions and 278 deletions

View File

@@ -44,7 +44,15 @@ def smoke_test(game_dir=None, report=None):
ws = Workspace(Game(gd), store_root=os.path.join(td, "store"))
s = next(x for x in ws.catalog.sounds if x.group == "Speech" and 1.0 < x.seconds < 4.0)
x, sr = audio.decode_wem(ws.original_bytes(s))
wem, info = ws.prepare(s, x[::-1].copy(), sr)
from ackit import fx # effects (pedalboard) on the way, as the Edit tab does
st = fx.defaults()
for k in ("pitch", "eq", "reverb"):
st[k]["on"] = True
st["pitch"]["shift"] = -3.0
y = fx.render(x[::-1].copy(), sr, st, s.channels)
print("effects OK: %s (pedalboard %s), %.2f s -> %.2f s"
% (fx.summary(st), __import__("pedalboard").__version__, len(x) / sr, len(y) / sr))
wem, info = ws.prepare(s, y, sr)
out = os.path.join(td, os.path.basename(ws.wad_path(s)))
inject(ws.wad_path(s), {s.target: wem}, {s.target: ws.limit(s)}, out_path=out)
assert read_target(out, s.target) == wem