This has been a long standing issue, but I'd like to put a good reproducer here. It has to do with how DoneActions in the server are handled, or rather when they are called. Because when controls are set within one block size, the appropriate action may never be performed.
As we all know, this may cause hanging noses.
// run a silent synth
a = { |gate=1| FreeSelf.kr(1 - gate) }.play; a.onFree { "synth ended.".postln };
// CASE 1 set the gate to 0. This frees the synth.
s.sendBundle(0.2, ["/n_set", a.nodeID, "gate", 0]);
// run a silent synth
a = { |gate=1| FreeSelf.kr(1 - gate) }.play; a.onFree { "synth ended.".postln };
// CASE 2 set the gate to 0, then to 1. This doesn't free the synth.
s.sendBundle(0.2, ["/n_set", a.nodeID, "gate", 0], ["/n_set", a.nodeID, "gate", 1]);
// run a silent synth
a = { |gate=1| FreeSelf.kr(1 - gate) }.play; a.onFree { "synth ended.".postln };
// CASE 3 set the gate to 0, then to 1, but with 0.1 s time difference. This frees the synth.
(
s.sendBundle(0.2, ["/n_set", a.nodeID, "gate", 0]);
s.sendBundle(0.21, ["/n_set", a.nodeID, "gate", 1]);
)
CASE 2 may happen under the hood where one least expects it.
telephon
changed the title
OSC messages that fall within a block override each other
OSC messages that fall within a block override each other fainling DoneActions
Nov 18, 2016
telephon
changed the title
OSC messages that fall within a block override each other fainling DoneActions
OSC messages that fall within a block override each other failing DoneActions
Jan 3, 2017
This has been a long standing issue, but I'd like to put a good reproducer here. It has to do with how
DoneActions in the server are handled, or rather when they are called. Because when controls are set within one block size, the appropriate action may never be performed.As we all know, this may cause hanging noses.
CASE 2 may happen under the hood where one least expects it.
btw. also this doesn't free:
The text was updated successfully, but these errors were encountered: