MAX 9.0.5 adsr~ busy state management in poly~.

Johannes Regnier's icon

The adsr~ busy state management in poly~ seems broken in 9.0.5.

--> Using adsr~ connected to thispoly~ (both signal output and mute outlet), for dynamic voice allocation. Apparently, once a voice is activated, its state stays busy, even when the envelope reached its end (i.e the voice never gets available again).

It works as expected in 9.0.4, and in version 8.

I'm curious to know if others on 9.0.5 can replicate this bug ( use the simple example in adsr~ maxhelp, tab poly~, and deactivate voice stealing -- > loadmess steal 0.).

(Max 9.0.5. Macbook Pro M3)

Joshua Kit Clayton's icon

Thank you for this report! This should be fixed in the next one.

Joshua Kit Clayton's icon

In the meantime, you could disconnect the mute outlet and use the new [thispoly~ @automute 1] feature. Work related to this new feature is the source of this regression, and hopefully using it as an alternative strategy works for your use case.

From the helpfile:

The automute attribute enables automatic muting and unmuting of voices based on the value of a signal connected to the inlet of thispoly~. When automute is enabled, poly~ automatically unmutes a voice receiveing the contenst of it a note or notemessage event. Once unmuted, thispoly~ watches the level of the audio signal connected to its inlet. When this signal is zero for two consecutive signal vectors, the voice is muted (saving CPU) and marked as available for future notes (not busy).

Johannes Regnier's icon

Hi Joshua, yes thank you, I ended up using the @automute attribute.