[Csnd] A recursive delay line UDO
Date | 2023-06-10 09:05 |
From | Philipp Neumann |
Subject | [Csnd] A recursive delay line UDO |
Hello Everybody! Recently i’m experimenting with delay lines and i was thinking about how to get to the extremes and to unusual results. So i also thought about a recursive UDO which creates several delay-lines. But it’s not working as i wish. This is my UDO: opcode delayArray, a, akkip setksmps 1 aDelIn, kDelTime, kFdbk, iDelBuf, iInstances xin aDelDump delayr iDelBuf aDelTap deltap kDelTime delayw aDelIn + (aDelTap * kFdbk) aDelOut limit aDelTap, -1, 1 print iInstances if iInstances > 1 then aDelOut += delayArray(aDelOut, kDelTime+0.1, kFdbk, iInstances-1) endif xout aDelOut endop And this is what i wish to do: I want to send a signal to the UDO which then is send to a delay line with feedback. This Signal then i sended into the recursive part till a fixed number of instances is reached. But this is not working with this. I use print to print my instances - so there i also just get the first and the last. But the whole thing is not working as i thought. Maybe someone can help me? Greetings, Philipp 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 |
Date | 2023-06-10 11:26 |
From | ST Music |
Subject | Re: [Csnd] A recursive delay line UDO |
Hi Philipp, I'm pretty new to UDO's so curious to see where this goes as surely someone understands this better than me. It looks like maybe the problem is that the recursion, having some k-rate variables, runs the if loop at k-rate or something like that. At i-rate you see the classic "recursion" print (moving in reverse). <CsoundSynthesizer> <CsOptions> -odac </CsOptions> ;================================ <CsInstruments> sr = 48000 ksmps = 10 nchnls = 1 0dbfs = 1 opcode delayArray, a, aiij aDelIn, iDelTime, iFdbk, iInstances xin aDel init 0 aDel = delay(aDelIn + aDel * iFdbk, iDelTime) aDelOut limit aDel, -1, 1 prints "\nDelay\n" print iInstances if iInstances > 1 then aDelOut += delayArray(aDelOut, iDelTime+0.1, iFdbk, iInstances-1) print iInstances endif xout aDelOut endop instr 1 a1 = oscil:a(linseg:a(.4, .3, 0), 220) aSig delayArray a1, .8, .3, 5 out a1 + aSig endin </CsInstruments> ;================================ <CsScore> i1 0 16 </CsScore> </CsoundSynthesizer> Best, Scott On Sat, Jun 10, 2023, 4:05 a.m. Philipp Neumann <kontakt@philippneumann.eu> wrote: Hello Everybody! |
Date | 2023-06-10 11:32 |
From | Philipp Neumann |
Subject | Re: [Csnd] A recursive delay line UDO |
Hi Scott, thanks for your reply! I probably solved it and someone else has also some fun with experimenting with this UDO: opcode delayArray, a, akkip setksmps 1 aDelIn, kDelTime, kFdbk, iDelBuf, iInstances xin aDelDump delayr iDelBuf aDelTap deltap kDelTime delayw aDelIn + (aDelTap * kFdbk) aDelOut limit aDelTap, -1, 1 print iInstances if iInstances > 1 then aDelOut += delayArray(aDelOut, kDelTime+0.1, kFdbk, iDelBuf, iInstances-1) endif aDelOut limit aDelOut, -1, 1 xout aDelOut endop Greetings, Philipp > Am 10.06.2023 um 12:26 schrieb ST Music |
Date | 2023-06-10 11:50 |
From | ST Music |
Subject | Re: [Csnd] A recursive delay line UDO |
Hah, I see now! The missing parameter in the if statement. Yes, a fun little UDO, nice. Best, Scott On Sat, Jun 10, 2023, 6:32 a.m. Philipp Neumann <kontakt@philippneumann.eu> wrote: Hi Scott, |