Csound Csound-dev Csound-tekno Search About

delay and vdelay opcode sound difference

Date2016-11-07 02:15
FromEmmett Palaima
Subjectdelay and vdelay opcode sound difference
Hi, I have been doing some experiments with reverb design recently, and noticed that when I switch out the delay and vdelay opcodes the sound of my reverb is very noticeably affected, even if the value of the delay times remains the same. What is happening to cause this?

Here is the example (P.491 in the Csound book) I was working on, all I did was change the UDO (a double nested allpass filter) I am passing in, vdoublenested uses a vdelay, and double nested uses a delay, both are given the same fixed values: 

opcode vdoubleNested, a, akkkkkkkkk


setksmps 1

ain, kffo, kfbo, kdel1, kff2, kfb2, kdel2, kff3, kfb3, kdel3 xin


adel1 init 0

adel2 init 0

adel3 init 0

asum1 init 0

asum2 init 0

aout init 0


asum1 = adel2 - kff2 * adel1 ;1st Inner Feedforward

asum2 = adel3 - kff3 * adel2 ;2nd Inner Feedforward

aout = asum2 - kffo * ain ;Outer Feedforward


adel1 vdelay3 ain + kfbo * aout, kdel1, .5 ;Outer Feedback

adel2 vdelay3 adel1 + kfb2 * asum1, kdel2, .5 ;1st Inner Feedback

adel3 vdelay3 adel2 + kfb3 * asum2, kdel3, .5 ;2nd Inner Feedback


xout aout

endop

opcode doubleNested, a, akkikkikki ;i


setksmps 1

ain, kffo, kfbo, idel1, kff2, kfb2, idel2, kff3, kfb3, idel3 xin ;imaxdel xin


adel1 init 0

adel2 init 0

adel3 init 0

asum1 init 0

asum2 init 0

aout init 0


asum1 = adel2 - kff2 * adel1 ;1st Inner Feedforward

asum2 = adel3 - kff3 * adel2 ;2nd Inner Feedforward

aout = asum2 - kffo * ain ;Outer Feedforward


adel1 delay ain + kfbo * aout, idel1 ;Outer Feedback

adel2 delay adel1 + kfb2 * asum1, idel2 ;1st Inner Feedback

adel3 delay adel2 + kfb3 * asum2, idel3 ;2nd Inner Feedback


xout aout

endop


instr csbookLargeRoom ;p.491


aout init 0

ain init 0

adn init 0

idelay init 0


krand rand 1

kport port krand/100, .1


adry, adry2 ins

aflt01 butterlp adry, 4000 ;Pre-Filter

aflt02 butterbp .5 * adn, 1000, 800;Feedback Filter

ain = aflt01 + .5 * aflt02


ap1 AllPass ain, .3, .3, .008

ap2 AllPass ain, .3, .3, .012

adel1 delay ap2, .004

adel2 delay adel1, .017


asn singleNested adel2, .5, .5, .025, .25, .25, .062

adel3 delay asn, .023

adel4 delay adel3, .003


adn doubleNested adel4, .5, .5, .120, .25, .25, .076, .25, .25, .030


aout = 1.5 * adel1 + .8 * adel3 + .8 * adn


outs aout, aout

endin

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

Date2016-11-07 02:29
FromSteven Yi
SubjectRe: delay and vdelay opcode sound difference
I imagine the difference is due to vdelay being a linear interpolating
delay line, while delay only does whole sample delays. I think with
the short delay times used for a reverb, interpolation of some sort
would be necessary.

