Csound Csound-dev Csound-tekno Search About

[Csnd] Question about accumulation of audio variables

Date2023-04-04 17:09
FromMassimiliano Tonelli
Subject[Csnd] Question about accumulation of audio variables
Hello everyone,

Probably I am doing a very trivial mistake, but I cannot spot it.

What's wrong with the accumulation in the following code? I am trying to do some modal synthesis by accumulating the outputs of several resonators in parallel.

instr 1

    // some init
    aIn1 inch 1 // input left
    aIn2 inch 2 // input right   

    aOut1 init 0 // output left
    aOut2 init 0 // output right

    iCount = some value (the number of modal resonances)

    iFreq[] init iCount  // the vector holding the resonance frequencies

    // the iFreq array is then instantiated (omitted here)

    .

    .

    kBw = some value...

    // then the filter bank is calculated

    index = 0

    loop:             
            aTmpL resonz aIn1, iFreq[index], kBw
            aOut1 += aTmpL
          
            aTmpR resonz aIn2, iFreq[index], kBw
            aOut2 += aTmpR
   
    loop_lt index, 1, iCount, loop
       
    outs aOut1, aOut2

endin

The calculated output is only the last resonance plus a fixed signal, unrelated with the requested resonances.

I also tried using global variables gaOut1 and gaOut2, initializing them outside the instrument definition, and clearing them after the output assignment, but with the same result. If I avoid to use the loop, by explicitly adding the resonator outputs, everything is working (but it is not what I am looking for, since I need the number of resonances to be parametric).

Thank you in advance for your help.
Massimiliano

Csound mailing list
Csound@listserv.heanet.ie
https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND
Send bugs reports to
        https://github.com/csound/csound/issues
Discussions of bugs and features can be posted here

Date2023-04-04 17:41
FromSteven Yi
SubjectRe: [Csnd] Question about accumulation of audio variables
The issue is using i-rate variables for your loop_lt, so the loop only
runs during init-time. Try changing to a k-rate kindex. You might also
look at using while-loops instead of loop_lt.

On Tue, Apr 4, 2023 at 12:04 PM Massimiliano Tonelli
 wrote:
>
> Hello everyone,
>
> Probably I am doing a very trivial mistake, but I cannot spot it.
>
> What's wrong with the accumulation in the following code? I am trying to do some modal synthesis by accumulating the outputs of several resonators in parallel.
>
> instr 1
>
>     // some init
>     aIn1 inch 1 // input left
>     aIn2 inch 2 // input right
>
>     aOut1 init 0 // output left
>     aOut2 init 0 // output right
>
>     iCount = some value (the number of modal resonances)
>
>     iFreq[] init iCount  // the vector holding the resonance frequencies
>
>     // the iFreq array is then instantiated (omitted here)
>
>     .
>
>     .
>
>     kBw = some value...
>
>     // then the filter bank is calculated
>
>     index = 0
>
>     loop:
>             aTmpL resonz aIn1, iFreq[index], kBw
>             aOut1 += aTmpL
>
>             aTmpR resonz aIn2, iFreq[index], kBw
>             aOut2 += aTmpR
>
>     loop_lt index, 1, iCount, loop
>
>     outs aOut1, aOut2
>
> endin
>
> The calculated output is only the last resonance plus a fixed signal, unrelated with the requested resonances.
>
> I also tried using global variables gaOut1 and gaOut2, initializing them outside the instrument definition, and clearing them after the output assignment, but with the same result. If I avoid to use the loop, by explicitly adding the resonator outputs, everything is working (but it is not what I am looking for, since I need the number of resonances to be parametric).
>
> Thank you in advance for your help.
> Massimiliano
>
> Csound mailing list
> Csound@listserv.heanet.ie
> https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND
> Send bugs reports to
>         https://github.com/csound/csound/issues
> Discussions of bugs and features can be posted here

Csound mailing list
Csound@listserv.heanet.ie
https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND
Send bugs reports to
        https://github.com/csound/csound/issues
Discussions of bugs and features can be posted here