Re: a modern waveguide built-in opcode?
Date | 2007-08-23 23:27 |
From | Victor Lazzarini |
Subject | Re: a modern waveguide built-in opcode? |
Well then I can try making it into a wguide3. I'll report back. Victor > > I think repluck has tuning problems. It sounds clearly > out-of-tune in some sample pieces I tried, using the > self-plucking feature. Also there was some reason it > didn't function like modern_waveguide in response to > input.. I put a burst of noise into it, and got out mostly > noise with very little pitch. > > Mike > > Victor Lazzarini wrote: > > what about repluck ? > > > > ares repluck iplk, kamp, icps, kpick, krefl, axcite > > > > Victgor > > > >> What's the chance that a future version of csound could > >> include include the "modern waveguide" that Victor > wrote >> several years back? Right now there are no > waveguides >> which are both tuned to fractional samples > and have >> minimal filtering. 'waveguide' is not tuned > (the last time >> I checked) and 'streson' has a lot of > filtering so that >> high pitches have very fast decay. > >> > >> I don't have time to learn csound and write it myself, > >> otherwise I would. > >> > >> The csound opcode version is > >> > >> ; > >> > ---------------------------------------------------------- > >> -- ; User-defined opcode implmenting a wave guide > model. >> ; > >> > ---------------------------------------------------------- > >> -- ; >> ; aout modern_waveguide ain, ifreq, idec, > kpkpos >> ; > >> ; ifreq: frequency > >> ; idec: decary factor in dB/sec > >> ; kpkpos: pick-up position (assuming a string) > >> ; > >> opcode modern_waveguide, a, aiik > >> > >> /* now we combine the modern waveguide model > >> with the ideas developed with the KS model */ > >> > >> ain, ifun, idec, kpkpos xin > >> > >> ipi = -4*taninv(-1) > >> > >> idts = sr/ifun /* total delay time (samples) */ > >> idtt = int(sr/ifun) /* truncated delay time */ > >> idel = idts/sr /* delay time (secs) */ > >> > >> > >> ifac init 1 /* decay shortening factor (fdb > gain) >> */ is init 0.5 /* loss filter > coefficient */ >> > >> igf pow 10, -idec/(20*ifun) /* gain required for a > certain >> decay */ ig = cos(ipi*ifun/sr) /* unitary > gain with >> s=0.5 */ > >> > >> if igf > ig igoto stretch /* if decay needs lengthening > */ >> ifac = igf/ig /* if decay needs > shortening */ >> goto continue > >> > >> stretch: > >> icosfun = cos(2*ipi*ifun/sr) > >> ia = 2 - 2*icosfun > >> ib = 2*icosfun - 2 > >> ic = 1 - igf*igf > >> id = sqrt(ib*ib - 4*ia*ic) > >> is1 = (-ib + id)/(ia*2) > >> is2 = (-ib - id)/(ia*2) > >> is = (is1 < is2 ? is1 : is2) > >> > >> continue: > >> ax1 init 0 /* filter delay variable */ > >> apx1 init 0 /* allpass fwd delay variable */ > >> apy1 init 0 /* allpass fdb delay variable */ > >> > >> idtt = ((idtt+is) > (idts) ? idtt - 1: idtt) > >> ifd = (idts - (idtt + is)) /* fractional delay */ > >> icoef = (1-ifd)/(1+ifd) /* allpass coefficient */ > >> > >> atmp delayr 1.0 > >> > >> adel deltapn idtt > >> > >> aflt = (adel*(1-is) + ax1*is)*ifac /* LP filter */ > >> ax1 = adel > >> alps = icoef*(aflt - apy1) + apx1 /* AP filter */ > >> apx1 = aflt > >> apy1 = alps > >> > >> ;;; tablew alps, awp, itab1, 0 ,0 ,1 > >> > >> atap1 deltapn (1-kpkpos) * idtt / 2 > >> atap2 deltapn kpkpos * idtt / 2 > >> delayw alps + ain > >> > >> aout = atap1 + atap2 > >> xout aout > >> endop > >> > >> -- > >> Send bugs reports to this list. > >> To unsubscribe, send email to > >> csound-unsubscribe@lists.bath.ac.uk > > -- > Send bugs reports to this list. > To unsubscribe, send email to > csound-unsubscribe@lists.bath.ac.uk |
Date | 2007-08-24 01:40 |
From | "Michael P. Mossey" |
Subject | Re: a modern waveguide built-in opcode? |
That would be great! I can start to run my compositions without needing krate = arate. Much more complex real-time stuff, I think, will be possible. -Mike Victor Lazzarini wrote: > Well then I can try making it into a wguide3. I'll > report back. > > Victor > >> I think repluck has tuning problems. It sounds clearly >> out-of-tune in some sample pieces I tried, using the >> self-plucking feature. Also there was some reason it >> didn't function like modern_waveguide in response to >> input.. I put a burst of noise into it, and got out mostly >> noise with very little pitch. >> >> Mike >> >> Victor Lazzarini wrote: >>> what about repluck ? >>> >>> ares repluck iplk, kamp, icps, kpick, krefl, axcite >>> >>> Victgor >>> >>>> What's the chance that a future version of csound could >>>> include include the "modern waveguide" that Victor >> wrote >> several years back? Right now there are no >> waveguides >> which are both tuned to fractional samples >> and have >> minimal filtering. 'waveguide' is not tuned >> (the last time >> I checked) and 'streson' has a lot of >> filtering so that >> high pitches have very fast decay. >>>> I don't have time to learn csound and write it myself, >>>> otherwise I would. >>>> >>>> The csound opcode version is >>>> >>>> ; >>>> >> ---------------------------------------------------------- >>>> -- ; User-defined opcode implmenting a wave guide >> model. >> ; >> ---------------------------------------------------------- >>>> -- ; >> ; aout modern_waveguide ain, ifreq, idec, >> kpkpos >> ; >>>> ; ifreq: frequency >>>> ; idec: decary factor in dB/sec >>>> ; kpkpos: pick-up position (assuming a string) >>>> ; >>>> opcode modern_waveguide, a, aiik >>>> >>>> /* now we combine the modern waveguide model >>>> with the ideas developed with the KS model */ >>>> >>>> ain, ifun, idec, kpkpos xin >>>> >>>> ipi = -4*taninv(-1) >>>> >>>> idts = sr/ifun /* total delay time (samples) */ >>>> idtt = int(sr/ifun) /* truncated delay time */ >>>> idel = idts/sr /* delay time (secs) */ >>>> >>>> >>>> ifac init 1 /* decay shortening factor (fdb >> gain) >> */ is init 0.5 /* loss filter >> coefficient */ >> >>>> igf pow 10, -idec/(20*ifun) /* gain required for a >> certain >> decay */ ig = cos(ipi*ifun/sr) /* unitary >> gain with >> s=0.5 */ >>>> if igf > ig igoto stretch /* if decay needs lengthening >> */ >> ifac = igf/ig /* if decay needs >> shortening */ >> goto continue >>>> stretch: >>>> icosfun = cos(2*ipi*ifun/sr) >>>> ia = 2 - 2*icosfun >>>> ib = 2*icosfun - 2 >>>> ic = 1 - igf*igf >>>> id = sqrt(ib*ib - 4*ia*ic) >>>> is1 = (-ib + id)/(ia*2) >>>> is2 = (-ib - id)/(ia*2) >>>> is = (is1 < is2 ? is1 : is2) >>>> >>>> continue: >>>> ax1 init 0 /* filter delay variable */ >>>> apx1 init 0 /* allpass fwd delay variable */ >>>> apy1 init 0 /* allpass fdb delay variable */ >>>> >>>> idtt = ((idtt+is) > (idts) ? idtt - 1: idtt) >>>> ifd = (idts - (idtt + is)) /* fractional delay */ >>>> icoef = (1-ifd)/(1+ifd) /* allpass coefficient */ >>>> >>>> atmp delayr 1.0 >>>> >>>> adel deltapn idtt >>>> >>>> aflt = (adel*(1-is) + ax1*is)*ifac /* LP filter */ >>>> ax1 = adel >>>> alps = icoef*(aflt - apy1) + apx1 /* AP filter */ >>>> apx1 = aflt >>>> apy1 = alps >>>> >>>> ;;; tablew alps, awp, itab1, 0 ,0 ,1 >>>> >>>> atap1 deltapn (1-kpkpos) * idtt / 2 >>>> atap2 deltapn kpkpos * idtt / 2 >>>> delayw alps + ain >>>> >>>> aout = atap1 + atap2 >>>> xout aout >>>> endop >>>> >>>> -- >>>> Send bugs reports to this list. >>>> To unsubscribe, send email to >>>> csound-unsubscribe@lists.bath.ac.uk >> -- >> Send bugs reports to this list. >> To unsubscribe, send email to >> csound-unsubscribe@lists.bath.ac.uk |
Date | 2007-08-24 09:20 |
From | Victor Lazzarini |
Subject | Re: a modern waveguide built-in opcode? |
But you can do krate = arate in a UDO only, by using setksmps 1 right now. Victor At 01:40 24/08/2007, you wrote: >That would be great! I can start to run my compositions without needing >krate = arate. Much more complex real-time stuff, I think, will be possible. > >-Mike > >Victor Lazzarini wrote: >>Well then I can try making it into a wguide3. I'll >>report back. >>Victor >> >>>I think repluck has tuning problems. It sounds clearly >>>out-of-tune in some sample pieces I tried, using the >>>self-plucking feature. Also there was some reason it >>>didn't function like modern_waveguide in response to >>>input.. I put a burst of noise into it, and got out mostly >>>noise with very little pitch. >>> >>>Mike >>> >>>Victor Lazzarini wrote: >>>>what about repluck ? >>>> >>>>ares repluck iplk, kamp, icps, kpick, krefl, axcite >>>> >>>>Victgor >>>> >>>>>What's the chance that a future version of csound could >>>>>include include the "modern waveguide" that Victor >>>wrote >> several years back? Right now there are no >>>waveguides >> which are both tuned to fractional samples >>>and have >> minimal filtering. 'waveguide' is not tuned >>>(the last time >> I checked) and 'streson' has a lot of >>>filtering so that >> high pitches have very fast decay. >>>>>I don't have time to learn csound and write it myself, >>>>>otherwise I would. >>>>> >>>>>The csound opcode version is >>>>> >>>>>; >>>---------------------------------------------------------- >>>>>-- ; User-defined opcode implmenting a wave guide >>>model. >> ; >>>---------------------------------------------------------- >>>>>-- ; >> ; aout modern_waveguide ain, ifreq, idec, >>>kpkpos >> ; >>>>>; ifreq: frequency >>>>>; idec: decary factor in dB/sec >>>>>; kpkpos: pick-up position (assuming a string) >>>>>; >>>>>opcode modern_waveguide, a, aiik >>>>> >>>>>/* now we combine the modern waveguide model >>>>>with the ideas developed with the KS model */ >>>>> >>>>>ain, ifun, idec, kpkpos xin >>>>> >>>>>ipi = -4*taninv(-1) >>>>> >>>>>idts = sr/ifun /* total delay time (samples) */ >>>>>idtt = int(sr/ifun) /* truncated delay time */ >>>>>idel = idts/sr /* delay time (secs) */ >>>>> >>>>> >>>>>ifac init 1 /* decay shortening factor (fdb >>>gain) >> */ is init 0.5 /* loss filter >>>coefficient */ >> >>>>>igf pow 10, -idec/(20*ifun) /* gain required for a >>>certain >> decay */ ig = cos(ipi*ifun/sr) /* unitary >>>gain with >> s=0.5 */ >>>>>if igf > ig igoto stretch /* if decay needs lengthening >>>*/ >> ifac = igf/ig /* if decay needs >>>shortening */ >> goto continue >>>>>stretch: >>>>>icosfun = cos(2*ipi*ifun/sr) >>>>>ia = 2 - 2*icosfun >>>>>ib = 2*icosfun - 2 >>>>>ic = 1 - igf*igf >>>>>id = sqrt(ib*ib - 4*ia*ic) >>>>>is1 = (-ib + id)/(ia*2) >>>>>is2 = (-ib - id)/(ia*2) >>>>>is = (is1 < is2 ? is1 : is2) >>>>> >>>>>continue: >>>>>ax1 init 0 /* filter delay variable */ >>>>>apx1 init 0 /* allpass fwd delay variable */ >>>>>apy1 init 0 /* allpass fdb delay variable */ >>>>> >>>>>idtt = ((idtt+is) > (idts) ? idtt - 1: idtt) >>>>>ifd = (idts - (idtt + is)) /* fractional delay */ >>>>>icoef = (1-ifd)/(1+ifd) /* allpass coefficient */ >>>>> >>>>>atmp delayr 1.0 >>>>> >>>>>adel deltapn idtt >>>>> >>>>> aflt = (adel*(1-is) + ax1*is)*ifac /* LP filter */ >>>>> ax1 = adel >>>>> alps = icoef*(aflt - apy1) + apx1 /* AP filter */ >>>>> apx1 = aflt >>>>> apy1 = alps >>>>> >>>>>;;; tablew alps, awp, itab1, 0 ,0 ,1 >>>>> >>>>>atap1 deltapn (1-kpkpos) * idtt / 2 >>>>>atap2 deltapn kpkpos * idtt / 2 >>>>> delayw alps + ain >>>>> >>>>> aout = atap1 + atap2 >>>>> xout aout >>>>>endop >>>>> >>>>>-- >>>>>Send bugs reports to this list. >>>>>To unsubscribe, send email to >>>>>csound-unsubscribe@lists.bath.ac.uk >>>-- >>>Send bugs reports to this list. >>>To unsubscribe, send email to >>>csound-unsubscribe@lists.bath.ac.uk > >-- >Send bugs reports to this list. >To unsubscribe, send email to csound-unsubscribe@lists.bath.ac.uk Victor Lazzarini Music Technology Laboratory Music Department National University of Ireland, Maynooth |