On Sun, Nov 6, 2016 at 9:15 PM, Emmett Palaima  wrote:
> Hi, I have been doing some experiments with reverb design recently, and
> noticed that when I switch out the delay and vdelay opcodes the sound of my
> reverb is very noticeably affected, even if the value of the delay times
> remains the same. What is happening to cause this?
>
> Here is the example (P.491 in the Csound book) I was working on, all I did
> was change the UDO (a double nested allpass filter) I am passing in,
> vdoublenested uses a vdelay, and double nested uses a delay, both are given
> the same fixed values:
>
> opcode vdoubleNested, a, akkkkkkkkk
>
>
> setksmps 1
>
> ain, kffo, kfbo, kdel1, kff2, kfb2, kdel2, kff3, kfb3, kdel3 xin
>
>
> adel1 init 0
>
> adel2 init 0
>
> adel3 init 0
>
> asum1 init 0
>
> asum2 init 0
>
> aout init 0
>
>
> asum1 = adel2 - kff2 * adel1 ;1st Inner Feedforward
>
> asum2 = adel3 - kff3 * adel2 ;2nd Inner Feedforward
>
> aout = asum2 - kffo * ain ;Outer Feedforward
>
>
> adel1 vdelay3 ain + kfbo * aout, kdel1, .5 ;Outer Feedback
>
> adel2 vdelay3 adel1 + kfb2 * asum1, kdel2, .5 ;1st Inner Feedback
>
> adel3 vdelay3 adel2 + kfb3 * asum2, kdel3, .5 ;2nd Inner Feedback
>
>
> xout aout
>
> endop
>
> opcode doubleNested, a, akkikkikki ;i
>
>
> setksmps 1
>
> ain, kffo, kfbo, idel1, kff2, kfb2, idel2, kff3, kfb3, idel3 xin ;imaxdel
> xin
>
>
> adel1 init 0
>
> adel2 init 0
>
> adel3 init 0
>
> asum1 init 0
>
> asum2 init 0
>
> aout init 0
>
>
> asum1 = adel2 - kff2 * adel1 ;1st Inner Feedforward
>
> asum2 = adel3 - kff3 * adel2 ;2nd Inner Feedforward
>
> aout = asum2 - kffo * ain ;Outer Feedforward
>
>
> adel1 delay ain + kfbo * aout, idel1 ;Outer Feedback
>
> adel2 delay adel1 + kfb2 * asum1, idel2 ;1st Inner Feedback
>
> adel3 delay adel2 + kfb3 * asum2, idel3 ;2nd Inner Feedback
>
>
> xout aout
>
> endop
>
>
> instr csbookLargeRoom ;p.491
>
>
> aout init 0
>
> ain init 0
>
> adn init 0
>
> idelay init 0
>
>
> krand rand 1
>
> kport port krand/100, .1
>
>
> adry, adry2 ins
>
> aflt01 butterlp adry, 4000 ;Pre-Filter
>
> aflt02 butterbp .5 * adn, 1000, 800;Feedback Filter
>
> ain = aflt01 + .5 * aflt02
>
>
> ap1 AllPass ain, .3, .3, .008
>
> ap2 AllPass ain, .3, .3, .012
>
> adel1 delay ap2, .004
>
> adel2 delay adel1, .017
>
>
> asn singleNested adel2, .5, .5, .025, .25, .25, .062
>
> adel3 delay asn, .023
>
> adel4 delay adel3, .003
>
>
> adn doubleNested adel4, .5, .5, .120, .25, .25, .076, .25, .25, .030
>
>
> aout = 1.5 * adel1 + .8 * adel3 + .8 * adn
>
>
> outs aout, aout
>
> endin
>
> 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

Date2016-11-07 06:29
FromVictor Lazzarini
SubjectRe: delay and vdelay opcode sound difference
also remember that the vdelay takes delay times in milliseconds and delay in seconds.

Victor Lazzarini
Dean of Arts, Celtic Studies, and Philosophy
Maynooth University
Ireland

