Csound Csound-dev Csound-tekno Search About

Re: Re: [Csnd] UDO to have the max a signal amplitude as k variable

Date2013-08-23 10:33
From"vallste@libero.it"
SubjectRe: Re: [Csnd] UDO to have the max a signal amplitude as k variable
Hi Joachim,
this seems what I was looking for. Just one small doubt: if I set ktrig to a 
constant 1 (no metro triggering or similar stuff) the output will be the max 
reached in every kcycle, right?

>----Messaggio originale----
>Da: jh@joachimheintz.de
>Data: 23/08/2013 9.52
>A: 
>Ogg: Re: [Csnd] UDO to have the max a signal amplitude as k variable
>
>hi stefano -
>
>i think no udo is needed here because max_k does what you wish?!
>
>best -
>
>	joachim
>
>
>Am 22.08.2013 23:42, schrieb vallste@libero.it:
>> Hello,
>>
>> I'm developing this udo to have a krate variable indicating the maximum
>> value reached by a a-rate signal during a k-cycle.
>>
>> As far as I've understood downsamp opcode performs some averaging
>> (please correct me if I'm wrong) so not using it since I want the
>> absolute maximum reached.
>>
>>
>> opcode MaxAmpInKCycle, k, ak
>> setksmps 1
>> ain, kperiod  xin ;ain - input signal, kperiod = kspms
>> kcounter init 0 ;count from 0 to ksmps
>> kout init 0 ;output value
>> aamp = abs(ain)
>> kamp downsamp aamp
>> ;if above previous value update
>> kout = (kamp > kout ? kamp : kout)
>> kcounter = kcounter + 1
>> if kcounter == kperiod then
>>      ;reset value and counter
>>      ;when reaching ksmps
>>      kout = 0
>>      kcounter = 0
>> endif
>> printk2 kcounter ; for testing
>> printk ksmps / sr, kout ; for testing
>> xout kout
>> endop
>>
>>
>> Not sure if it's working as expected, by printing values looks like that
>> the program using this opcode
>>
>>
>> instr 1
>>
>> ainLH, ainRH diskin2 $INPUTFILE, 1, 0, 1
>> printk ksmps / sr, 123
>> kvalue MaxAmpInKCycle ainLH, 8 ; equal to ksmps
>> printk ksmps / sr, 456
>> printk ksmps / sr, kvalue
>> printk ksmps / sr, 789
>>
>> endin
>>
>>
>> is somehow out of phase: after having printed 789 (from the main
>> program), kcounter variable value (printed from inside the opcode) is
>> not 0 (don't know if caused by some kind of "printing buffer") so if
>> someone want give it a try/report results/find errors/have an idea of
>> what's happening and want to share is more than welcome.
>>
>>
>> I'm using 5.17 double from Ubuntu repository
>>
>>
>> Bye
>>
>> Stefano
>>
>
>
>Send bugs reports to the Sourceforge bug trackers
>csound6:
>            https://sourceforge.net/p/csound/tickets/
>csound5:
>            https://sourceforge.net/p/csound/bugs/
>Discussions of bugs and features can be posted here
>To unsubscribe, send email sympa@lists.bath.ac.uk with body "unsubscribe 
csound"
>
>
>



Date2013-08-23 11:41
Fromjoachim heintz
SubjectRe: [Csnd] UDO to have the max a signal amplitude as k variable
no, but it is easy to get a trigger which increments in each k-period:



-n


ksmps = 32
instr 1
kTrig init 1
aSig rnd31 1, 0
kMax max_k aSig, 1, 1
printk 0, kMax
kTrig = kTrig+1
endin


i 1 0 .01




regards -

	joachim


Am 23.08.2013 11:33, schrieb vallste@libero.it:
> Hi Joachim,
> this seems what I was looking for. Just one small doubt: if I set ktrig to a
> constant 1 (no metro triggering or similar stuff) the output will be the max
> reached in every kcycle, right?
>
>> ----Messaggio originale----
>> Da: jh@joachimheintz.de
>> Data: 23/08/2013 9.52
>> A: 
>> Ogg: Re: [Csnd] UDO to have the max a signal amplitude as k variable
>>
>> hi stefano -
>>
>> i think no udo is needed here because max_k does what you wish?!
>>
>> best -
>>
>> 	joachim
>>
>>
>> Am 22.08.2013 23:42, schrieb vallste@libero.it:
>>> Hello,
>>>
>>> I'm developing this udo to have a krate variable indicating the maximum
>>> value reached by a a-rate signal during a k-cycle.
>>>
>>> As far as I've understood downsamp opcode performs some averaging
>>> (please correct me if I'm wrong) so not using it since I want the
>>> absolute maximum reached.
>>>
>>>
>>> opcode MaxAmpInKCycle, k, ak
>>> setksmps 1
>>> ain, kperiod  xin ;ain - input signal, kperiod = kspms
>>> kcounter init 0 ;count from 0 to ksmps
>>> kout init 0 ;output value
>>> aamp = abs(ain)
>>> kamp downsamp aamp
>>> ;if above previous value update
>>> kout = (kamp > kout ? kamp : kout)
>>> kcounter = kcounter + 1
>>> if kcounter == kperiod then
>>>       ;reset value and counter
>>>       ;when reaching ksmps
>>>       kout = 0
>>>       kcounter = 0
>>> endif
>>> printk2 kcounter ; for testing
>>> printk ksmps / sr, kout ; for testing
>>> xout kout
>>> endop
>>>
>>>
>>> Not sure if it's working as expected, by printing values looks like that
>>> the program using this opcode
>>>
>>>
>>> instr 1
>>>
>>> ainLH, ainRH diskin2 $INPUTFILE, 1, 0, 1
>>> printk ksmps / sr, 123
>>> kvalue MaxAmpInKCycle ainLH, 8 ; equal to ksmps
>>> printk ksmps / sr, 456
>>> printk ksmps / sr, kvalue
>>> printk ksmps / sr, 789
>>>
>>> endin
>>>
>>>
>>> is somehow out of phase: after having printed 789 (from the main
>>> program), kcounter variable value (printed from inside the opcode) is
>>> not 0 (don't know if caused by some kind of "printing buffer") so if
>>> someone want give it a try/report results/find errors/have an idea of
>>> what's happening and want to share is more than welcome.
>>>
>>>
>>> I'm using 5.17 double from Ubuntu repository
>>>
>>>
>>> Bye
>>>
>>> Stefano
>>>
>>
>>
>> Send bugs reports to the Sourceforge bug trackers
>> csound6:
>>             https://sourceforge.net/p/csound/tickets/
>> csound5:
>>             https://sourceforge.net/p/csound/bugs/
>> Discussions of bugs and features can be posted here
>> To unsubscribe, send email sympa@lists.bath.ac.uk with body "unsubscribe
> csound"
>>
>>
>>
>
>
>
>
> Send bugs reports to the Sourceforge bug trackers
> csound6:
>              https://sourceforge.net/p/csound/tickets/
> csound5:
>              https://sourceforge.net/p/csound/bugs/
> Discussions of bugs and features can be posted here
> To unsubscribe, send email sympa@lists.bath.ac.uk with body "unsubscribe csound"
>
>
>

Date2013-08-23 12:09
FromVictor Lazzarini
SubjectRe: [Csnd] UDO to have the max a signal amplitude as k variable
kTrig is not being consumed in the code. Is that right?
On 23 Aug 2013, at 11:41, joachim heintz wrote:

> no, but it is easy to get a trigger which increments in each k-period:
> 
> 
> 
> -n
> 
> 
> ksmps = 32
> instr 1
> kTrig init 1
> aSig rnd31 1, 0
> kMax max_k aSig, 1, 1
> printk 0, kMax
> kTrig = kTrig+1
> endin
> 
> 
> i 1 0 .01
> 
> 
> 
> 
> regards -
> 
> 	joachim
> 
> 
> Am 23.08.2013 11:33, schrieb vallste@libero.it:
>> Hi Joachim,
>> this seems what I was looking for. Just one small doubt: if I set ktrig to a
>> constant 1 (no metro triggering or similar stuff) the output will be the max
>> reached in every kcycle, right?
>> 
>>> ----Messaggio originale----
>>> Da: jh@joachimheintz.de
>>> Data: 23/08/2013 9.52
>>> A: 
>>> Ogg: Re: [Csnd] UDO to have the max a signal amplitude as k variable
>>> 
>>> hi stefano -
>>> 
>>> i think no udo is needed here because max_k does what you wish?!
>>> 
>>> best -
>>> 
>>> 	joachim
>>> 
>>> 
>>> Am 22.08.2013 23:42, schrieb vallste@libero.it:
>>>> Hello,
>>>> 
>>>> I'm developing this udo to have a krate variable indicating the maximum
>>>> value reached by a a-rate signal during a k-cycle.
>>>> 
>>>> As far as I've understood downsamp opcode performs some averaging
>>>> (please correct me if I'm wrong) so not using it since I want the
>>>> absolute maximum reached.
>>>> 
>>>> 
>>>> opcode MaxAmpInKCycle, k, ak
>>>> setksmps 1
>>>> ain, kperiod  xin ;ain - input signal, kperiod = kspms
>>>> kcounter init 0 ;count from 0 to ksmps
>>>> kout init 0 ;output value
>>>> aamp = abs(ain)
>>>> kamp downsamp aamp
>>>> ;if above previous value update
>>>> kout = (kamp > kout ? kamp : kout)
>>>> kcounter = kcounter + 1
>>>> if kcounter == kperiod then
>>>>      ;reset value and counter
>>>>      ;when reaching ksmps
>>>>      kout = 0
>>>>      kcounter = 0
>>>> endif
>>>> printk2 kcounter ; for testing
>>>> printk ksmps / sr, kout ; for testing
>>>> xout kout
>>>> endop
>>>> 
>>>> 
>>>> Not sure if it's working as expected, by printing values looks like that
>>>> the program using this opcode
>>>> 
>>>> 
>>>> instr 1
>>>> 
>>>> ainLH, ainRH diskin2 $INPUTFILE, 1, 0, 1
>>>> printk ksmps / sr, 123
>>>> kvalue MaxAmpInKCycle ainLH, 8 ; equal to ksmps
>>>> printk ksmps / sr, 456
>>>> printk ksmps / sr, kvalue
>>>> printk ksmps / sr, 789
>>>> 
>>>> endin
>>>> 
>>>> 
>>>> is somehow out of phase: after having printed 789 (from the main
>>>> program), kcounter variable value (printed from inside the opcode) is
>>>> not 0 (don't know if caused by some kind of "printing buffer") so if
>>>> someone want give it a try/report results/find errors/have an idea of
>>>> what's happening and want to share is more than welcome.
>>>> 
>>>> 
>>>> I'm using 5.17 double from Ubuntu repository
>>>> 
>>>> 
>>>> Bye
>>>> 
>>>> Stefano
>>>> 
>>> 
>>> 
>>> Send bugs reports to the Sourceforge bug trackers
>>> csound6:
>>>            https://sourceforge.net/p/csound/tickets/
>>> csound5:
>>>            https://sourceforge.net/p/csound/bugs/
>>> Discussions of bugs and features can be posted here
>>> To unsubscribe, send email sympa@lists.bath.ac.uk with body "unsubscribe
>> csound"
>>> 
>>> 
>>> 
>> 
>> 
>> 
>> 
>> Send bugs reports to the Sourceforge bug trackers
>> csound6:
>>             https://sourceforge.net/p/csound/tickets/
>> csound5:
>>             https://sourceforge.net/p/csound/bugs/
>> Discussions of bugs and features can be posted here
>> To unsubscribe, send email sympa@lists.bath.ac.uk with body "unsubscribe csound"
>> 
>> 
>> 
> 
> 
> Send bugs reports to the Sourceforge bug trackers
> csound6:
>           https://sourceforge.net/p/csound/tickets/
> csound5:
>           https://sourceforge.net/p/csound/bugs/
> Discussions of bugs and features can be posted here
> To unsubscribe, send email sympa@lists.bath.ac.uk with body "unsubscribe csound"
> 
> 

Dr Victor Lazzarini
Senior Lecturer
Dept. of Music
NUI Maynooth Ireland
tel.: +353 1 708 3545
Victor dot Lazzarini AT nuim dot ie