mirror of
https://github.com/storytold/soundcraft.git
synced 2026-10-31 05:56:47 -06:00
AudioSuite-style commands looped over tracks/clips and kept every result as a new pool source (which undo snapshots also hold). Each render was capped per-track, but: - tracks_param did not remove duplicates, so listing the same track id eight times rendered it eight times; - audiosuite.process's signal_generator branch checked only per track, so many distinct tracks could exceed memory in one command. Fixes: - tracks_param now dedupes track ids with a HashSet. - generate() subtracts frames*channels from a MAX_RENDER_SAMPLES budget across all tracks and refuses with "too much audio to generate in one command" before allocating. Regression tests cover duplicate track ids and the cross-track budget. Fixes #896