Skip to content

Tank.deinit() keeps its lines allocated, and a host reset_buffer on a Convolver drops the source frames it holds #181

Description

@bdbarnett

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.

No activity

Activity on this issue will appear here.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions