chore: add .gitignore and batch generation script

This commit is contained in:
John Lightner 2026-04-13 16:52:32 -05:00
parent 38331ca59a
commit 87763e21db
2 changed files with 75 additions and 0 deletions

16
.gitignore vendored Normal file
View file

@ -0,0 +1,16 @@
# Vendored deps / envs
ace-step/
basic-pitch-env/
.cache/
*.venv/
__pycache__/
*.pyc
# User data
input/
output/
# Editor
.vscode/
.idea/
*.swp

59
batch_generate.py Normal file
View file

@ -0,0 +1,59 @@
"""Batch generation script — 100 outputs across instruments and parameter permutations."""
import subprocess
import sys
import itertools
import random
import os
BASE = os.path.dirname(os.path.abspath(__file__))
PYTHON = os.path.join(BASE, "ace-step", ".venv", "Scripts", "python.exe")
SCRIPT = os.path.join(BASE, "hum2inst.py")
INPUT = os.path.join(BASE, "input", "bum bum bum [2026-04-10 230403].wav")
OUTPUT = os.path.join(BASE, "output", "batch-bumbum")
instruments = ["piano", "guitar", "saxophone", "violin", "flute",
"cello", "trumpet", "organ", "marimba", "harmonica"]
# Parameter combos: (strength, guidance)
param_combos = [
(0.2, 5.0),
(0.3, 5.0), # our best default
(0.4, 5.0),
(0.3, 7.0),
(0.3, 3.0),
]
# 10 instruments x 5 param combos x 2 takes = 100 outputs
takes_per_combo = 2
count = 0
total = len(instruments) * len(param_combos) * takes_per_combo
print(f"Generating {total} outputs...")
for instrument in instruments:
for strength, guidance in param_combos:
seeds = [random.randint(0, 2**31 - 1) for _ in range(takes_per_combo)]
for seed in seeds:
count += 1
print(f"\n[{count}/{total}] {instrument} str={strength} guide={guidance} seed={seed}")
cmd = [
PYTHON, SCRIPT, INPUT,
"--instrument", instrument,
"--output", OUTPUT,
"--strength", str(strength),
"--noise-strength", "0.0",
"--guidance", str(guidance),
"--seed", str(seed),
]
result = subprocess.run(cmd, capture_output=True, text=True)
# Print just the output/log lines
for line in result.stdout.splitlines():
if "Output saved" in line or "Run log" in line:
print(f" {line.strip()}")
if result.returncode != 0:
err_lines = [l for l in result.stderr.splitlines() if "ERROR" in l]
for l in err_lines:
print(f" FAILED: {l.strip()}")
print(f"\nDone! {count} outputs in {OUTPUT}/")