> How about a pulse train gate?:
>
> period = attT60+relT60;
> freqHz = 1.0/period;
> duty = attT60/period;
> gate = os.lf_pulsetrainpos(freqHz,duty);
> process = en.arfe(attT60,relT60,0,gate);
Thanks Julius, this works too, but as far as i can tell, its more like an LFO
which is continuously running, not triggered/reset by any user-controllable
gate, which i need.
I ended up with this:
arrt(attT60,relT60,gate,maxRetriggers) = envelope with {
upfront = gate > gate';
period1 = attT60+relT60;
freqHz = 1.0/period1;
duty = attT60/period1;
loopingGate = select2(lf_sawpos_reset(freqHz, upfront) < duty, 0, 1);
countedRetriggers = loopingGate > loopingGate' : pulse_countup(gate);
loopingConstrainedGate = select2(countedRetriggers > maxRetriggers,
loopingGate, 0);
t60 = select2(loopingGate, relT60, attT60);
pole = si.smooth(ba.tau2pole(t60/6.91));
envelope = gate & loopingConstrainedGate : pole;
};
This env starts when the gate transitions from 0 to 1, and it loops while gate
is high, but only until maxRetriggers is exceeded.
Thanks for helping!
>
> On Thu, Jan 7, 2021 at 1:55 PM Thomas Züblin <[email protected]
> <mailto:[email protected]>> wrote:
> Thanks for the suggestion, it sounds very reasonable. I managed to get a step
> closer to what i want using this code:
>
> arrt(attT60,relT60,fv,gate) = envelope with {
> ugate = pulsen(200,sec2samp(attT60 + relT60)); // gate > 0 ;
> target = select2(ugate, fv, float(gate));
> t60 = select2(ugate, relT60, attT60);
> pole = si.smooth(ba.tau2pole(t60/6.91));
> envelope = target : pole;
> };
>
> The pulsen repeatedly triggers the env, the interval depends on Attack /
> Release. It sounds close to what i want, the only problem i have is that i
> would need a way to restart the pulsen at every gate upfront. I think I first
> need to take a good look at all the available library objects.
>
>
>
>
>> Am 07.01.2021 um 22:05 schrieb Mouldy Soul <[email protected]
>> <mailto:[email protected]>>:
>>
>> This may sound dumb, but do you even need to check?
>>
>> Can't you just add the time for A + D together and trigger based on that
>> interval?
>>
>> On Thu, 7 Jan 2021 at 20:59, Thomas Züblin <[email protected]
>> <mailto:[email protected]>> wrote:
>> Hi all,
>>
>> I’m very new to Faust and for the last two evenings i was trying to add some
>> kind of retrigger functionality to the existing AR envelope. By that i mean,
>> that the envelope should retrigger itself, as soon as the release phase is
>> finished, ideally with some option to toggle between single cycle and
>> retrigger behaviour. I tried to add some check that detects the end of the
>> release phase (that worked) and combine this with the gate that triggers the
>> envelope but ran into some recursion problems.
>>
>> Any ideas or tips how to achieve this? Thanks for your time,
>>
>> Tom
>>
>> _______________________________________________
>> Faudiostream-users mailing list
>> [email protected]
>> <mailto:[email protected]>
>> https://lists.sourceforge.net/lists/listinfo/faudiostream-users
>> <https://lists.sourceforge.net/lists/listinfo/faudiostream-users>
>
> _______________________________________________
> Faudiostream-users mailing list
> [email protected]
> <mailto:[email protected]>
> https://lists.sourceforge.net/lists/listinfo/faudiostream-users
> <https://lists.sourceforge.net/lists/listinfo/faudiostream-users>
>
>
> --
> "Anybody who knows all about nothing knows everything" -- Leonard Susskind
_______________________________________________
Faudiostream-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/faudiostream-users