> On 7 Nov 2016, at 02:29, Steven Yi  wrote:
> 
> I imagine the difference is due to vdelay being a linear interpolating
> delay line, while delay only does whole sample delays. I think with
> the short delay times used for a reverb, interpolation of some sort
> would be necessary.
> 
>> On Sun, Nov 6, 2016 at 9:15 PM, Emmett Palaima  wrote:
>> Hi, I have been doing some experiments with reverb design recently, and
>> noticed that when I switch out the delay and vdelay opcodes the sound of my
>> reverb is very noticeably affected, even if the value of the delay times
>> remains the same. What is happening to cause this?
>> 
>> Here is the example (P.491 in the Csound book) I was working on, all I did
>> was change the UDO (a double nested allpass filter) I am passing in,
>> vdoublenested uses a vdelay, and double nested uses a delay, both are given
>> the same fixed values:
>> 
>> opcode vdoubleNested, a, akkkkkkkkk
>> 
>> 
>> setksmps 1
>> 
>> ain, kffo, kfbo, kdel1, kff2, kfb2, kdel2, kff3, kfb3, kdel3 xin
>> 
>> 
>> adel1 init 0
>> 
>> adel2 init 0
>> 
>> adel3 init 0
>> 
>> asum1 init 0
>> 
>> asum2 init 0
>> 
>> aout init 0
>> 
>> 
>> asum1 = adel2 - kff2 * adel1 ;1st Inner Feedforward
>> 
>> asum2 = adel3 - kff3 * adel2 ;2nd Inner Feedforward
>> 
>> aout = asum2 - kffo * ain ;Outer Feedforward
>> 
>> 
>> adel1 vdelay3 ain + kfbo * aout, kdel1, .5 ;Outer Feedback
>> 
>> adel2 vdelay3 adel1 + kfb2 * asum1, kdel2, .5 ;1st Inner Feedback
>> 
>> adel3 vdelay3 adel2 + kfb3 * asum2, kdel3, .5 ;2nd Inner Feedback
>> 
>> 
>> xout aout
>> 
>> endop
>> 
>> opcode doubleNested, a, akkikkikki ;i
>> 
>> 
>> setksmps 1
>> 
>> ain, kffo, kfbo, idel1, kff2, kfb2, idel2, kff3, kfb3, idel3 xin ;imaxdel
>> xin
>> 
>> 
>> adel1 init 0
>> 
>> adel2 init 0
>> 
>> adel3 init 0
>> 
>> asum1 init 0
>> 
>> asum2 init 0
>> 
>> aout init 0
>> 
>> 
>> asum1 = adel2 - kff2 * adel1 ;1st Inner Feedforward
>> 
>> asum2 = adel3 - kff3 * adel2 ;2nd Inner Feedforward
>> 
>> aout = asum2 - kffo * ain ;Outer Feedforward
>> 
>> 
>> adel1 delay ain + kfbo * aout, idel1 ;Outer Feedback
>> 
>> adel2 delay adel1 + kfb2 * asum1, idel2 ;1st Inner Feedback
>> 
>> adel3 delay adel2 + kfb3 * asum2, idel3 ;2nd Inner Feedback
>> 
>> 
>> xout aout
>> 
>> endop
>> 
>> 
>> instr csbookLargeRoom ;p.491
>> 
>> 
>> aout init 0
>> 
>> ain init 0
>> 
>> adn init 0
>> 
>> idelay init 0
>> 
>> 
>> krand rand 1
>> 
>> kport port krand/100, .1
>> 
>> 
>> adry, adry2 ins
>> 
>> aflt01 butterlp adry, 4000 ;Pre-Filter
>> 
>> aflt02 butterbp .5 * adn, 1000, 800;Feedback Filter
>> 
>> ain = aflt01 + .5 * aflt02
>> 
>> 
>> ap1 AllPass ain, .3, .3, .008
>> 
>> ap2 AllPass ain, .3, .3, .012
>> 
>> adel1 delay ap2, .004
>> 
>> adel2 delay adel1, .017
>> 
>> 
>> asn singleNested adel2, .5, .5, .025, .25, .25, .062
>> 
>> adel3 delay asn, .023
>> 
>> adel4 delay adel3, .003
>> 
>> 
>> adn doubleNested adel4, .5, .5, .120, .25, .25, .076, .25, .25, .030
>> 
>> 
>> aout = 1.5 * adel1 + .8 * adel3 + .8 * adn
>> 
>> 
>> outs aout, aout
>> 
>> endin
>> 
>> 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

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

Date2016-11-15 22:06
FromEmmett Palaima
SubjectRe: delay and vdelay opcode sound difference
Wow. I missed that milliseconds vs seconds entirely, that's definitely it. That is also good to note the difference in interpolation as well. I'll keep that in mind when I'm using the opcodes in a design. 

Thanks!

On Mon, Nov 7, 2016 at 1:29 AM, Victor Lazzarini <Victor.Lazzarini@nuim.ie> wrote:
also remember that the vdelay takes delay times in milliseconds and delay in seconds.

Victor Lazzarini
Dean of Arts, Celtic Studies, and Philosophy
Maynooth University
Ireland

