Two findings from the Phase 5 trial, 2026-09-29, at v0.6.3rc3. Neither is reproduced on a board.
audioverb.Tank: deinit() does not free the lines
Tank.deinit() marks the node and drops its source, and leaves the delay-line and predelay allocation in place. A class that keeps a reference to its tank after deinit() goes on holding the whole allocation, about 90 KB for a plate, until the Python object is dropped. On a board that is memory a program believes it has released.
Related: #176 (methods not guarded after deinit).
Also worth knowing: Tank.set(delays=) allocates the new lines before it frees the old ones, so the peak during a re-cut is old plus new. A refused allocation leaves the old network playing, which is the right failure.
audioconvolve.Convolver: a host reset_buffer drops held source frames
audiocore.reset_buffer(node) resets the node's input side as well as its engine, so the source frames the node held from a buffer it had not finished are lost: 256 frames with 512-frame source buffers. clear() keeps them. It is the same shape as MidSide and FeedbackDelay in #177 and #178.
Wanted: one rule across the nodes for what a host reset does to frames already taken from the source.
Two findings from the Phase 5 trial, 2026-09-29, at v0.6.3rc3. Neither is reproduced on a board.
audioverb.Tank: deinit() does not free the lines
Tank.deinit()marks the node and drops its source, and leaves the delay-line and predelay allocation in place. A class that keeps a reference to its tank afterdeinit()goes on holding the whole allocation, about 90 KB for a plate, until the Python object is dropped. On a board that is memory a program believes it has released.Related: #176 (methods not guarded after deinit).
Also worth knowing:
Tank.set(delays=)allocates the new lines before it frees the old ones, so the peak during a re-cut is old plus new. A refused allocation leaves the old network playing, which is the right failure.audioconvolve.Convolver: a host reset_buffer drops held source frames
audiocore.reset_buffer(node)resets the node's input side as well as its engine, so the source frames the node held from a buffer it had not finished are lost: 256 frames with 512-frame source buffers.clear()keeps them. It is the same shape asMidSideandFeedbackDelayin #177 and #178.Wanted: one rule across the nodes for what a host reset does to frames already taken from the source.