[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [sc-users] selfdestroying synth that destroys another synth stored in a variable
Hello Chad , i been experimenting with different posibilities on this,
and i discovered that if I use Envelope with random values, it doesnt
work, Do anybody have an idea why is that, and how to fix this?
thanks
check out the code:
(
SynthDef.new(\SoundA,{
|gate=1|
var sine,env;
//env = EnvGen.ar(Env.asr(0.1,1,0.25,-4),gate:gate,doneAction:2);
env= EnvGen.ar(Env.new([0,Rand.new(0.0,
1.0),Rand.new(0.0,1.0),Rand.new(0.0,1.0), 0],[Rand.new(0.0,
17.0),Rand.new(0.0, 17.0),Rand.new(0.0,
17.0),Rand.new(0.0,17.0)],[0,3, -3, -1]) ,gate:gate,doneAction:2 );
sine = SinOsc.ar(440,0,0.3);
Out.ar(0,[sine,sine]*env);
}).store;
SynthDef.new(\SoundB,{
var sine,env,gateEnv,length;
length = Rand(0.25,3.0);
gateEnv = EnvGen.kr(Env.new([0,0,1],[0.1+length,0]));
env = EnvGen.kr(Env.asr(0.1,1,0.25,-4),gate:(1-gateEnv).abs,doneAction:2);
sine = SinOsc.ar(200,0,0.3);
SendReply.kr(gateEnv,'soundBTrig',[env]);
Out.ar(0,[sine,sine]*env);
}).store;
o = OSCresponderNode(nil,'soundBTrig', { |t,r,msg| msg.postln;
~synthA.set(\gate,0); }).add;
)
(
t = Task({
loop {
~synthA = Synth(\SoundA );
2.0.wait;
Synth(\SoundB );
4.0.wait;
}
})
)
t.play
t.stop
o.remove;
2010/9/20 ronni montoya <ronni.montoya@xxxxxxxxx>:
> thanks, amazing, worked perfect
>
> 2010/9/20 Chad McKinney <seppukuzombie@xxxxxxxxx>:
>> Hi Ronni,
>> My apologies if someone all ready responded, it seems sometimes I'm not
>> always seeing responses to questions. You can use SendReply and an
>> OSCresponder to do this:
>> (
>> SynthDef.new(\SoundA,{
>> |gate=1|
>> var sine,env;
>> env = EnvGen.ar(Env.asr(0.1,1,0.25,-4),gate:gate,doneAction:2);
>> sine = SinOsc.ar(440,0,0.3);
>> Out.ar(0,[sine,sine]*env);
>> }).store;
>> SynthDef.new(\SoundB,{
>> var sine,env,gateEnv,length;
>> length = Rand(0.25,3.0);
>> gateEnv = EnvGen.kr(Env.new([0,0,1],[0.1+length,0]));
>> env = EnvGen.kr(Env.asr(0.1,1,0.25,-4),gate:(1-gateEnv).abs,doneAction:2);
>> sine = SinOsc.ar(200,0,0.3);
>> SendReply.kr(gateEnv,'soundBTrig',[env]);
>> Out.ar(0,[sine,sine]*env);
>> }).store;
>> o = OSCresponderNode(nil,'soundBTrig', { |t,r,msg| msg.postln;
>> ~synthA.set(\gate,0); }).add;
>> )
>> (
>> t = Task({
>> loop {
>> ~synthA = Synth(\SoundA );
>> 2.0.wait;
>> Synth(\SoundB );
>> 4.0.wait;
>> }
>> })
>> )
>> t.play
>> t.stop
>> o.remove;
>> You could also set up NodeWatcher to do something similar. Best,
>> Chad
>>
>> On Mon, Sep 20, 2010 at 12:42 AM, kimm furt <kimm.furt@xxxxxxxxxxxxxx>
>> wrote:
>>>
>>> hi,
>>> i had a similar problem recently.
>>> it would be so great having a doneAction sending a osc message!
>>> i ended up doing it this way:
>>> - b pauses itself instead of freeing
>>> - b has an envelope inside that triggers a SendReply.kr
>>> - the OSCresponder getting the message frees both synths...
>>> best, florian
>>>
>>> Am 20.09.2010 um 00:49 schrieb ronni montoya:
>>>
>>> > Hello dear list, im using task for sequencing behaivors , the task
>>> > have 2 nested "do", when the first do is called it creates a synth an
>>> > stores it in a variable, then when the second "do" is called it
>>> > create another synth that selfdestroys after a while. I want that when
>>> > my second synth selfdestroys also destroy the first synth stored in
>>> > the variable.
>>> > Any idea of how to do this?
>>> >
>>> > here is the code
>>> >
>>> > (
>>> > t = Task({
>>> > inf.do({
>>> >
>>> > 1.do {
>>> > arg i;
>>> > a = Synth(\sound_a );
>>> > (20.rand ).wait;
>>> > };
>>> >
>>> >
>>> > 1.do {
>>> > arg i;
>>> > Synth(\sound_b ); //
>>> > -----------------------------------------------------> when this
>>> > selfdestroys, i want that also destroys variable a
>>> >
>>> > };
>>> >
>>> >
>>> >
>>> > (40.rand * 0.1 ).wait;
>>> > })
>>> > })
>>> > )
>>> >
>>> > t.play
>>> > t.stop
>>> >
>>> >
>>> >
>>> > THANKS!
>>> >
>>> > _______________________________________________
>>> > sc-users mailing list
>>> >
>>> > info (subscription, etc.):
>>> > http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
>>> > archive: https://listarc.bham.ac.uk/marchives/sc-users/
>>> > search: https://listarc.bham.ac.uk/lists/sc-users/search/
>>>
>>>
>>> _______________________________________________
>>> sc-users mailing list
>>>
>>> info (subscription, etc.):
>>> http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
>>> archive: https://listarc.bham.ac.uk/marchives/sc-users/
>>> search: https://listarc.bham.ac.uk/lists/sc-users/search/
>>
>>
>
_______________________________________________
sc-users mailing list
info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: https://listarc.bham.ac.uk/marchives/sc-users/
search: https://listarc.bham.ac.uk/lists/sc-users/search/