hello, here is what i-ve got.
i managed to send different sustained env-shapes via Pbindef and recreated the Env-Shape you provided with Env.step. Also setting some releaseNodes and loopNodes with Env.step seems to work. Changing back from Env.step to Env.adsr results in ERROR: Message 'at' not understood. though. So not a real solution but maybe it sparks some ideas…
s.boot;
(
SynthDef(\simpleSine,
{ |out = 0, freq = 440, amp = 0.1, timeScale = 1, gate = 1|
var sig, env, envArray, envSig;
envArray = Env(
// 8 levels values because we have 7 time-values
[0, 1, 0, 0, 0, 0, 0, 0],
// 7 time-values, because use of Env.step later.
[1, 1, 0, 0, 0, 0, 0],
[1, 1.neg, 1, 1.neg]);
env = \env.kr(envArray);
envSig = EnvGen.kr(env, gate, doneAction: 2);
sig = SinOsc.ar(freq, 0, 0.1);
Out.ar(out, sig * envSig)
}).add;
)
( // send a sustained envelope .adsr.
Pbindef(\i,
\instrument, \simpleSine,
\dur, Pseq([1], inf),
\envData, [0.02, 0.2, 0.25, 1, 1.0, -4, 0],
\env, Pkey(\envData).collect { |envdata| Env.adsr(*envdata) },
\freq, Pseq([200, 300, 400, 500, 600, 700], inf),
).play;
)
// change env-shape
Pbindef(\i, \envData, [0.3, 0.3, 0.5, 2, 1.0, -4, 0])
( // change to Env.asr
Pbindef(\i,
\envData, [0.5, 1, 0.5, 0],
\env, Pkey(\envData).collect { |envdata| Env.asr(*envdata) },
)
)
( // change to Env.cutoff
Pbindef(\i,
\envData, [0.5, 0.5, 0],
\env, Pkey(\envData).collect { |envdata| Env.cutoff(*envdata) },
)
)
( // Recreation of the original env with Env.step
// Node not found messages
Pbindef(\i,
\instrument, \simpleSine,
\dur, Pseq([0.2], inf),
\envData, [[0, 1, 1/4, 1, 1/4, 1, 0], 0.02!7],
\env, Pkey(\envData).collect { |envdata| Env.step(*envdata) },
\freq, Pseq([200, 300, 400, 500, 600, 700], inf),
).play;
)
( // Node not found messages gone, when we change time-values in the Env to 0.05
Pbindef(\i,
\envData, [[0, 1, 1/4, 1, 1/4, 1, 0], 0.05!7, nil, nil, 0],
\env, Pkey(\envData).collect { |envdata| Env.step(*envdata) },
)
)
( // Releasenode: 4
Pbindef(\i,
\envData, [[0, 1, 1/4, 1, 1/3, 1, 0], 0.05!7, 4, nil, 0],
\env, Pkey(\envData).collect { |envdata| Env.step(*envdata) },
)
)
( // Releasenode: 5
Pbindef(\i,
\envData, [[0, 1, 1/4, 1, 1/3, 1, 0], 0.02!7, 5, nil, 0],
\env, Pkey(\envData).collect { |envdata| Env.step(*envdata) },
)
)
( // Releasenode: 6
Pbindef(\i,
\envData, [[0, 1, 1/4, 1, 1/3, 1, 0], 0.02!7, 6, nil, 0],
\env, Pkey(\envData).collect { |envdata| Env.step(*envdata) },
)
)
( // Releasenode: 6, loopnode: 1
Pbindef(\i,
\envData, [[0, 1, 1/4, 1, 1/3, 1, 0], 0.05!7, 6, 1, 0],
\env, Pkey(\envData).collect { |envdata| Env.step(*envdata) },
)
)
( // Releasenode: 4, loopnode: 1
Pbindef(\i,
\envData, [[0, 1, 1/4, 1, 1/3, 1, 0], 0.05!7, 4, 1, 0],
\env, Pkey(\envData).collect { |envdata| Env.step(*envdata) },
)
)
( // Releasenode: 5, loopnode: 2
Pbindef(\i,
\envData, [[0, 1, 1/4, 1, 1/3, 1, 0], 0.05!7, 5, 2, 0],
\env, Pkey(\envData).collect { |envdata| Env.step(*envdata) },
)
)
( // Going back to Env.adsr results in Error :(
Pbindef(\i,
\envData, [0.02, 0.2, 0.25, 1, 1.0, -4, 0],
\env, Pkey(\envData).collect { |envdata| Env.adsr(*envdata) },
);
)
ERROR: Message 'at' not understood.
Perhaps you misspelled 'as', or meant to call 'at' on another receiver?
RECEIVER:
Float 0.020000 47AE147B 3F947AE1
ARGS:
Integer 0
KEYWORD ARGUMENTS:
PATH: /Users/mstep/2025-12-27 Sending an env array via Pbindef.scd
PROTECTED CALL STACK:
Meta_MethodError:new 0x1382e7e40
arg this = DoesNotUnderstandError
arg what = nil
arg receiver = 0.02
Meta_DoesNotUnderstandError:new 0x1382ea580
arg this = DoesNotUnderstandError
arg receiver = 0.02
arg selector = at
arg args = [0]
arg keywordArgumentPairs = []
Object:doesNotUnderstand 0x13814bb40
arg this = 0.02
arg selector = at
arg args = nil
arg kwargs = nil
Meta_Env:step 0x138d138c0
arg this = Env
arg levels = 0.02
arg times = 0.2
arg releaseNode = 0.25
arg loopNode = 1
arg offset = 1.0
a FunctionDef 0x138b38340
sourceCode = "<an open Function>"
arg inval = ('instrument': simpleSine, 'dur': 1, 'envData': [0.02, 0.2, 0.25, 1, 1.0, -4, 0])
var nextval = [0.02, 0.2, 0.25, 1, 1.0, -4, 0]
a FunctionDef 0x138b56d80
sourceCode = "<an open Function>"
a FunctionDef 0x140b02340
sourceCode = "<an open Function>"
Function:prTry 0x138520d40
arg this = a Function
var result = nil
var thread = a Routine
var next = nil
var wasInProtectedFunc = true
CALL STACK:
DoesNotUnderstandError:reportError
arg this = <instance of DoesNotUnderstandError>
Nil:handleError
arg this = nil
arg error = <instance of DoesNotUnderstandError>
Thread:handleError
arg this = <instance of Thread>
arg error = <instance of DoesNotUnderstandError>
Thread:handleError
arg this = <instance of Routine>
arg error = <instance of DoesNotUnderstandError>
Object:throw
arg this = <instance of DoesNotUnderstandError>
Function:protect
arg this = <instance of Function>
arg handler = <instance of Function>
var result = <instance of DoesNotUnderstandError>
Routine:prStart
arg this = <instance of Routine>
arg inval = 14.0
^^ ERROR: Message 'at' not understood.
Perhaps you misspelled 'as', or meant to call 'at' on another receiver?
RECEIVER: 0.02