Csound Csound-dev Csound-tekno Search About

Mikelson waveguide slide-flute

Date2015-09-08 11:16
FromTarmo Johannes
SubjectMikelson waveguide slide-flute
Hi,

I am trying to study Hans Mikelson waveguid flute from the Csound Book, 
Chapter "Mathematical modeling with Csound: From Waveguides to Chaos"

Has anyone gone it thorugh or can explain me, what is the a-signal

afqc      =         1/ifqc - asum1/20000 -9/sr + ifqc/12000000

It is used to read from the delay buffers representing the flute embouchure 
and bore delay lines:

aflute1   deltapi   afqc 

ax deltapi afcs/2

The afcs is depends on asum1 that is basically random noise?

The entire intrument is pasted below

Thanks!

tarmo

 instr     1902

aflute1   init      0
ifqc      =         cpspch(p5)
ipress    =         p6
ibreath   =         p7
ifeedbk1  =         p8
ifeedbk2  =         p9

; FLOW SETUP
kenv1     linseg    0, .06, 1.1*ipress, .2, ipress, p3-.16, ipress, .02, 0 
;kenv1 linseg 0, 0.2, 1.1*ipress,0.02,0

kenv2     linseg    0, .01, 1, p3-.02, 1, .01, 0 ; declick, basically
kenvibr   linseg    0, .5, 0, .5, 1, p3-1, 1 ; VIBRATO ENVELOPE - start after 
0.5 seconds

; THE VALUES MUST BE APPROXIMATELY -1 TO 1 OR THE CUBIC WILL BLOW UP
aflow1    rand      kenv1
kvibr     oscil     .1*kenvibr, 5, 3

; ibreath CAN BE USED TO ADJUST THE NOISE LEVEL
asum1     =         ibreath*aflow1 + kenv1 + kvibr ; why + kenv1
asum2     =         asum1 + aflute1*ifeedbk1 

afqc      =         1/ifqc - asum1/20000 -9/sr + ifqc/12000000 ; what is this 
?

; EMBOUCHURE DELAY SHOULD BE 1/2 THE BORE DELAY
; ax      delay     asum2, (1/ifqc-10/sr)/2
atemp1    delayr    1/ifqc/2


ax        deltapi   afqc/2  ; - asum1/ifqc/10 + 1/1000 ;
          delayw    asum2
                              
apoly     =         ax - ax*ax*ax
asum3     =         apoly + aflute1*ifeedbk2  ; was asum3
gasum3+= asum3


avalue    tone      gasum3, 2000

; BORE, THE BORE LENGTH DETERMINES PITCH.  SHORTER IS HIGHER PITCH
atemp2    delayr    1/ifqc
aflute1   deltapi   afqc
          delayw    avalue

          out       avalue*p4*kenv2

          endin



------------------------------------------------------------------------------
_______________________________________________
Csound-users mailing list
Csound-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/csound-users
Send bugs reports to
        https://github.com/csound/csound/issues
Discussions of bugs and features can be posted here

Date2015-09-08 12:23
FromOeyvind Brandtsegg
SubjectRe: Mikelson waveguide slide-flute
I have looked as this earlier, but the details are a bit in the dark
just now. But let's see,
the basic delay time comes from 1/ifqc,
vibrato is added by kvibr and the kenv1 envelope seems to variations
in pressure over the time span of a note.
There seems to also be a (possibly empirical?) adjustment of the delay
time for tuning purposes, compensating for delay in the tone filter (
-9/sr + ifqc/12000000).
The noise component in the delay time is probably related to
breathy-ness (one aspect of which is the noise going into the delay
line and another is the amount of turbulence = random modulation of
the delay time).
Consider this guesswork, but hope it may help more than it confiuses.
Oeyvind

2015-09-08 12:16 GMT+02:00 Tarmo Johannes :
> Hi,
>
> I am trying to study Hans Mikelson waveguid flute from the Csound Book,
> Chapter "Mathematical modeling with Csound: From Waveguides to Chaos"
>
> Has anyone gone it thorugh or can explain me, what is the a-signal
>
> afqc      =         1/ifqc - asum1/20000 -9/sr + ifqc/12000000
>
> It is used to read from the delay buffers representing the flute embouchure
> and bore delay lines:
>
> aflute1   deltapi   afqc
>
> ax deltapi afcs/2
>
> The afcs is depends on asum1 that is basically random noise?
>
> The entire intrument is pasted below
>
> Thanks!
>
> tarmo
>
>  instr     1902
>
> aflute1   init      0
> ifqc      =         cpspch(p5)
> ipress    =         p6
> ibreath   =         p7
> ifeedbk1  =         p8
> ifeedbk2  =         p9
>
> ; FLOW SETUP
> kenv1     linseg    0, .06, 1.1*ipress, .2, ipress, p3-.16, ipress, .02, 0
> ;kenv1 linseg 0, 0.2, 1.1*ipress,0.02,0
>
> kenv2     linseg    0, .01, 1, p3-.02, 1, .01, 0 ; declick, basically
> kenvibr   linseg    0, .5, 0, .5, 1, p3-1, 1 ; VIBRATO ENVELOPE - start after
> 0.5 seconds
>
> ; THE VALUES MUST BE APPROXIMATELY -1 TO 1 OR THE CUBIC WILL BLOW UP
> aflow1    rand      kenv1
> kvibr     oscil     .1*kenvibr, 5, 3
>
> ; ibreath CAN BE USED TO ADJUST THE NOISE LEVEL
> asum1     =         ibreath*aflow1 + kenv1 + kvibr ; why + kenv1
> asum2     =         asum1 + aflute1*ifeedbk1
>
> afqc      =         1/ifqc - asum1/20000 -9/sr + ifqc/12000000 ; what is this
> ?
>
> ; EMBOUCHURE DELAY SHOULD BE 1/2 THE BORE DELAY
> ; ax      delay     asum2, (1/ifqc-10/sr)/2
> atemp1    delayr    1/ifqc/2
>
>
> ax        deltapi   afqc/2  ; - asum1/ifqc/10 + 1/1000 ;
>           delayw    asum2
>
> apoly     =         ax - ax*ax*ax
> asum3     =         apoly + aflute1*ifeedbk2  ; was asum3
> gasum3+= asum3
>
>
> avalue    tone      gasum3, 2000
>
> ; BORE, THE BORE LENGTH DETERMINES PITCH.  SHORTER IS HIGHER PITCH
> atemp2    delayr    1/ifqc
> aflute1   deltapi   afqc
>           delayw    avalue
>
>           out       avalue*p4*kenv2
>
>           endin
>
>
>
> ------------------------------------------------------------------------------
> _______________________________________________
> Csound-users mailing list
> Csound-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/csound-users
> Send bugs reports to
>         https://github.com/csound/csound/issues
> Discussions of bugs and features can be posted here