> On 7 Nov 2016, at 02:29, Steven Yi <stevenyi@GMAIL.COM> wrote:
>
> I imagine the difference is due to vdelay being a linear interpolating
> delay line, while delay only does whole sample delays. I think with
> the short delay times used for a reverb, interpolation of some sort
> would be necessary.
>
>> On Sun, Nov 6, 2016 at 9:15 PM, Emmett Palaima <epalaima@berklee.edu> wrote:
>> Hi, I have been doing some experiments with reverb design recently, and
>> noticed that when I switch out the delay and vdelay opcodes the sound of my
>> reverb is very noticeably affected, even if the value of the delay times
>> remains the same. What is happening to cause this?
>>
>> Here is the example (P.491 in the Csound book) I was working on, all I did
>> was change the UDO (a double nested allpass filter) I am passing in,
>> vdoublenested uses a vdelay, and double nested uses a delay, both are given
>> the same fixed values:
>>
>> opcode vdoubleNested, a, akkkkkkkkk
>>
>>
>> setksmps 1
>>
>> ain, kffo, kfbo, kdel1, kff2, kfb2, kdel2, kff3, kfb3, kdel3 xin
>>
>>
>> adel1 init 0
>>
>> adel2 init 0
>>
>> adel3 init 0
>>
>> asum1 init 0
>>
>> asum2 init 0
>>
>> aout init 0
>>
>>
>> asum1 = adel2 - kff2 * adel1 ;1st Inner Feedforward
>>
>> asum2 = adel3 - kff3 * adel2 ;2nd Inner Feedforward
>>
>> aout = asum2 - kffo * ain ;Outer Feedforward
>>
>>
>> adel1 vdelay3 ain + kfbo * aout, kdel1, .5 ;Outer Feedback
>>
>> adel2 vdelay3 adel1 + kfb2 * asum1, kdel2, .5 ;1st Inner Feedback
>>
>> adel3 vdelay3 adel2 + kfb3 * asum2, kdel3, .5 ;2nd Inner Feedback
>>
>>
>> xout aout
>>
>> endop
>>
>> opcode doubleNested, a, akkikkikki ;i
>>
>>
>> setksmps 1
>>
>> ain, kffo, kfbo, idel1, kff2, kfb2, idel2, kff3, kfb3, idel3 xin ;imaxdel
>> xin
>>
>>
>> adel1 init 0
>>
>> adel2 init 0
>>
>> adel3 init 0
>>
>> asum1 init 0
>>
>> asum2 init 0
>>
>> aout init 0
>>
>>
>> asum1 = adel2 - kff2 * adel1 ;1st Inner Feedforward
>>
>> asum2 = adel3 - kff3 * adel2 ;2nd Inner Feedforward
>>
>> aout = asum2 - kffo * ain ;Outer Feedforward
>>
>>
>> adel1 delay ain + kfbo * aout, idel1 ;Outer Feedback
>>
>> adel2 delay adel1 + kfb2 * asum1, idel2 ;1st Inner Feedback
>>
>> adel3 delay adel2 + kfb3 * asum2, idel3 ;2nd Inner Feedback
>>
>>
>> xout aout
>>
>> endop
>>
>>
>> instr csbookLargeRoom ;p.491
>>
>>
>> aout init 0
>>
>> ain init 0
>>
>> adn init 0
>>
>> idelay init 0
>>
>>
>> krand rand 1
>>
>> kport port krand/100, .1
>>
>>
>> adry, adry2 ins
>>
>> aflt01 butterlp adry, 4000 ;Pre-Filter
>>
>> aflt02 butterbp .5 * adn, 1000, 800;Feedback Filter
>>
>> ain = aflt01 + .5 * aflt02
>>
>>
>> ap1 AllPass ain, .3, .3, .008
>>
>> ap2 AllPass ain, .3, .3, .012
>>
>> adel1 delay ap2, .004
>>
>> adel2 delay adel1, .017
>>
>>
>> asn singleNested adel2, .5, .5, .025, .25, .25, .062
>>
>> adel3 delay asn, .023
>>
>> adel4 delay adel3, .003
>>
>>
>> adn doubleNested adel4, .5, .5, .120, .25, .25, .076, .25, .25, .030
>>
>>
>> aout = 1.5 * adel1 + .8 * adel3 + .8 * adn
>>
>>
>> outs aout, aout
>>
>> endin
>>
>> 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

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