Where does this looper code comes from?

Thanks.

Stéphane 

> Le 22 déc. 2020 à 14:29, Daniele Pagliero <daniele.pagli...@gmail.com> a 
> écrit :
> 
> Hello Stéphane,
> 
> thanks a lot, This solve the compile error.
> 
> I take the advantage of your kindness to ask more about the language 
> functionality that to me is still cryptic.
> 
> here is the previous code with the int cast fix:
> 
>     import("stdfaust.lib");
> 
>     sampleRate = 48000;
>     maxTime = 4;
>     maxSamples = sampleRate * maxTime;
> 
>     btn = button("[4]trigger");
>     readSpeed = hslider("[3]read_speed", 1, -3, 3, 0.1) : si.smoo;
> 
>     loopSize = ba.sAndH(btn, fi.pole(btn, btn)) : int : 
> hbargraph("[0]loop_size", 0, maxSamples);
>     readIndex = readSpeed/float(sampleRate) : (+ : ma.decimal) ~ _ : 
> *(float(loopSize)) : int : hbargraph("[1]read_index", 0, maxSamples);
>     recIndex = (+(1) : %(maxSamples)) ~ *(btn) : int : 
> hbargraph("[2]rec_index", 0, maxSamples);
> 
>     looper = rwtable(maxSamples,0.0,recIndex,_,readIndex);
> 
>     process = looper, looper;
> 
> I need help to understand the recursion operator and why it doesn't work as I 
> expect.
> 
> this statement is clear:
> 
>     recIndex = (+(1) : %(maxSamples)) ~ *(btn)
> 
> and I can translate it in something like:
> 
>     recIndex = ((recIndex + 1) %  maxSamples) * btn
> 
> Now I have problem understanding this one:
> 
>     readIndex = readSpeed/float(sampleRate) : (+ : ma.decimal) ~ _ : 
> *(float(loopSize)) : int
> 
> This doesn't fit my needs as I want the speed constant independently on the 
> loopSize so I tried to change it in this way:
> 
>     readIndex = (+(1) : %(loopSize)) ~ _ : int
> 
> that for me seems the same syntax of:
> 
>     readIndex = (readIndex +  1) %  loopSize
> 
> But it doesn't work. Can you please help me?
> 
> Thank you,
> Daniele
> 
> 
> On 22/12/20 12:34, Stéphane Letz wrote:
>> OK,
>> 
>>  : rwtable(n,s,w,_,r) : _
>> 
>> Where:
>> 
>>      • n: the table size
>>      • s: the initial table content
>>      • w: the write index (an int between 0 and n-1)
>>      • r: the read index (an int between 0 and n-1)
>> 
>> 
>> So  «  w »  and « r » must be of type « int » , correction here :
>> 
>> recIndex = (+(1) : %(maxSamples)) ~ *(btn) : hbargraph("[2]rec_index", 0, 
>> maxSamples) : int;
>> 
>> This does compile (but I’ve not tested final result)
>> 
>> Stéphane
>> 
>>> Le 22 déc. 2020 à 11:52, Daniele Pagliero <daniele.pagli...@gmail.com> a 
>>> écrit :
>>> 
>>> Hello Stéphane,
>>> 
>>> actually I'm playing with the online Faust IDE.
>>> 
>>> Daniele
>>> 
>>> Il giorno mar 22 dic 2020 alle ore 11:40 Stéphane Letz <l...@grame.fr> ha 
>>> scritto:
>>> Hi Daniele,
>>> 
>>> I don’t see this error when compiling here with master-dev 2.30.3 version.
>>> 
>>> Which Faust version are you using ?
>>> 
>>> Thanks.
>>> 
>>> Stéphane
>>> 
>>>> Le 22 déc. 2020 à 01:34, daniele.pagli...@gmail.com a écrit :
>>>> 
>>>> Hi Dario,
>>>> 
>>>> thanks a lot! It is exactly what I needed.
>>>> To go further with the looper, here is the code so far:
>>>> 
>>>> import("stdfaust.lib");
>>>> 
>>>> sampleRate = 48000;
>>>> maxTime = 4;
>>>> maxSamples = sampleRate * maxTime;
>>>> 
>>>> btn = button("[4]trigger");
>>>> readSpeed = hslider("[3]read_speed", 1, -3, 3, 0.1) : si.smoo;
>>>> 
>>>> loopSize = ba.sAndH(btn, fi.pole(btn, btn)) : hbargraph("[0]loop_size", 0, 
>>>> maxSamples);
>>>> readIndex = readSpeed/float(sampleRate) : (+ : ma.decimal) ~ _ : 
>>>> *(float(loopSize)) : int : hbargraph("[1]read_index", 0, maxSamples);
>>>> recIndex = (+(1) : %(maxSamples)) ~ *(btn) : hbargraph("[2]rec_index", 0, 
>>>> maxSamples);
>>>> // doesn't compile
>>>> // looper = rwtable(maxSamples,0.0,recIndex,_,readIndex);
>>>> // compiles
>>>> looper = rwtable(maxSamples,0.0,0,_,readIndex);
>>>> 
>>>> process = looper;
>>>> the read and write indexes are from the example I found on the 
>>>> documentation:
>>>> https://faustdoc.grame.fr/manual/syntax/#rwtable-primitive
>>>> 
>>>> I get this error for the recIndex and I can't understand its meaning:
>>>> ERROR inferring write table type, wrong write index type : RSESN interval()
>>>> 
>>>> Can you please point me anywhere I can figuring out what does it mean?
>>>> 
>>>> Sorry, my knowledge of the platform is quite small and also functional 
>>>> programming syntax is not always clear to me...
>>>> 
>>>> Thanks,
>>>> Daniele
>>>> 
>>>> 
>>>> Il 21/12/20 15:34, Dario Sanfilippo ha scritto:
>>>>> Hi, Daniele.
>>>>> 
>>>>> Perhaps something like this?
>>>>> 
>>>>> import("stdfaust.lib");
>>>>> btn = button("trigger");
>>>>> down_samples = ba.sAndH(btn, fi.pole(btn, btn));
>>>>> process = down_samples;
>>>>> 
>>>>> Ciao,
>>>>> Dario
>>>>> 
>>>>> On Mon, 21 Dec 2020 at 14:56, Daniele Pagliero 
>>>>> <daniele.pagli...@gmail.com> wrote:
>>>>> Hello,
>>>>> 
>>>>> I need help understanding how to get the elapsed time or samples between
>>>>> 2 clicks on a button.
>>>>> 
>>>>> Let's say I have a button like:
>>>>> 
>>>>> btn = button("trigger");
>>>>> 
>>>>> I need to know for how long the button was pressed.
>>>>> Then use the value to control a rwtable to create a variable length 
>>>>> looper.
>>>>> 
>>>>> I've searched in the docs but I didn't find any clue...
>>>>> 
>>>>> Thanks,
>>>>> Daniele
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> _______________________________________________
>>>>> Faudiostream-users mailing list
>>>>> Faudiostream-users@lists.sourceforge.net
>>>>> https://lists.sourceforge.net/lists/listinfo/faudiostream-users
>>>>> 
>>>>> 
>>>>> -- 
>>>>> Dr Dario Sanfilippo
>>>>> http://dariosanfilippo.com
>>>> _______________________________________________
>>>> Faudiostream-users mailing list
>>>> Faudiostream-users@lists.sourceforge.net
>>>> https://lists.sourceforge.net/lists/listinfo/faudiostream-users
>>> 
>>> 
>>> -- 
>>> Daniele Pagliero
>>> Via Rosta, 5
>>> 10143 TORINO - ITALY
>>> mobile: (39)339-1154922
>>> ---
>>> Think before you print to save energy and paper. Do you really need to 
>>> print this email? If you do, print it double sided.
>>> ---



_______________________________________________
Faudiostream-users mailing list
Faudiostream-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/faudiostream-users

Reply via email to