非リターン エンベロープを使用しようとしています (つまり、その中のセグメントが 0 に戻りません)。次のコードでは、エンベロープenv
を複数回トリガーできないことがわかりました。
(
SynthDef(\stupidSynth,
{
|t_trig|
var env, envShape, audio, env2;
envShape = Env.new([0, 1], [0.5], \sine);
env = EnvGen.kr(envShape, t_trig);
env2 = EnvGen.kr(Env.perc, t_trig);
audio = SinOsc.ar(400 + (env * 100)) * env2 * 0.1;
Out.ar(0, audio);
}
).add;
)
(
p = Pmono(*[
\stupidSynth,
\t_trig, 1
]
).play;
)
私が望んでいたのは、シンセが再トリガーされるたびに、ピッチがどんどん高くなることでした。実際に何が起こるかというと、最初のノートがピッチ エンベロープを再生し、後続の各ノートがちょうど最終 (つまり高い) 周波数になります。env
明らかに再トリガーされていません。
これがなぜなのかはわかりません。エンベロープは、再トリガーする前に 0 に戻す必要はありません。終了する前にエンベロープを再トリガーすることは完全に可能です。私の封筒に何か問題があります。
私は基本的に の動作を持つものを探していますが、再Line
トリガーしてカスタマイズ可能な曲線を持つこともできます。
私がやろうとしていることは可能ですか?