Date2015-09-08 13:29
FromTarmo Johannes
SubjectRe: Mikelson waveguide slide-flute
AttachmentsNone  None  

Thank you, Oeyvind!

 

afqc = 1/ifqc-asum1/20000-9/sr+ifqc/12000000

 

Yes, I guess you are right - everything after the 1/ifqc is probably empirical correction for the frequency. If to think, the value is practically 1/ifqc - that is length of the delay line (inversion of frequency), all other values are so small that it varies just very little.

 

tarmo

 

On Tuesday 08 September 2015 13:23:44 Oeyvind Brandtsegg wrote:

> I have looked as this earlier, but the details are a bit in the dark

> just now. But let's see,

> the basic delay time comes from 1/ifqc,

> vibrato is added by kvibr and the kenv1 envelope seems to variations

> in pressure over the time span of a note.

> There seems to also be a (possibly empirical?) adjustment of the delay

> time for tuning purposes, compensating for delay in the tone filter (

> -9/sr + ifqc/12000000).

> The noise component in the delay time is probably related to

> breathy-ness (one aspect of which is the noise going into the delay

> line and another is the amount of turbulence = random modulation of

> the delay time).

> Consider this guesswork, but hope it may help more than it confiuses.

> Oeyvind

>

> 2015-09-08 12:16 GMT+02:00 Tarmo Johannes <tarmo.johannes@otsakool.edu.ee>:

> > Hi,

> >

> > I am trying to study Hans Mikelson waveguid flute from the Csound Book,

> > Chapter "Mathematical modeling with Csound: From Waveguides to Chaos"

> >

> > Has anyone gone it thorugh or can explain me, what is the a-signal

> >

> > afqc = 1/ifqc - asum1/20000 -9/sr + ifqc/12000000

> >

> > It is used to read from the delay buffers representing the flute

> > embouchure

> > and bore delay lines:

> >

> > aflute1 deltapi afqc

> >

> > ax deltapi afcs/2

> >

> > The afcs is depends on asum1 that is basically random noise?

> >

> > The entire intrument is pasted below

> >

> > Thanks!

> >

> > tarmo

> >

> > instr 1902

> >

> > aflute1 init 0

> > ifqc = cpspch(p5)

> > ipress = p6

> > ibreath = p7

> > ifeedbk1 = p8

> > ifeedbk2 = p9

> >

> > ; FLOW SETUP

> > kenv1 linseg 0, .06, 1.1*ipress, .2, ipress, p3-.16, ipress, .02, 0

> > ;kenv1 linseg 0, 0.2, 1.1*ipress,0.02,0

> >

> > kenv2 linseg 0, .01, 1, p3-.02, 1, .01, 0 ; declick, basically

> > kenvibr linseg 0, .5, 0, .5, 1, p3-1, 1 ; VIBRATO ENVELOPE - start

> > after 0.5 seconds

> >

> > ; THE VALUES MUST BE APPROXIMATELY -1 TO 1 OR THE CUBIC WILL BLOW UP

> > aflow1 rand kenv1

> > kvibr oscil .1*kenvibr, 5, 3

> >

> > ; ibreath CAN BE USED TO ADJUST THE NOISE LEVEL

> > asum1 = ibreath*aflow1 + kenv1 + kvibr ; why + kenv1

> > asum2 = asum1 + aflute1*ifeedbk1

> >

> > afqc = 1/ifqc - asum1/20000 -9/sr + ifqc/12000000 ; what is

> > this ?

> >

> > ; EMBOUCHURE DELAY SHOULD BE 1/2 THE BORE DELAY

> > ; ax delay asum2, (1/ifqc-10/sr)/2

> > atemp1 delayr 1/ifqc/2

> >

> >

> > ax deltapi afqc/2 ; - asum1/ifqc/10 + 1/1000 ;

> >

> > delayw asum2

> >

> > apoly = ax - ax*ax*ax

> > asum3 = apoly + aflute1*ifeedbk2 ; was asum3

> > gasum3+= asum3

> >

> >

> > avalue tone gasum3, 2000

> >

> > ; BORE, THE BORE LENGTH DETERMINES PITCH. SHORTER IS HIGHER PITCH

> > atemp2 delayr 1/ifqc

> > aflute1 deltapi afqc

> >

> > delayw avalue

> >

> > out avalue*p4*kenv2

> >

> > endin

> >

> > --------------------------------------------------------------------------

> > ---- _______________________________________________

> > Csound-users mailing list

> > Csound-users@lists.sourceforge.net

> > https://lists.sourceforge.net/lists/listinfo/csound-users

> > Send bugs reports to

> >

> > https://github.com/csound/csound/issues

> >

> > Discussions of bugs and features can be posted here