56
IMPLEMENTATION EN TEMPS REEL DES RETARDS FRACTIONNAIRES VARIABLES PAR INTERPOLATION DE LAGRANGE Rapport de stage présenté par Geoffroy PEETERS DEA A.T.I.A.M. 1995-1996 Université Paris VI réalisé au Département Analyse/Synthèse de l'I.R.C.A.M. sous la direction de Ph. Depalle et S. Tassart Année universitaire 1995-1996

Peeters 1996 DEA-ATIAM RetardsFractionnaires

Embed Size (px)

Citation preview

  • IMPLEMENTATION EN TEMPS REEL DESRETARDS FRACTIONNAIRES VARIABLES PAR

    INTERPOLATION DE LAGRANGE

    Rapport de stage prsent parGeoffroy PEETERS

    DEA A.T.I.A.M. 1995-1996Universit Paris VI

    ralis au Dpartement Analyse/Synthse de l'I.R.C.A.M.sous la direction de Ph. Depalle et S. Tassart

    Anne universitaire 1995-1996

  • Implmentation en temps rel des retards fractionnaires par interpolation de Lagrange 2.

    Remerciements

    Je tiens remercier Stphan Tassart et Philippe Depalle,pour l'aide et les nombreux conseils qu'ils m'ont fournis pendant mon stage

    ainsi que Xavier Rodet,pour les mmes raisons

    merci galement Maurizio De Cecco, Franois Dchelle,et Norbert Schnell de l'quipe temps rel

  • Implmentation en temps rel des retards fractionnaires par interpolation de Lagrange 3.

  • Implmentation en temps rel des retards fractionnaires par interpolation de Lagrange 4.

    INTRODUCTION

    De nombreux modles physiques en synthse sonore repose sur la thorie des guidesd'ondes numriques ([9] [19]). Ces mthodes consistent simuler la propagation d'ondesacoustiques dans le guide d'onde l'aide de ligne retard numrique. Dans ces conditions lalongueur du guide d'onde se retrouve quantifie par la frquence d'chantillonnage. Le rglagefin de la longueur des guides d'ondes s'obtient par l'adjonction au modle de filtres ralisantsdes retards fractionnaires. En particulier, les retards fractionnaires sont les seuls recoursdisponibles pour modifier continment la longueur des guides d'ondes.

    Ce travail aura pour but de fournir une implmentation en temps rel des retardsfractionnaires variables. Il s'agira d'valuer les diffrentes stratgies d'implmentation et decontrle du filtre afin d'liminer toute distorsion possible du signal.

    Dans la premire partie de ce travail, nous dfinissons les retards fractionnairesnumriques idaux et expliquons pourquoi ceux-ci ne peuvent tre raliss. Nous montronsdiffrentes mthodes d'approximations pour la ralisation de filtres R.I.F. et I.I.F. approximantles retards fractionnaires. Parmi celles-ci, le critre de platitude maximale basse frquencequivalent l'interpolation de Lagrange semble tout indiqu pour une utilisation dans le casde retards fractionnaires variables.

    Ds lors dans la deuxime partie nous tudions deux implmentations diffrentes desfiltres interpolateurs de Lagrange : une implmentation sous forme de structure de Farrow (oude structure de Farrow modifie) et une nouvelle implmentation sous forme de structuremodulaire du filtre. Nous comparons alors les deux implmentations du point de vue du cotde calcul et de leur comportement dans un contexte de retards fractionnaires variables.

    Dans la troisime partie, nous utilisons la nouvelle implmentation des F.I.L. sous formede structure modulaire dans la ralisation d'un modle physique simplifi d'instrument tube.Ce modle sera ralis sur le logiciel temps rel de l'IRCAM Max/FTS, et nous conduira laralisation de nouveaux objets externes pour la ralisation du modle.

  • Implmentation en temps rel des retards fractionnaires par interpolation de Lagrange 5.

    1. THEORIE DES RETARDS FRACTIONNAIRES

    Dans cette premire partie, nous dfinissons les retards fractionnaires idaux. Ceci serafait par rfrence au temps continu, bien que d'autres dfinitions soient possibles. Nousdonnons galement la forme idale que devraient revtir les filtres les ralisant ainsi que lesapproximations que nous devrons faire pour les raliser.

    1.1. Dfinition des retards fractionnaires idaux

    En temps continu, le retard sur un signal x tc ( ) s'exprime :

    y t x tc c( ) ( )= , o constitue le retard dsir.La fonction de transfert de cet lment de retard peut s'crire l'aide de la transforme deFourier :

    H j ec id cj c

    , ( )

    =

    En temps discret, le mme retard sur un signal qui se doit maintenant d'tre largeur de bandefinie, s'exprimera :

    y n x n D( ) ( )= , o D T= / entier, T constituant la priode d'chantillonnage.La transforme en z tant uniquement dfinie pour des puissances entires de z, la fonction detransfert en temps discret H eid j( ) de cette lment de retard s'crira :

    H e eidj j D( ) =

    avec pi et D N

    Celle-ci constitue la fonction de transfert d'un retard idal en temps discret, qui est donc depriode 2pi .Produire un retard fractionnaire en temps discret, consiste calculer l'amplitude du signalcontinu sous-jacent au signal discret (reconstruction) entre deux chantillons. La dfinitiondes retards fractionnaires par rfrence au temps continu [2] se fait donc de la maniresuivante : partir d'une squence discrte x k , nous reconstruisons le signal continucorrespondant x tc ( ) en utilisant la fonction de Whittaker, nous dcalons ensuite ce signalcontinu du retard D dsir et r-chantillonnons le signal continu dcal. Nous obtenons ainsile retard fractionnaire dsir D sur la squence discrte x k [21].

    ( ) ( ) ( ) ( )

    ==

    =

    Zn

    ncretard

    Zn

    nc

    nagechantillotionreconstruc

    nDnh

    n

    nDtxDtxntxtx

    Dnxxxd

    )sinc()()sinc()(

    sinc

  • Implmentation en temps rel des retards fractionnaires par interpolation de Lagrange 6.

    Remarquons que nous devons limiter cette dfinition aux signaux discrets bande limite, i.e.aux signaux dont la composante la frquence de Nyquist est nulle [21]. Prenons commeexemple la squence discrte { } Zkk )1( . Cette squence prsentant de l'nergie uniquement la frquence de Nyquist, tous les signaux continus de type cos( )

    cos( )

    pit + sont candidats sa

    reconstruction puisque donnant lieu aprs chantillonnage la mme squence. Commentretarder cette squence de D chantillons puisque a priori pour toute valeur K il est possiblede trouver une valeur tel que { } ZkkK )1( puisse tre interprte comme la retarde de{ }

    Zk

    k

    )1(

    . Pour rsoudre ce problme nous limiterons notre domaine de dfinition auxsignaux discrets bande limite. H eid j( ) n'est donc ni dfinie ni continue en pi= .

    L'interpolateur idal bande limite ainsi dfini a comme fonction de transfert :H eid

    j D( ) = avec pi< et D non-rel, il possde les caractristiques suivantes :

    - rponse en amplitude : H eid j( ) = 1

    - rponse en phase : { } DeH jid =)(argIl s'agit donc d'un systme passe-tout phase linaire. De plus

    - retard de phase : { }

    DeH

    j

    ididp ==

    )(arg

    )(,

    - retard de groupe : { }

    DeH jid

    idg

    )(arg

    )(, =

    Le retard idal dcale donc toutes les composantes frquentielles du mme retard D.

    La rponse impulsionnelle (R.I.) du retard idal s'crith n n Did ( ) sinc( )= .

    Cette fonction est une version dcale et chantillonne du sinus cardinal. Elle s'annule pourtoutes les valeurs entires de D excepte celles o D=n, dans ce cas elle vaut exactement 1.

    Quand D est entier , la rponse impulsionnelle correspond exactement la fonction deDirac dcale. La R.I. d'un retard entier se rduit donc un simple retard au senstraditionnel numrique (voir figure 1-1a.).

    Par contre si D est rel et non entier , la R.I. ne s'annule pour aucune valeur de n. La R.I.est dans ce cas infiniment longue (voir figure 1-1b.). h nid ( ) correspond alors un filtrenon-causal, qui ne peut pas tre rendu causal par aucun dcalage fini dans le temps. Deplus le filtre n'est pas BIBO (Bounded Input Bouded Output) puisqu'il n'est pasabsolument-sommable. En conclusion pour D rel et non entier, le filtre n'est pasralisable et des approximations devront tre utilises.

  • Implmentation en temps rel des retards fractionnaires par interpolation de Lagrange 7.

    Figures 1-1a. 1-1b La fonction sinus cardinal dcale de D=3 chantillons et dcale deD=3.3 chantillons

    source : [24]

    Autres approches de la dfinition des retards fractionnairesNous mentionnons l'existence d'autres approches thoriques qui permettent de dfinir lesretards fractionnaires.En particulier quand le retard est rationnel : par sur-chantillonnage puis sous-chantillonnage(ce qui revient rsoudre ( )[ ] qjpjid eeH = et par cumulation de retards

    ( ) qjpjid eeH = ).Evidemment toutes ces approches aboutissent au mme rsultat en ce qui concerne la TFTDdu retard idal.

  • Implmentation en temps rel des retards fractionnaires par interpolation de Lagrange 8.

    1.2. Approximation des retards fractionnaires par filtres R.I.F.

    Dans le paragraphe 1.1. nous avons dfini les retards fractionnaires idaux numriques, nousavons galement vu que la ralisation de ceux-ci ncessite des approximations puisque lefiltre ralisant la rponse impulsionnelle idale n'est pas ralisable. Dans ce paragraphe-ci etdans le suivant nous prsentons quelques approches aboutissants diffrentes approximationspermettant la ralisation de filtres R.I.F. et R.I.I. pour les retards fractionnaires.

    1.2.1. Filtres R.I.F. par fentrage de la rponse impulsionnelle idale des retards fractionnaires

    Nous prsentons rapidement ici diffrentes mthodes de ralisations de filtres R.I.F. parfentrage de la rponse impulsionnelle idale du retard fractionnaire (voir aussi [1] [11]) :

    h n n Did ( ) ( )= sinc

    La transforme en z du filtre R.I.F. d'ordre N que nous cherchons est de la forme

    H z h n z n

    n

    N

    ( ) ( )=

    =

    0

    Nous dfinissons la fonction d'erreur ( )jeE , diffrence entre l'approximation que nouscherchons et la fonction de transfert idale :

    ( ) ( ) ( ) jidjj eHeHeE =1.2.1.1. Mthode des moindres carrs

    Dans cette mthode (voir [1], [18]) nous cherchons minimiser la fonction d'erreur desmoindres carrs :

    ( ) pi

    pi deEE jLS =

    0

    21.

    Pour un filtre R.I.F. d'ordre N, la solution optimale est celle consistant tronquer les N+1coefficients de h nid ( ) autour de sa valeur maximale (l'erreur d'approximation diminuantvidemment avec l'ordre N). La rponse impulsionnelle du filtre R.I.F. ainsi cr est :

    =

    casautreslesdans

    NnDnnh

    0

    0)(sinc)(

    Afin de minimiser l'erreur, N doit tre choisi de faon ce que [24]:N

    DN +1

    2

    1

    2 pour N impair,

    i.e. D doit tre localis entre les deux pics centraux du sinus cardinalN

    DN

    21

    21 +

    pour N pair,

    i.e. D doit tre localis moins d'un demi-chantillon du pic central de sinus carcinalLe problme de cette mthode de construction de filtres R.I.F. rside dans l'existence d'unphnomne de Gibbs, i.e. l'oscillation de la rponse en frquence tant en amplitude qu'enpahse et ce indpendamment de l'ordre du filtre.

  • Implmentation en temps rel des retards fractionnaires par interpolation de Lagrange 9.

    1.2.1.2. Mthode des moindres carrs avec bande passante rduiteCette mthode est une variante de la prcdente. Cette fois un interpolateur passe-bas estutilis comme filtre prototype la place d'un filtre interpolateur toute bande (voir [11]). Lasolution idale est celle qui minimise l'erreur dans l'intervalle de frquence

    2,0

    (0 1<

  • Implmentation en temps rel des retards fractionnaires par interpolation de Lagrange 10.

    ( ) =

    =

    N

    nkk kn

    kDDnh

    0

    , pour n = 0,1, ... , N

    Il est remarquable de noter que les coefficients ainsi obtenus sont identiques ceux d'uninterpolateur de Lagrange d'ordre N. L'interpolation de Lagrange (rappelons le) consiste faire passer un polynme d'ordre N par N+1 points quidistants et d'en dduire les valeursintermdiaires (voir figure 1-2).

    D*

    Figure 1-2. Interpolateur de Lagrange d'ordre 3 passant par 4 points quidistants, valu enD

    Autrement dit, le filtre interpolateur de Lagrange (F.I.L.) d'ordre N et de retard D correspondau filtre R.I.F. d'ordre N dont la fonction de transfert vrifie le critre de platitude maximale[7].Remarque : Le filtre vrifiant le critre de platitude maximale s'interprte galement commele filtre rponse impulsionnelle finie qui approxime le mieux possible la transforme deFourier de la rponse impulsionnelle idale la frquence nulle; il ne donne donc pasd'indications sur le comportement en dehors du voisinage de la frquence nulle, seul lecomportement local est garanti [21]. Pour le domaine d'application qui nous intresse, lesmodles de synthse sonore par guide d'onde, ceci ne nous pose pas de problme puisque ledomaine de frquence utilis est justement celui des basses frquences (les instruments demusique ayant essentiellement un contenu basse frquence).

    Autre approche : interpolateur de Lagrange par fentrage binomial de la rponseimpulsionnelle idale [10]

  • Implmentation en temps rel des retards fractionnaires par interpolation de Lagrange 11.

    1.2.2.2. Proprits des filtres interpolateurs de Lagrange

    - Symtrie des coefficients des filtres interpolateur de LagrangeUne proprit importante de l'interpolateur de Lagrange est la symtrie de ses coefficientsh n D( , )

    . Les coefficients pour le retard fractionnaire N-D sont les mmes que ceux pour leretard fractionnaire D mais dans l'ordre inverse.

    h n D h N n N D( , ) ( , )=

    Nous verrons plus loin (voir 2.2.2.) que l'intrt de cette proprit rside dans le fait quelorsque le retard passe de D N-D, du fait de la symtrie des coefficients (et donc de larponse impulsionnelle), la rponse en amplitude de filtre ralisant l'interpolation de Lagrangereste la mme :

    H

    H

    ND

    NN D

    = 1

    Dans le cadre de retards fractionnaires variables cette proprit prsente un intrt dcisifpoussant l'utilisation des filtres interpolateurs de Lagrange pour leur approximation.

    - Calcul de l'erreur d'approximation des filtres interpolateur de Lagrange (voir aussi [1][15])L'erreur d'approximation dpend de la partie fractionnaire du retard D :

    si D est entier, la rponse impulsionnelle du filtre interpolateur de Lagrange se rduit une impulsion unitaire dcale et l'erreur est nulle.

    si D est non-entier, l'erreur maximale se prsente quand la partie fractionnaire s'approchede 0.5. (voir [1]).

    L'erreur d'approximation dpend aussi fortement de la parit de l'ordre du filtre [11] : les filtres d'ordre pair permettent de diminuer l'erreur en amplitude (voir figures 1-3a 1-

    3b), les filtres d'ordre impairs permettent de diminuer l'erreur de phase (voir figures 1-4a 1-

    4b).Pour une formulation de ces proprits, nous renvoyons le lecteur au paragraphe 2.3.2..

    Page suivante :Figures 1-3a. 1-3b Rponse en amplitude et retard de phase d'un filtre interpolateur de

    Lagrange d'ordre 2 (N=2) pour 11 valeurs quidistantes (D=0.5, 0.6, 0.7, ... , 1.5)

    Figures 1-4a. 1-4b Rponse en amplitude et retard de phase d'un filtre interpolateur deLagrange d'ordre 3 (N=3) pour 11 valeurs quidistantes (D=1.0, 1.1, 1.2, ... , 2.0)

    source : [24]

  • Implmentation en temps rel des retards fractionnaires par interpolation de Lagrange 12.

  • Implmentation en temps rel des retards fractionnaires par interpolation de Lagrange 13.

    - Passivit des filtres interpolateurs de LagrangeUn constat exprimental [11] [24] est que la rponse en amplitude des filtres interpolateurs deLagrange ne dpasse jamais l'unit pour peu que la condition suivante soit ralise

    ND

    N +12

    1

    2pour N impair

    ND

    N

    21

    21 + pour N pair

    La passivit des filtres interpolateurs de Lagrange est particulirement importante dans notrecontexte de modle physique o les filtres sont incorpors dans une boucle de rtroaction.C'est une condition ncessaire pour la stabilit de la boucle.

    1.3. Approximation des retards fractionnaires par filtres R.I.I. Passe-Tout

    Dans ce paragraphe nous prsentons brivement l'utilisation de filtres R.I.I. ou rcursifs passe-tout pour la ralisation de retards fractionnaires.

    Ces filtres ont une rponse en amplitude constante unitaire et ce quelque soit l'ordre du filtre.Leur rponse en phase est de plus paramtrable. Ils semblent donc tout indiqus pour laralisation de retards fractionnaires qui est avant tout un problme d'approximation de phase.La fonction de transfert du filtre R.I.I. passe-tout d'ordre N s'exprime :

    H zz A z

    A z

    a a z a z z

    a z a z a z

    NN N

    N N

    NN

    NN

    ( )( )

    ( )

    ...

    .. .

    ( )

    ( )= =

    + + + +

    + + + +

    11

    11

    1

    11

    111

    Les ples et les zros d'un filtre R.I.I. passe-tout tant inverse l'un de l'autre, la rponse enamplitude est constante et gale un :

    H e j( ) = 1

    Rappelons que pour qu'un filtre passe-tout soit stable les ples de la fonction de transfertdoivent se trouver l'intrieur du cercle unit.La rponse en phase s'exprime :

    { } )(2)(arg Dj NeH +=o D ( ) est la rponse en phase de son dnominateur :

    =

    =

    =

    N

    k

    k

    N

    k

    k

    D

    ka

    ka

    0

    0

    )cos(

    )sin(

    arctan)(

    La ralisation de retards fractionnaires sous forme de filtres R.I.I. passe-tout peut se faire enappliquant le critre de platitude maximale sur le retard de phase (voir [11]). Thiran [23]propose une solution analytique pour retrouver les coefficients d'un filtre passe-tout d'ordre Napproximant un retard fractionnaire D :

    =

    ++

    +

    =

    N

    n

    k

    knkND

    nND

    k

    Na

    0

    )1( pour k=0, 1, ... , N

    o )!(!!

    kNk

    N

    k

    N

    =

    est le produit binomial

  • Implmentation en temps rel des retards fractionnaires par interpolation de Lagrange 14.

    Le filtre passe-tout est stable lorsque N D

  • Implmentation en temps rel des retards fractionnaires par interpolation de Lagrange 15.

    2. IMPLEMENTATION DES FILTRES INTERPOLATEURS DE LAGRANGE POURLAPPROXIMATION DE RETARDS FRACTIONNAIRES

    Jusqu' prsent, nous avons dfini les retards fractionnaires idaux, et prsent diffrentesformes d'approximations de ceux-ci sous forme de filtres R.I.F. : par fentrage de la rponseimpulsionnelle idale ou par application du critre de platitude maximale quivalent l'interpolation de Lagrange; ou sous forme de filtres R.I.I. passe-tout.Le problme qui nous intresse tant celui de la ralisation de retards fractionnaires variables,nous tudions dans ce paragraphe les implmentations les plus appropries des filtresinterpolateurs de Lagrange (voir 1.2.2).Nous exposons deux implmentations diffrentes de ces filtres : l'une sous forme de structurede Farrow (ou de structure de Farrow modifie) et l'autre sous forme d'une nouvelle structuremodulaire utilisant le dveloppement en srie de puissance. Nous tudions leur cot de calcul,ainsi que leur comportement dans le contexte de retards fractionnaires variables. Dans ce cas,l'adjonction au F.I.L. d'une ligne de retard entier et ds lors d'une remise jour de l'tat dusystme est ncessaire.C'est deux implmentations ont fait l'objet d'une ralisation utilisable en temps rel surMax/FTS. L'implmentation sous forme de structure de Farrow modifie est utilise dansl'objet externe "vd~" crit par Miller-Puckette. L'implmentation sous forme de structuremodulaire est utilise dans l'objet "fd~" crit au cours de ce stage.

    2.1. Implmentation des F.I.L. sous forme directe de filtre R.I.F.

    Nous ne parlons de cette implmentation directe des F.I.L. que dans la mesure o elle nousdonne un point de rfrence concernant la complexit de calcul des filtres.

    Dans le cas d'une implmentation directe le cot du calcul des coefficients est de N(N+1)additions et N(N+1) multiplications.Vlimki [24] propose une mthode de calcul plus performante vitant les redondances decalcul. La complexit est alors en N pour les additions et moins de N2 +N pour lesmultiplications.

    2.2. Implmentation des F.I.L. sous forme de structure de Farrow

    2.2.1. Structure de Farrow directeFarrow [5] propose d'exprimer tous les coefficients d'un filtre interpolateur R.I.F. sous laforme d'un polynme d'ordre N en D (la valeur du retard). Ce qui conduit la ralisation deN+1 filtres R.I.F. coefficients constants.La fonction de transfert H z( ) du filtre R.I.F. s'exprime maintenant comme un polynme en Dau lieu de z 1

    H z C z Dkk

    k

    N

    ( ) ( )==

    0

    H z( ) doit videmment prendre les valeurs entires z

    D lorsque D est entier, ce qui s'crit

    C z D zkk

    k

    Nk( )

    =

    =0

    pour D=0, 1, ... , N

  • Implmentation en temps rel des retards fractionnaires par interpolation de Lagrange 16.

    Nous sommes donc en prsence d'un systme de N+1 quations N+1 inconnues C zk ( ) .Nous pouvons le rsoudre sous forme matricielle. En notant

    =

    N

    N

    N

    NNN

    U

    L

    MOM

    L

    10

    20

    10

    111

    000

    , c C z C z C zNT

    = 0 1( ) ( ) ... ( ) , et z z z NT

    = 1 1 ...

    Nous pouvons crire le systme d'quations sous la forme

    Uc z=

    Ce systme se rsout par inversion de la matrice U qui est une matrice de Vandermondeinversible. D'o

    c Qz= o Q U= 1 .

    Les fonctions de transfert rsultantes sont des polynmes d'ordre N en z 1 .

    C z q zk k nn

    n

    N

    ( ) ,=

    =

    0

    pour k=1, 2, ... , N

    Remarquons que la fonction C z0 ( ) prend toujours la valeur constante 1 quelque soit l'ordre dufiltre

    C zkk

    k

    N

    ( )0 10=

    = => C z0 1( ) =La structure de Farrow est gnralement implmente sous forme de schma de Horner (voir[8]) pour des raisons de facilit de ralisation vidente :

    C z D C z C z C z C z C z D D Dkk

    k

    N

    N N( ) ( ) ( ) ( ) .. . ( ) ( ) ...=

    = + + + + +0

    0 1 2 1

    Le principal avantage de la structure de Farrow rside dans le fait que les coefficients C zk ( )sont indpendants de D, donc constants pour une valeur fixe de N. Pour un filtre d'ordre fixe,il est donc possible de stocker tout les calculs intermdiaires du filtre dans des tables, ce quiest un srieux gain de temps de calcul lors de l'utilisation en temps rel de retardsfractionnaires variables. Le filtre est alors directement command par D.Par comparaison avec l'implmentation des F.I.L. sous forme directe de filtre R.I.F., lastructure de Farrow est plus coteuse puisqu'elle demande le calcul de N filtres d'ordre N+1,soit N(N+1) multiplications et N2 additions, auquel il faut rajouter N multiplications par D etN additions. Soit au total N N2 2+ multiplications et N N2 + additions par chantillons. C'estla raison pour laquelle une autre forme de la structure de Farrow est gnralement utilise.

  • Implmentation en temps rel des retards fractionnaires par interpolation de Lagrange 17.

    2.2.2. Structure de Farrow modifieDans la structure de Farrow modifie [24], la partie entire du retard fractionnaire (s'il y en aune) est soustraite. De ce fait, la plage de variation du retard fractionnaire restant, notons le d,se situe maintenant entre 10 < d (pour un filtre d'ordre impair) et 5.05.0 d (pour unfiltre d'ordre pair) :

    2

    1=

    NDd

    .

    Notons cependant que la structure de Farrow modifie produit un retard supplmentaireinhrent sa structure (pour N=3 un retard supplmentaire de 1 chantillon , pour N=4 unretard supplmentaire de 2 chantillons, ...)

    Les nouvelle matrice des coefficients %Q s'obtient en multipliant la matrice des coefficientsprcdente Q par une matrice de transformation qui tient compte du glissement de D en d.Le cot opratoire global de la structure de Farrow modifie est ramen une valeurquivalente celle de l'implmentation des F.I.L. sous forme directe de R.I.F., le nombre demultiplication est mme diminu.Nous donnons en exemple ci-aprs la structure de Farrow modifie d'ordre 3. Celle-ciapproxime le mieux les retards compris dans l'intervalle 0 1< d (plus le retardsupplmentaire d'un chantillon inhrent la structure).Pour N=3, la structure de Farrow directe est :

    =

    6/12/12/16/1

    2/122/51

    3/12/336/11

    0001

    Q

    alors que la structure de Farrow modifie est :

    =

    6/12/12/16/1

    02/112/1

    6/112/13/1

    0010

    ~Q

    Le cot opratoire de la structure de Farrow modifi est alors de 10 additions et 9multiplications (voir figure 2-1).

  • Implmentation en temps rel des retards fractionnaires par interpolation de Lagrange 18.

    z-1 z-1

    ++

    z-1

    +

    +

    +

    +

    +

    +

    +

    +

    +

    -

    1/2

    1/2

    1/61/2

    1/3 +

    -

    +

    -

    d

    d

    d

    1/6

    -

    +

    - +

    +

    x(n)

    y(n)

    Figure 2-1. Schma-bloc du F.I.L. sous forme de structure de Farrow modifie d'ordre 3, lapartie en encadr-pointill renferme les coefficients % ,qk n du filtre pouvant tre mmoris dans

    une table

    La structure de Farrow modifie a fait l'objet d'une premire implmentation des retardsfractionnaires variables en temps rel sur Max-FTS. Une prsentation de ce logiciel sera faitedans la troisime partie de ce rapport. L'objet-externe "vd~" crit par Miller Puckette contientun buffer circulaire implmentant une ligne de retard entier et une structure de Farrowmodifie d'ordre 4 implmentant la partie 0 5 0 5. .d du retard. Les tats internes de lastructure n'tant autre chose que des chantillons retards, ils sont lus directement sur lebuffer. La structure de Farrow "se dplace" donc le long du buffer (glissement des pointeursd'tats internes le long du buffer). Dans l'objet externe crit par Miller-Pucket, les coefficientsintermdiaires de la structure de Farrow sont stocks dans une table afin d'allger le cotopratoire puisqu'il s'agit de temps rel.

  • Implmentation en temps rel des retards fractionnaires par interpolation de Lagrange 19.

    2.2. Implmentation des F.I.L. sous forme de structure modulaire : expressionrcursive par dveloppement en srie de puissance

    2.2.1. Nouvelle structure modulaire pour les F.I.L.

    Cette nouvelle formulation des retards fractionnaires par filtres interpolateur de Lagrangeutilise le dveloppement en srie de puissance de la rponse impulsionnelle idale h nid ( ) [22].Elle permet l'expression des F.I.L. sous une forme rcursive et une implmentation modulairece qui prsente un srieux avantage pour les retards fractionnaires variables (changement del'ordre du filtre en fonction du retard approximer).Considrons l'extension analytique sur le plan complexe de la TF idal e j D : z D . Cettefonction est dfinie sur tout le plan complexe sauf sur le demi-axe des rels ngatifs ] ]0,qui est un axe de discontinuit [22]. Cette fonction n'admet donc aucun dveloppement ensrie de Laurent car elle devrait alors tre au moins continue sur un anneau centr autour dezro. Mais nous pouvons effectuer son dveloppement en srie entire au voisinage de 1 quiest un point absolument rgulier pour z D . Le point 1 correspondant la frquence nulle, ledveloppement constitue donc une approximation basse frquence des retards fractionnaires.

    Pour ce faire dveloppons la fonction ( )1+ x D , qui est dfinie sur tout le plan complexeexcept le demi-axe des rels ngatifs ] ]1, , en srie entire :

    ( )( ) .. . ( )

    !1

    1 1

    0

    + = +

    =

    +

    x D D D kk

    xD

    k

    k,

  • Implmentation en temps rel des retards fractionnaires par interpolation de Lagrange 20.

    w-1D

    w-1(D-1)/2

    w-1(D-N+1)/N

    ++ + +

    H0

    D(z) H1

    D(z) H2D(z) HN

    D(z)HN-1D(z)

    e(n)

    s(n)

    Figure 2-2. Schma-bloc de la structure modulaire du F.I.L.

    z-1 +e(n) e(n-1)-e(n)X

    -

    Figure 2-3. Dtail de la fonction de transfert w-1

    Cette nouvelle implmentation des F.I.L. ncessite seulement N multiplications et 2Nadditions pour la ralisation du filtre, plus N additions entires et N multiplications pour lamise jour des coefficients. Soit pour un filtre d'ordre 3 : 5 multiplications et 8 additions. Parcomparaison avec la structure de Farrow modifie d'ordre 3 (9 multiplications et 10additions), ceci reprsente donc un gain de 4 multiplications et de 2 additions.

    - Domaine de convergence des F.I.L. :Le disque de convergence du dveloppement en srie effectu plus haut est le cercle unitcentr en 1. Les F.I.L. convergent donc absolument l'intrieur d'un cercle unit centr en 1,

    ce qui s'exprime en disant que les F.I.L. convergent absolument basse frquence 6

    pi

    + 1

    2 ). Dans ce dernier cas, les deux structures secomportent en effet diffremment. Montrons cela en considrant le passage d'un retard D=2.4 un retard D=2.6.

    Dans le cas de l'utilisation de la structure modulaire , le retard D=2.4 sera implment parun filtre d'ordre 4 et le retard D=2.6 s'obtiendra simplement en augmentant la valeur de d 2.6 et en rajoutant deux modules au filtre (ordre 6) de manire satisfaire la condition

    +

    2

    1,

    2

    1 NNd

    . Le paramtre d du filtre passe donc de D=2.4 D=2.6.

    Dans le cas de l'utilisation d'une structure de Farrow modifie d'ordre 4 , le retard D=2.4sera ralis par le filtre seul : d=0.4 (plus le retard de deux chantillons inhrent lastructure de Farrow modifie d'ordre 4). Lorsque D passe la valeur 2.6, une partie duretard sera ralise par une ligne de retard entier : k=1, le reste du retard par le filtre : d=-0.4. Ceci de manire toujours satisfaire la condition 0 5 0 5. .d . Le paramtre d dufiltre saute donc brusquement de la valeur 0.4 -0.4.

    Les filtres interpolateur de Lagrange bnficiant de la proprit de symtrie, i.eh n D h N n N D( , ) ( , )=

    (voir 1.2.2.), les coefficients du F.I.L. approximant le retard D=2.6

  • Implmentation en temps rel des retards fractionnaires par interpolation de Lagrange 24.

    (respectivement d=-0.4) sont les coefficients du filtre implmentant D=2.4 (respectivementd=0.4) en ordre inverse :

    h(4 , 1.6) = h(0 , 2.4), h(3 , 1.6) = h(1 , 2.4), et h(2 , 1.6) = h(2 , 2.4).Les rponses impulsionnelles sont donc symtriques l'une de l'autre et le rapport de leurrponse en amplitude est gale l'unit :

    ( )( ) 14.24

    6.1

    4=

    j

    j

    eH

    eH.

    Cependant, dans le cas de la structure de Farrow modifie, le systme que nous devonsanalyser n'est pas celui du filtre seul, mais bien celui du F.I.L. et de la ligne de retard entier(puisque le retard se rparti entre les deux). Lorsque D passe de 2.4 2.6, ce systme passe dela fonction de transfert H z42 4. ( ) la fonction de transfert z H z 1 416. ( ) . Dans le cas de lastructure modulaire seul l'ordre du filtre change et donc la fonction de transfert passe deH z4

    24. ( ) H z626. ( ) .

    A la figure 2-4., nous comparons la rponse en frquence de la norme de la diffrence desfonctions de transfert avant/aprs dans le cas de la structure de Farrow H z z H z424 1 416. .( ) ( )

    et dans la cas de la structure modulaire H z H z424 626. .( ) ( ) .

    Figure 2-4. Rponse en frquence de H z H z424 626. .( ) ( ) (ligne continue) et deH z z H z4

    24 1416. .( ) ( )

    (ligne en pointill)Nous constatons que les deux courbes sont trs proches et que donc les deux systmes secomportent de manire quasi-similaire lors d'un changement de retard. Nanmoins, hautefrquence la fonction de transfert de la structure modulaire semble prsenter une variationplus faible que celle du systme incluant la structure de Farrow. Rappelons cependant quel'approximation des retards fractionnaires par filtres interpolateurs de Lagrange n'est valablequ' basse frquence ( 1.2.2.1). Et en basse frquence, les deux systmes prsentent unevariation de fonction de transfert quasi-identique. Les deux structures sont donc quivalentede ce point de vue.

  • Implmentation en temps rel des retards fractionnaires par interpolation de Lagrange 25.

    2.2.2.1. Ajout d'une ligne de retard entier au systmeDans l'algorithme prsent ci-dessus, nous ne pouvons limiter la variation de l'ordre du F.I.L.sans limiter la variation du retard D (N tant de l'ordre de 2D). Afin de pouvoir limiter l'ordrede variation du F.I.L., nous sparons le retard d en

    D d k= + , o k No le retard implment par le F.I.L. est maintenant d, k est une valeur entire de retardimplmente sous forme d'une ligne de retard entier (buffer circulaire). Insistons sur le faitque d n'est pas la partie fractionnaire de D.

    De cette manire, la limitation de l'ordre de variation du F.I.L. ne limite plus maintenant quela valeur de d, et non plus le retard total D.Le schma du systme ralisant le retard total D se prsente donc maintenant sous la formed'une ligne de retard entier (buffer circulaire) ralisant le retard entier k dont la sortie estraccorde un F.I.L. implment sous forme modulaire, ralisant le retard d (figure 2-5.).

    pointeurs dcriture

    pointeur de lecture

    ...

    ligne de retard entiertat interne

    du F.I.L.structure modulaire dordre N

    F.I.L.structure modulaire dordre N

    ralisant le retard d

    sens du dplacement

    X(1) X(2) ... X(N) X(N+1) X(N+2)

    sortie

    e(n) e(n-1) e(n-k) e(n-k-1)e(n-k-2)e(n-k-3)e(n-k-4)e(n-2)

    s(n)

    Figure 2-5. Schma du systme global ralisant le retard D : ligne de retard entier k suivied'un F.I.L. sous forme de structure modulaire d'ordre N et de variables internes X[i],

    ralisant le retard d

    Dans la comparaison de l'volution de la rponse en amplitude que nous avons effectu plushaut, nous n'avons pas tenu compte du fait que dans l'utilisation de la structure modulaire nousdevons parfois aussi transfrer une partie du retard total vers la ligne de retard entier.Cependant ce transfert n'est pas systmatique car, grce la modularit de notre filtre, unevariation de l'ordre du filtre est trs aise. Inversement le transfert d'une partie de retard duF.I.L. vers la ligne de retard entier ou inversement est une opration plus dlicate comme nousallons le voir ( 2.2.2.2.). Lorsque le retard D varie, nous prfrons donc faire varier d (etdonc changer l'ordre du filtre) que de systmatiquement repartager D entre d et k (cas de lastructure de Farrow modifie). Ceci est vrai pour autant que le filtre reste de taille raisonnable.Lorsque l'ordre du filtre devient trop important, une partie du retard sera calcul par la lignede retard entier ou, inversement, lorsque l'ordre du filtre devient trop petit, il rcuprera unepartie du retard implment par la ligne de retard entier. En pratique nous limiterons l'ordre duF.I.L. entre 5 et 13 pour les filtres d'ordre impair, et entre 6 et 14 pour les filtres d'ordre pair.

  • Implmentation en temps rel des retards fractionnaires par interpolation de Lagrange 26.

    2.2.2.2. Mise jour de l'tat du systme lors de transferts entre ligne de retard entier et F.I.L.Pour commencer rappelons le processus de transfert de retard entre ligne de retard entier etF.I.L. dans le cas de l'utilisation de la structure de Farrow modifie.Lors de l'implmentation des retards fractionnaires sous forme de structure de Farrowmodifie, la partie du retard implmente par le filtre est calcule de manire respecter lecritre 0 1< d (pour un filtre d'ordre impair) ou 0 5 0 5. .d (pour un filtre d'ordre pair).La partie du retard restante k1 (entier) tant calcule par la ligne de retard entier. Si le retardque doit implmenter le filtre dpasse la limite suprieure (respectivement infrieure), c'est--dire si d 1 ou d 0 5. selon la parit du filtre (respectivement d 0 ou d 0 5. ), unnouveau retard entier k2 est calcul de manire vrifier le critre sur d. L'augmentation duretard entier de k1 k2 se fait par simple glissement arrire (sur le buffer circulaire) des 5pointeurs de lecture (de la ligne de retard entier) de k2 -k1 chantillons.

    pointeurs dcriture

    ...

    ligne de retard entier

    tat interne

    du filtre L.I.F.

    structure de Farrow dordre 4

    F.I.L.

    structure de Farrow dordre 4

    ralisant le retard d

    sens du dplacement

    sortie

    e(n) e(n-1)e(n-2) e(n-k-3)e(n-k-1)e(n-k-2)e(n-k) e(n-k-4)

    s(n)

    pointeurs de lecture

    Figure 2-6. Schma du systme global ralisant le retard D : ligne de retard entier k suivied'un F.I.L. sous forme de structure de Farrow modifie d'ordre 4 et d'tat interne x(n-k-1),

    x(n-k-2), x(n-k-3), x(n-k-4), ralisant le retard D

    Dans notre nouvelle implmentation sous forme de structure modulaire, la mise jour descoefficients du F.I.L. est plus dlicate puisque les tats internes du filtre []iX ne sont plussimplement des chantillons du pass gards en mmoire dans le buffer circulaire. Nous nepouvons donc plus simplement dplacer le pointeur de lecture et ceux de l'tat interne d'uncertain nombre d'chantillons gauche o droite.

  • Implmentation en temps rel des retards fractionnaires par interpolation de Lagrange 27.

    Procdure de mise jour de l'tat du systme par lecture des entres passes dans le buffercirculaire

    Une premire ide serait de recalculer l'tat interne du F.I.L. sous forme de structuremodulaire partir des chantillons contenus dans le buffer circulaire (figure 2-5.).Dfinissons H zi( ) comme la fonction de transfert qui permet de reconstruire l'tat interne[]iX

    du F.I.L. de retard d partir de ses chantillons d'entres passes e n( ) . Ces fonctions detransfert peuvent s'crire (voir figure 2-2 et 2-3) :

    [ ] 11 = zzH ,[ ] [ ])1( 112 = zdzzH ,[ ] ( )[ ][ ]dzzdzzH )1(1

    2

    1 1113

    =

    ,

    ...

    Lors d'un transfert de retard, le nouveau signal que doit traiter le F.I.L. changer, et donc lestats internes []iX que le F.I.L. contient ne correspondent plus au nouveau signal traiter. Lestats internes que le F.I.L.. devrait contenir pour traiter le nouveau signal peuvent se calculerdirectement en utilisant les chantillons contenu dans le buffer circulaire.En effet, lorsque le signal d'entre du F.I.L. tait e n( ) , ses tats internes correspondaient desentres passes :

    [ ] )1(1 = neX ,[ ] [ ] dneneX = )1()2(2[ ] [ ]

    2

    1)1()2(2)3(3

    +=d

    dneneneX,

    ...

    Lorsque le nouveau signal d'entre passe e n k( ) , ses nouveaux tats internes doiventcorrespondre des entres passes e n k( ) 1 , e n k( ) 2 , e n k( ) 3 . Il suffit donc de lireces entres passes dans le buffer circulaire (voir figure 2-5.) et de calculer les nouveaux tatsinternes l'aide des fonctions de transfert H zi( ) :

    [ ] )1(1 = kneX,

    [ ] [ ] dknekneX = )1()2(2[ ] [ ]

    2

    1)1()2(2)3(3

    +=d

    dkneknekneX,

    ...

    Toutefois il n'est pas forcment possible d'allouer la mmoire ncessaire au stockage desvaleurs e n k( ) 1 , e n k( ) 2 , ... (cas d'un petit buffer circulaire). Dans ce cas, il restepossible de recalculer les valeurs d'entres uniquement partir de d et le vecteur d'tat internedu systme. Nous prsentons cette procdure de remise jour de l'tat du systme dans lasuite. Remarquons que cette procdure englobe la prcdente mais est plus gnrale.

  • Implmentation en temps rel des retards fractionnaires par interpolation de Lagrange 28.

    Procdure de mise jour de l'tat du systme par recomposition des entres passes(uniquement) partir de l'tat interne actuelle

    k -> k+ 1 N -> N- 2 Prenons comme exemple le transfert d'un chantillon de la ligne fractionnaire vers la ligneentire. Un nouvel lment de la ligne de retard entier doit tre cr et deux modules du F.I.L.doivent tre supprims.

    Le dernier chantillon de la ligne de retard entier est cr par copie de []1X , premire valeurdu vecteur d'tat du F.I.L.. Les autres valeurs du vecteur d'tat du F.I.L. sont dcales "demanire approprie" i.e. de manire correspondre effectivement la nouvelle portion dusignal traiter (puisque le signal a t "gliss") et aux bonnes valeurs des coefficientsmultiplicatifs (d , ( ) /d 1 2 , ...).Ceci se produit lorsque l'ordre du filtre devient trop important. (>13 pour les filtres impairs,>14 pour les filtres pairs). Cette procdure une fois entame sera rpte chantillon aprschantillon jusqu' ce que l'ordre du filtre reviennent la valeur centrale (9 pour les filtresimpairs, 10 pour les filtres impairs), ceci afin de retarder le plus possible un nouvel appel cette procdure de transfert (l'ordre du filtre ramen 9 peut alors varier de 4 sans nouveaubesoin de transfert).

    k -> k- 1 N -> N+2L'autre cas est celui du transfert d'un chantillon de la ligne entire vers la ligne fractionnaire.Un lment de la ligne de retard entier est supprim et deux modules supplmentaires doiventtre ajouts au F.I.L..La premire valeur du vecteur d'tat du F.I.L. []1X est cr par copie du dernier chantillonde la ligne de retard entier. Les autres valeurs du vecteur d'tat du F.I.L. sont dcales "demanire approprie". La valeur supplmentaire [ ]2+NX ncessite par le passage de l'ordredu F.I.L. de N N+2 est fournie par la dernire boucle de l'algorithme (voir 2.2.2.), cet tatdevant tre dcal "de manire approprie" en [ ]2+NX .Ceci ce produit lorsque l'ordre du filtre devient trop petit et cette procdure une fois entamesera, de la mme manire que prcdemment, rpte jusqu' ce que l'ordre du filtre atteignela valeur centrale, ceci afin de retarder le plus possible un nouvel appel cette procdure detransfert (puisque l'ordre du filtre ramen 9 peut alors tre diminuer de 4 sans nouveaubesoin de transfert).Pour raliser la procdure de changement d'tat nous devons :(1) dans un premier temps, calculer ou rcuprer dans le buffer circulaire les valeurs d'entre

    passes du F.I.L., i.e. les chantillons qui ont permis la cration des tats internesactuelles

    (2) dans un deuxime temps, partir de ces valeurs et de celles de la ligne de retard entieractuelle, r affecter les chantillons entre ligne de retard entier et F.I.L.

    (3) dans un dernier temps, reconstruire les tats internes du F.I.L. partir de ces chantillons

    Nous prsentons maintenant les diffrentes tapes du calcul permettant la mise jour des tatsdu systme :1) Passage de l'tat du systme au pass du systmeSoit le systme SN correspondant l'implmentation d'un filtre d'ordre N dcrit formellementpar l'quation d'tat :

  • Implmentation en temps rel des retards fractionnaires par interpolation de Lagrange 29.

    [ ] [ ][ ]

    =

    +=+

    ),(

    1

    nn

    n

    enXgs

    BenXAnX

    o en est l'entre du filtre, sn sa sortie, et X n son vecteur d'tat interne.

    SN

    en sn

    Ce qui peut se rcrire de manire rcursive :

    n , [ ] [ ] 121201 ...0 +++++= nnnnn BeABeBeABeAXAnXOn suppose le filtre au repos l'tat initial donc [ ] 00 =X .Si nous nous restreignons aux systmes qui vrifient AN = 0 (ce qui correspond au cas desfiltres R.I.F.), alors

    X n A Be ABe BeN n N n n= + + +

    12 1.. .

    en notant =( , , , ... , )B AB A B A BN2 1

    [eq. 1]

    et ( )TNnnnNn eeee = ,...,, 21Nous obtenons l'quation permettant de remonter au pass du systme partir de ses tatsactuels :

    X n enN

    = [eq. 2]

    2) Changement d'tat d'un systmeConsidrons le passage d'un systme SN1 d'tat interne X n1 un systme SN2 d'tat interneX n2

    d'ordre suprieur N N2 1 .

    SN1

    SN2

    en

    Grce l'quation [2] nous avons :n >N, X n en

    N1 1

    1=

    et X n enN

    2 22

    =

  • Implmentation en temps rel des retards fractionnaires par interpolation de Lagrange 30.

    Comme les entres des deux systmes sont lies par la relation suivante :

    212

    21 0

    10

    01

    NNN

    N

    n

    N

    n ee

    =

    O

    MOM

    L

    les tats internes du systme 2 sont lis ceux du systme 1 par :

    [ ] [ ]

    212

    1

    1

    122 0

    10

    01

    NNN

    nXnX

    =

    O

    MOM

    L

    [eq. 3]

    3) Systme rallong par une ligne de retard entierConsidrons maintenant le dplacement d'tat d'un systme d'ordre N1 un systme d'ordreN2 incluant un retard entier k (N N N k2 1 2 + ).

    SN1

    kSN2

    en

    Xk N + 2 correspond l'tat du systme connectant en srie la ligne de retard entier k et le filtre

    d'ordre N2 . La convention de rangement est la suivante

    =

    + TN

    T

    kN

    X

    XX

    k

    2

    2 .

    L'quation d'tat du systme S k N + 2 peut s'crire :

    [ ] [ ]

    ++

    +

    =+

    2

    22

    11

    1

    0

    000

    1

    Np

    nT

    T

    N

    TT

    N e

    O

    OnX

    AB

    OOIdnXkk

    En faisant intervenir A k N + 2 et B k N + 2 qui reprsentent respectivement la matrice d'tat et lamatrice de contrle du systme, nous calculons comme prcdemment la matrice [eq. 1]:

    k k k k k k k kN N N N N N NN

    NB A B A B A B+ + + + + + +

    +=2 2 2 2 2 2 22

    2

    2 1( , , , .. . , )

    ce qui donne aprs dveloppement le rsultat intressant suivant :

    =

    =

    +

    2

    22

    0

    0

    ,...,,0

    01

    S

    NN

    Id

    BAABB

    Idk

    [eq. 4]

  • Implmentation en temps rel des retards fractionnaires par interpolation de Lagrange 31.

    Son inverse s'obtient aisment puisque :

    =

    + 11

    2

    2

    0

    0

    S

    N

    Idk

    [eq. 5]

    4) Rattachement au processus de mise jour des F.I.L. implments sous forme modulaireDans notre cas, nous dsirons passer d'un systme S1 comprenant une ligne de retard entier ket un F.I.L. d'ordre N et de retard d, un systme S2 comprenant une ligne de retard k+p et unF.I.L. d'ordre N-2p et de retard D-p.

    en

    HN-2pD-p(z)

    HN

    D(z)z-k

    z-(k+p)

    Systme S1

    Systme S2

    Dans le cas des retards fractionnaires, les matrices du systme s'crivent (voir figures 2-2. et2-3.) :

    N

    dN

    N

    Nd

    d

    A

    +

    =

    01

    0

    2

    1

    00

    ),(O

    O

    et NO

    dB TdN b

    =),(

    Si nous dfinissons %X comme l'tat interne normalis du F.I.L., i.e.

    X

    N

    Nd

    d

    d

    X

    +

    =

    10

    2

    1

    0

    ~

    O[eq. 6]

    Celui-ci peut s'crire (voir [20]) :[ ] ( )[ ] [ ] ( )[ ] ndNdNdNdN eBAIdnXAAIdnX +++=+ ),(1),(),(1),( ~1~

    En utilisant la notation ( ) ),(1),(),( dNdNdN AAId += et ( ) ),(1),(),( dNdNdN BAId += , nouspouvons trouver comme prcdemment la matrice ( , )N d [eq. 1] correspondant au systmeS1; nous faisons de mme pour le systme S2 . Utilisant alors les quations [3] [4] [5] et [6],nous trouvons les tats internes du systme S2 partir de ceux du systme S1 .

  • Implmentation en temps rel des retards fractionnaires par interpolation de Lagrange 32.

    Pour cela, nous avons donc effectu la suite d'oprations suivante :

    (1) normalisation de l'tat interne du systme S1 ,(2) calcul des entres passes correspondant aux tats internes actuels du systme S1 ,(3) raffectation (selon la valeur de k) de ces entres passes entre la ligne k p+ de retard

    entier k+p et le F.I.L. d'ordre N p 2 implmentant le retard fractionnaire d-p ,(4) calcul de l'tat interne du systme S2(5) dnormalisation de l'tat interne du systme S2 .

    Les transformations appliques aux tats internes du systme S1 en vue de retrouver les tatsinternes du systme S2 sont donc :

    X n

    Id

    d p

    d p

    Nd p N

    Id Id Id

    Idd

    d

    d NN

    X nN p d p N d[ ] =

    + +

    ( )( )( )

    +

    22 1

    01

    21

    0 1

    00 0

    00

    0

    12

    0 1

    L

    M M

    O

    L

    L

    M M

    O

    L

    ( , ) ( , ) [[ ]

    + + +

    1

    2 2k p N p k p N p N k p p k N k N

    ( , )N p d p 2 est une matrice triangulaire infrieur, dont les valeurs sont

    pour i j , ( , )( )

    ( , )( )

    ( )! ( )!( )( )...( )N p d p

    i j

    i ji j i j

    d p d p d p i

    +=

    +21

    11 1

    ,

    de mme que 1

    ),(

    dN :

    pour i j , ( , ) ( , )( )!

    ( )! ( ).. .( )N p d pi j

    j i

    i j d d d j

    =

    +21 1 1

    1 1

    Dans le cas o p est ngatif (cas du transfert d'une partie du retard, de la ligne de retard entiervers le F.I.L.), le nombre d'tats internes du F.I.L. que nous devons recomposer est suprieuraux chantillons reus de la ligne de retard entier (car k->k+p et N->N-2p). Dans ce cas, nousutiliserons aussi pour la reconstruction, les tats internes d'ordre suprieur N (i.e. ceuxcalculs dans la dernire boucle de l'algorithme du 2.2.2. qui servent anticiper uneaugmentation de l'ordre du filtre).Les deux procdures que nous venons de prsenter pour la mise jour de l'tat du systme(par lecture des entres passes dans le buffer circulaire ou par recomposition des entrespasses partir de l'tat interne actuelle) ne sont pas quivalente lorsque d varie. Ladeuxime tenant compte des variations de d que le signal a subi dans le pass pour lareconstruction du signal.C'est cette deuxime procdure que nous utiliserons dans la suite pour la mise jour de l'tatde notre systme.

    2.2.2.3. Simulation sur Matlab

    Afin de clarifier les ides, nous montrons ci-aprs le rsultat d'une simulation sur Matlab d'unsystme boucl incluant la ligne de retard entier, le filtre interpolateur de Lagrange sous formemodulaire ainsi que la procdure de remise jour de l'tat interne du systme parrecomposition des entres passes.

    Le systme boucl est une version simplifie du modle qui sera prsent dans la troisimepartie. Disons simplement pour l'instant qu'il produit une forme d'onde priodique pseudo-

  • Implmentation en temps rel des retards fractionnaires par interpolation de Lagrange 33.

    rectangulaire de frquence variant en fonction de la longueur du retard. Nous l'utilisons iciafin

    de montrer dans quels cas la procdure de transfert entre ligne de retard entier et F.I.L. estutilise,

    de montrer comment se rpartit le retard total entre la ligne de retard entier et le F.I.L.sous forme modulaire,

    de pouvoir observer l'influence sur le signal de la procdure de remise jour.Le schma-bloc du systme boucl utilis est donn la figure 2-7.

    Fonction Non-Linaire Ligne de retard entierRetard Fractionnaire

    (Filtre Interpolateur de Lagrange)

    Filtre passe-bas (1+z-1)/2Retard z-1

    bruit

    +

    remise jour des tats du systme

    mesure

    retard total D

    Figure 2-7. Systme boucl produisant une forme d'onde priodique pseudo-rectangulaireincluant la ligne de retard entier, le F.I.L. sous forme modulaire, et la procdure de remise

    jour des tats du systme par recomposition des entres passesA la figure 2-8., nous montrons l'volution des diffrents paramtres du systme ainsi que lesignal mesur la sortie du F.I.L. en fonction du temps (pour un signal de 1500 chantillons).

    D est la valeur du retard total variant continmentd est la valeur du retard implment par le F.I.L.N est l'ordre du F.I.L."dk" prend la valeur 1 lors d'un transfert d'une partie du retard du F.I.L. vers la ligne

    de retard entier (k->k+1, d->d-1), -1 dans le cas contraire (k->k-1, d->d+1), et 0 lorsqu'il n'ya pas de transfert.

    k est la longueur de la ligne de retard entiery(n) est le signal mesur en sortie du F.I.L.

  • Implmentation en temps rel des retards fractionnaires par interpolation de Lagrange 34.

    D

    d

    N

    "dk"

    k

    y(n)

    Figure 2-8. Retard total D, retard F.I.L. d, ordre du F.I.L.. N, transfert d->k (1) ou k->d (-1),retard entier k, signal de sortie y(n) (simulation sur Matlab du modle de la figure 2-7. pour

    un signal de 1500 chantillon)A partir de ces graphes, nous pouvons dduire que la procdure de remise jour de l'tatinterne du systme produit une discontinuit sur le signal mesur y(n) quasi-inexistante entout cas trs faible.C'est cette implmentation de "ligne de retard entier + F.I.L.. sous forme modulaire +procdure de remise jour des tats du systme par recomposition des entres passes" quenous avons porter sous forme vectorielle sur Max/FTS pour la ralisation d'un retard variableen temps rel.

  • Implmentation en temps rel des retards fractionnaires par interpolation de Lagrange 35.

    3. IMPLEMENTATION EN TEMPS REEL DE LA STRUCTURE MODULAIRE DESF.I.L. DANS UN MODELE PHYSIQUE SIMPLIFIE DINSTRUMENT A TUBE

    Dans cette troisime partie, nous utilisons la nouvelle implmentation des F.I.L. sousforme de structure modulaire pour la ralisation d'un modle physique simplifi d'instrument tube. Cette ralisation est effectue grce au logiciel temps-rel FTS de l'IRCAM par laconnexion dans Max d'objets externes ralisant les diffrentes parties du modle. Pour cela, denouveaux objets externes sont crs. Il s'agit des objets "xct~", "fd~" et "miditofreq".Les paramtres du modle peuvent tre changs en temps rel via une interface Midi (unclavier Midi dans notre ralisation) ou via l'interface graphique de Max.Aprs une prsentation du logiciel FTS et de son interface graphique actuelle Max, nousprsentons le modle physique simplifi d'instrument tube, et dtaillons ses diffrentesparties.

    3.1. Prsentation de Max/FTS

    FTS ("Faster Than Sound") est la plate-forme temps-rel de l'IRCAM pour le traitementnumrique du son. FTS est un serveur de contrle et de traitement du signal qui peut treconnect une quelconque application. L'application communique avec FTS localement ouvia un rseau sur un modle client/serveur. L'interface utilisateur est donc dissocie de lagestion temps-rel de bas niveau. L'interface utilisateur que nous utiliserons est Max. Il s'agitd'un environnement de programmation graphique reproduisant l'ensemble des fonctions deFTS sous formes de modules (objets reprsentants des programmes) interconnects.L'ensemble des modules interconnects forment alors un "patch" contrlable via l'interfacegraphique ou l'interface Midi. FTS excute en temps rel un "patch" de Max en fournissant lesservices suivants : ordonnancement des traitements (selon les connections entre objetseffectues, cet ordonnancement s'effectue l'initialisation du "patch"), communications entreles diffrents processeurs de l'application (lorsqu'un patch est rparti sur diffrentsprocesseurs), gestion de la mmoire (allocation de tampons de calcul des chantillons, ...),gestion des entres-sorties (synchronisation avec les convertisseurs numrique-analogique etanalogique-numrique, ...).L'utilisateur peut galement crer ses propres modules, ce que l'on appelle les objets externes.Ceux-ci sont programms en C (ANSI) et une fois compils sont joints aux objets prexistantdes librairies FTS. Certaines de ces librairies fournissent des services pour le dveloppeurd'applications : objets de contrle et de traitement du signal tel que processeurs arithmtiqueset logiques, manipulation des donnes en nombre entiers ou flottants, contrle par envoi etrception de message, gestion du temps, gestion du MIDI, synthse additive, filtrage, ...D'autres librairies permettent directement la manipulation des ressources du systme, et doncde modifier le noyau de FTS (FTS kernel).FTS inclut donc la fois les fonctions propres un systme temps-rel de noyau distribu etun systme d'objets bas sur une communication par messages.

  • Implmentation en temps rel des retards fractionnaires par interpolation de Lagrange 36.

    Objets (Externes) de FTSNous prsentons brivement ici le concept d'objets externes dans FTS. Remarquonsqu'actuellement sur FTS, il n'y a plus de diffrences entre objets externes et objets internes.Nous parlerons ds lors d'objets.Un objet de FTS est un tat (une valeur garde en mmoire) et un jeu de connections. Cesconnections sont des liaisons entre inlets (entres d'une bote Max) et outlets (sortie d'unebote Max). Un inlet prend en entre un message ou un signal DSP (s'il s'agit d'un objet DSP).Ce message est compos d'un slecteur (un symbole) et d'une liste d'arguments. Lorsqu'uninlet reoit un message, la mthode (une fonction en C) correspondante au slecteur dumessage est appele. La dfinition de l'ensemble des mthodes d'une classe associe donc unemthode un slecteur et un numro d'inlet. Une classe dfinit un ensemble d'objets ayantmme nombre d'inlets et d'outlets, mmes associations entre mthodes, slecteurs et numrod'inlet.La dfinition d'un objet comprend les tapes suivantes :

    dfinition de l'objet : typdef struct{ fts_object_t o

    ... } mon_objet_t dfinition des mthodes : void ma_mthode (...) envois de messages par outlets : fts_outlet_send (...) dfinition de la classe :

    fts_status_t mon_objet_instantiate (...){

    fts_class_init initialisation de la classe, dfinition du nombre d'inlets et d'outlets des objets de la classe

    fts_s_int (...) mthode propre au systmefts_s_delete (...) mthode propre au systmefts_method_define (...) associations entre messages reu en inlets et

    mthodes appelesfts_outlet_type_define (...) dfinition du type de message mis

    par les outlets}

    Un objet DSP comporte en plus : dfinition des inlets et outlets recevants et sortants des signaux DSP :

    dsp_sig_inlet ( ... )dsp_sig_outlet ( ... )

    mthodes d'insertion et de retrait de l'objet dans la chane DSP :dsp_list_insertdsp_list_remove

  • Implmentation en temps rel des retards fractionnaires par interpolation de Lagrange 37.

    mthode donnant la chane DSP les informations ncessaires concernant l'objet :void mon_objet_put ( ... )

    mthode de traitement DSP appele chaque paquet d'chantillon traiter :void mon_objet_dsp_function ( ... )

    A l'initialisation d'un "patch" dans Max, chaque objet DSP dclare ses proprits la chaneDSP, et celle-ci se construit par ordonnancement des traitements effectuer (dpendant de lamanire dont les objets sont raccords dans Max). Lorsque le "patch" tourne, la chane DSPeffectue une suite d'appels aux fonctions de calculs vectoriels de FTS. Le moteur de calculvectoriel DSP de FTS s'appelle FTL ("Faster Than Light"). Il est optimis l'heure actuellepour le traitement par paquets de 64 chantillons. Dans les versions prochaines de FTS cettetaille devrait tre dfinissable par l'utilisateur.Dveloppement d'objets externes sur Max/FTSPour la ralisation temps-rel de notre modle, nous avons travailler sur la version 1.3 (patchlevel 7) de FTS pour station Silicon Graphic (une station Indigo de SGI pour tre exact). Ils'agit de la premire version distribue de FTS pour ce type de station. Cette version estencore en dveloppement ce qui explique les quelques problmes auxquels nous nous sommesheurts. Les versions prochaines devraient sans doute permettre un dveloppement plus ais.

    Tous nos calculs sont effectus en virgule flottante (du moins pour le calcul des coefficientsdu filtre) : type fts_float.La frquence d'chantillonnage que nous avons utilis est de 22050 Hz. Ceci pour des raisonsde puissance de calcul de la machine. Notons que Max/FTS consomme prs de 90% de lapuissance de calcul de la machine Indigo Silicon Graphic 100 MHz (machine sur laquellenous avons travaill) lorsque le patch complet tourne (Max/FTS en consomme dj prs de55% lorsqu'aucun patch ne tourne). Remarquons que cette puissance reste plus ou moinsconstante quelque soit la variation des paramtres en entre.Un autre paramtre important de la configuration est le rglage de la taille des buffersd'entre et de sortie audio . Cette taille dpend de l'architecture de la station. Sur une SiliconGraphic, la taille minimum de ces buffers est de 511 chantillons. Pour une taille de 511chantillons, nous obtenons une rponse quasi-immdiate du patch aux contrles extrieurs.Cependant, dans ce cas nous avons observ des problmes de puissance de calcul lors devariations rapides des paramtres du modle. Cela peut se traduire par l'apparition dedistorsions dans le signal. Pour une taille de 2044 chantillons (la valeur choisie lors de laralisation de nos exemples sonores), la rponse est en lger dcalage mais le signal est absentde distorsions.

    Truc et Astuces pour la programmation d'objets externes permettant une meilleuroptimisation :Lors d'un transfert du contenu d'un pointeur dans un autre :- mieux vaut effectuer le passage par des variables locales- mieux vaut effectuer le transfert vers la variable locale 8 lments par 8 lments

  • Implmentation en temps rel des retards fractionnaires par interpolation de Lagrange 38.

    Lors du transfert de variables de dsp_put vers dsp_function :- obligation de passer les paramtres par adresses, l'appel de dsp_function par dsp_putn'tant effectuer qu' l'initialisation de la chane DSP (i.e. une seul fois).- mieux vaut ne transfrer qu'une seule adresse (celle d'une structure pointant sur d'autresvariables)Il est conseill de faire l'allocation de mmoire dans la boucle mon_objet_put et d'utiliserun "flag" dans la boucle mon_objet_init (appel uniquement l'initialisation de l'objet)pour signaler au systme (lorsque le DAC est relanc par exemple) si l'allocation a dj tfaite ou si il faut la faire. Surtout ne pas oublier de dsallouer la mmoire (dansmon_objet_delete).Faire attention l'ordre de sortie des messages par les outlets d'un objet. Dans FTS il se faitdans l'ordre suivant : d'abord par l'outlet de droite puis par l'outlet de gauche

    Les principales difficults rencontrs lors du dveloppement ont t les suivantes : L'impossibilit actuellement de rduire la taille du buffer FTS (64 chantillons pourl'instant). Ce qui a comme consquence lors de l'implmentation de systmes boucls, delimiter la frquence fondamentale des valeurs infrieur

    fchantillonage

    64, et d'empcher la

    variation des paramtres du modle intervalles infrieurs 64 chantillons. Remarquons quetous nos objets ont t dvelopps de manire les rendre compatibles lors d'un changementde la taille des buffer FTS. L'absence actuellement de dbogueur FTS , nous obligeant dboguer les objets paressais/erreurs. Le systme ne donne aucune explication lors du non-fonctionnement ou de lanon-acceptation d'un nouvel objet. Cette opration de dboguage se rsumant la plupart dutemps par un "crash" pur et simple du logiciel. L'impossibilit actuellement d'implmenter directement des matrices . L'absence actuellement d'un objet permettant de convertir le signal DSP de sortie du"patch" en fichier audio . Ceci afin de pouvoir analyser le signal ultrieurement. Les seulessolutions pour parer ce problme sont pour l'instant :- soit de r-enregistrer le signal audio sortant des convertisseurs DAC- soit de sonder le signal dans FTS l'aide de l'objet "probe~" et de connecter Max/FTS Xspect par l'intermdiaire d'un dmon (dans ce cas l'chantillon fournit par "probe~" estmalheureusement de faible taille). Nous expliquons cette dernire opration :

    lancement du dmon qui va scruter les sockets de la machineftsd -d 1 -f -e

    -d 1:debug de niveau 1 -f:foreground -e: envoi du logdu dmon

    lancement de Max-FTSMax -l socket -h "nom de la machine sur lequel le dmon a t lanc"

    -l socket : ouverture d'une connexion vers les sockets de lamachine

    lancement de XspectXspect

    askFTSHostname : "nom de la machine sur lequel le dmon a t lanc"

    remarque : ne surtout pas relancer Max/FTS pendant que Xspect tourne !

  • Implmentation en temps rel des retards fractionnaires par interpolation de Lagrange 39.

  • Implmentation en temps rel des retards fractionnaires par interpolation de Lagrange 40.

    3.2. Prsentation du modle global

    Le schma du modle physique simplifi d'instrument tube est le suivant (figure 3-1.)

    Fonction Non-LinaireLigne de retard entier

    Retard Fractionnaire (Filtre Interpolateur de Lagrange)

    Filtre rsonnant/passe-basFiltre passe-toutRetard z-64

    bruit paquets de 64chantillons

    sortie+ -

    Figure 3-1. Schma-bloc du modle physique simplifi d'instrument tubeLe modle s'interprte selon l'analogie acoustique d'un instrument vent. La vibration dusystme excitateur (par exemple l'anche ou l'embouchure) met une onde progressive plane lelong du tube de longueur variable (cas d'un trombone coulisse par exemple). Cette onde sepropage jusqu'au pavillon, o une partie de l'onde est rflchie l'intrieur du tube en sensinverse, l'autre partie est rayonne vers le milieu extrieur. L'onde rflchie et l'onde incidentecontribue ensemble, avec le jeu de l'instrumentiste, entretenir la vibration de l'anche parl'action d'effets fortement non-linaires. Le tube contient bien videmment des pertes visco-thermiques et autres.Dans notre modle simplifi, la ligne de retard entier et le F.I.L. constituent le tube delongueur variable (dans notre modle le retard correspond au double de la longueur du tube,de cette manire notre retard symbolise la fois l'aller et le retour de l'onde dans le tube). A lasortie du retard, le signal est pass travers un filtre passe-bas (en pratique un filtre rsonnantconfigur en passe-bas), la diffrence entre le signal entrant et sortant du filtre passe-basconstitue le signal de sortie (rayonnement passe-haut). Le signal est modifi par l'action d'unefonction non-linaire correspondant l'effet non-linaire de l'embouchure sur les ondesrflchies et incidentes.Les rle exactes du filtre rsonnant et du filtre passe-tout seront explicits dans la suite.Signalons simplement pour l'instant que le filtre passe-tout introduit dans la boucle n'estaucunement une deuxime implmentation des retards fractionnaires variables. Le ple et lezro de celui-ci sont gards constants. D'un point de vue musical, la prsence du filtre passe-tout se traduit par l'apparition de variations dans le contenu du spectre du son, rendant le sonplus "vivant"

    Dans tout systme boucl, la prsence d'un retard minimal z 1 est ncessaire. Comme nousl'avons expliqu dans le paragraphe 3.1., FTS traite les signaux DSP sous forme vectorielle, l'heure actuelle par paquets de 64 chantillons. Lors d'une l'implmentation dans FTS, lacondition ncessaire de tout systme boucl se traduit alors par un retard minimal de z 64 (unretard z 1 appliqu un paquet entier de 64 chantillons).Une premire consquence de ce traitement vectoriel des signaux DSP par FTS est de limitervers le haut la frquence fondamentale du son obtenu. Une autre consquence rside dansl'impossibilit de changer les valeurs des paramtres de notre modle l'intrieur d'un paquetde 64 chantillons. Les paramtres (en particulier un changement de longueur de retard) nepeuvent tre changs que tout les 64 chantillons.Nous sommes conscient de l'aspect extrmement simplifi de notre modle. Maisrappelons que celui-ci n'a pas la prtention d'imiter un quelconque instrument existant.Notre but dans cette ralisation est de tester en temps rel la nouvelle implmentationdes interpolateurs de Lagrange. D'autres tudes devraient tre entreprises (mesuresd'impdances, de fonctions de rflexion, ...) afin de prtendre pouvoir se rapprocher ducomportement d'un instrument existant. Disons simplement que le son produit par notre

  • Implmentation en temps rel des retards fractionnaires par interpolation de Lagrange 41.

    modle pourrait s'apparenter celui produit par une clarinette basse ou un tuyaud'orgue.Dans la suite nous dtaillons le comportement des modules pris individuellement.

    3.2.1. Fonction rationnelle non linaire ("xct~")La fonction non-linaire que nous utilisons est la fonction rationnelle suivante (voir [17]) :

    ( ) ( )( )23

    1 x

    xxx

    +

    +=

    o est la pente l'origine de ( )x et 1 la pente de ses asymptotes l'infini. A la figure 3-2.,nous dessinons la fonction ( )x pour les valeurs = 1 8. et = 2 .

    Figure 3-2. Graphe de la fonction ( )x pour = 1 8. et = 2 )Cette fonction place dans une boucle sans filtre, a comme points de fonctionnement ceux o ( )x x=

    , i.e. x121

    1, =

    +

    . Le systme boucl se comporte diffremment selon la valeurde . Par exemple pour = 1 32. :

    si 1 0 , le systme n'oscille pas si 4 1 , nous obtenons une oscillation priodique stable si 6 4 , nous obtenons une oscillation priodique dont la priode est double de la

    prcdente. si 6 2. environ, nous obtenons des solutions chaotiques

    Discussion sur le fonctionnement de la boucle avec ( )x :- utilit du filtre rsonnant pour l'obtention d'une solution oscillante uniqueTelle quelle, la fonction ( )x introduite dans une boucle sans filtre permet l'obtention d'uneforme d'onde rectangulaire. Dans FTS, les chantillons se dplaant d'un objet externe l'autre par paquets de 64, la priodicit de la forme d'onde sera de 128, soit pour unefrquence d'chantillonnage de 22050 Hz, une frquence fondamentale de

    22050

    128172= Hz

    .

  • Implmentation en temps rel des retards fractionnaires par interpolation de Lagrange 42.

    Si 64 chantillons de valeur x = +( ) / ( )1 1 sont introduits dans la fonction, 64chantillons de valeurs y = + +( ) / ( )1 1 sortiront (si la boucle n'introduit pas deperturbation). Lors du passage suivant dans la fonction, ils passeront de la valeurx = + +( ) / ( )1 1

    y = +( ) / ( )1 1 . Dans ce cas, la fonction produit donc uneforme d'onde rigoureusement rectangulaire-symtrique de priode gale 128 chantillons.Mais cette fonction non-linaire admet aussi un grand nombre d'autres solutions, en fait toutescelles dont la premire partie est compose avec les valeurs x12, et dont la deuxime partie sedduit par symtrie.

    Afin de limiter le nombre de solutions du systme boucl, nous introduisons dans la boucle unfiltre rsonnant fonctionnant en passe-bas (voir aussi 3.2.4.). Les chantillons qui taientjusqu' prsent dcorrls entre eux, sont corrls ce qui rduit le nombre de solutionspossibles du systme. Vu d'une autre manire, l'introduction d'un filtre passe-bas limite lessolutions du systme celles dont le contenu harmonique se situe en basse frquence, ce quiest le cas des instruments de musique (le contenu frquentiel d'un instrument dcrot souventen 1/ f ou 1

    2/ f ). Le filtre passe-bas peut aussi tre interprt comme modlisant le fait quedans un tube les modes basse frquence se propagent mieux (pertes visco-thermiques, ...). Enrajoutant un filtre passe-bas dans la boucle, les chantillons ne peuvent plus varierinstantanment d'un point de fonctionnement l'autre, mais sont contraints de passer par lesvaleurs intermdiaires de la fonction. Ds lors, la forme d'onde rectangulaire s'arrondit, ce quiest une autre manire d'exprimer l'vanescence des hautes frquences.- rajout d'une composante continue d'amplitude quasi-ngligeableAfin d'viter que le systme ne se fixe en zro (mme s'il s'agit d'un point fixe instable), nousrajoutons au signal entrant dans la fonction une partie alatoire d'amplitude quasi-ngligeable. Une autre possibilit est de rajout au signal entrant une composante continued'amplitude ngligeable telle 1e-6.- fonction dissymtriqueL'introduction d'une fonction impaire dans un tel systme boucl permet l'obtention d'unsignal (plus ou moins arrondi selon le filtrage appliqu) compos d'harmoniques impairesseulement. Afin de pouvoir engendrer des harmoniques paires galement, nous introduisonsune dissymtrie dans la fonction . Notant le coefficient de dissymtrie (0 1< ), latransformation que nous appliquons s'exprime par :

    x x0, ( )

    Notre transformation a comme consquence l'apparition d'harmoniques paires si la bouclecomporte un filtrage.Nous montrons aux figures 3-3. et 3-4. l'application de cette dissymtrie de dans notremodle. Le signal a t mesur par une sonde FTS (objet "probe~") et connect au logicield'analyse de signaux Xspect par l'intermdiaire d'un dmon. Les mesures ont t faites pourle cas o = 1 (figure 3-3) et = 0 4. (figure 3-4).

  • Implmentation en temps rel des retards fractionnaires par interpolation de Lagrange 43.

    Figures 3-3. et 3-4. Signal et son contenu frquentiel mesur dans le cas d'une fonction ( )xsymtrique ( = 1 ) et dissymtrique ( = 0 4. ).

    Pour implmenter les fonctionnalits dont nous avons parl prcdemment, nous avons crl'objet externe "xct~" pour la librairie Max/FTS. Celui-ci outre l'implmentation de ( )x ,renferme une srie de fonctionnalits permettant l'utilisation de cette fonction dans uncontexte temps rel. Les principales fonctionnalits sont les suivantes :

    Le contrle du paramtre (la pente de ( )x l'origine) via l'interface Midi. Le contrles'effectue par la vitesse de frappe au clavier ("Midi velocity"). Le paramtre prend lavaleur -3.5 pour une vitesse de frappe maximale (ce qui permet au systme d'atteindreson point de fonctionnement rapidement ou dit autrement permet une attaque nette duson) et -0.95 pour une vitesse de frappe nulle ou un message de fin de note (la pente l'origine de ( )x tant infrieur 1 le systme n'est plus entretenu, i.e. le son s'teint).

    L'incrmentation d'un compteur d'vnements pour les vnements Midi de dbut de noteet sa dcrementantation pour ceux de fin de note. Ceci permet de bloquer le paramtre ,et donc de lier deux sons lorsque deux notes sont joues de manire lie (glissando) surun clavier.

    L'objet "xct~" permet galement le contrle du paramtre par la pression de toucher ("Midiaftertouch"), le contrle du paramtre de dissymtrie par message de contrle Midi ("Midi

  • Implmentation en temps rel des retards fractionnaires par interpolation de Lagrange 44.

    message control"), de mme que l'enclenchement d'une fonction de blocage du paramtre (permettant un jeu en legato) par message de contrle Midi.3.2.2. Ligne de retard entier / Retard Fractionnaire (Filtre Interpolateur de Lagrange) ("fd~")Dans le paragraphe 2.2.2. nous avons prsent une nouvelle implmentation des filtresinterpolateurs de Lagrange pour l'approximation des retards fractionnaires sous forme destructure modulaire. Nous avons montr que l'adjonction ce filtre d'une ligne de retard entierest ncessaire afin de pouvoir limiter la variation de l'ordre du filtre, et nous avons explicitune procdure de remise jour des tats du systme (par calcul des entres antrieures dusystme), applicable lors du transfert d'une partie du retard du F.I.L. vers la ligne de retardentier ou l'inverse.

    L'objet externe "fd~" que nous avons ralis permet de faire l'ensemble de ces oprations.Nous donnons son diagramme de fonctionnement la figure 3-5..

    Rappelons qu'il existe une autre implmentation des retards fractionnaires dans la librairieMax/FTS. Comme expliqu prcdemment, l'objet "vd~" crit par Miller-Puckette renfermeune ligne de retard entier et un filtre R.I.F. sous forme de structure de Farrow d'ordre 4.

    Rduction de la variation instantanne de D

    Ligne de retard entier Filtre Interpolateur de Lagrange

    Retard total D

    Prise en charge de la variation de D par d

    Calcul de lordre N du F.I.L.

    Choix de la parit de lordre du L.I.F.

    Transfert dune partie du retard d->k si N>Nmax k->d si N

  • Implmentation en temps rel des retards fractionnaires par interpolation de Lagrange 45.

    D'un autre ct, nous voudrions permettre le "jeu" du modle partir d'un clavier Midi. Ce quiimplique de pouvoir produire des variations instantanes de D importantes. Nous ne pouvonsdonc nous limiter varier D de seulement un chantillon par passage (dans FTS, un "passage"est effectu chaque fois qu'un nouveau paquet de 64 chantillons doit tre trait). Car le fait devarier D de seulement un chantillon tous les 64 chantillons produirait des "glissandi" troplongs lorsque D doit passer d'une valeur une autre loigne.De ce fait, dans l'objet "fd~" nous permettons des variations instantanes du retard D deDmax = 2 .

    Ceci est un choix, puisque nous pourrions galement dcider de contourner le problme entalant les variations de D suprieures un chantillon, non pas sur les passages suivants depaquets de 64 chantillons, mais l'intrieur mme d'un paquet de 64 chantillons. Mais dansce dernier cas, nous devrions traiter les chantillons un par un ( cause d'ventuelles variationsde l'ordre du filtre d'un chantillon l'autre, ou pire encore, cause d'un besoin de transfert deretard et de mise jour de l'tat du systme), ce qui empcherait toutes implmentationsvectorielles efficaces des algorithmes. Dans un contexte de temps rel, nous privilgions doncles implmentations vectorielles ceci afin d'viter des temps de calcul prohibitifs. D'o notrechoix Dmax = 2 .Prise en charge de la variation de D par d : d D d d d= = +

    Comme vu prcdemment ( 2.2.2.), il est avantageux de privilgier les variations de d (lapartie du retard implmente par le F.I.L.) plutt que de repartager en permanence le retardentre d et K (la longueur de la ligne de retard entier) et de devoir en permanence remettre jour l'tat du systme. Ds lors, dans notre implmentation, la variation de D sera prise encharge prioritairement par d, le retard implment sous forme de F.I.L..Transfert d'une partie du retard d->k si N>N max , k->d si Nd).Calcul de l'ordre N du F.I.L.L'ordre du filtre interpolateur de Lagrange est alors calcul : N= 2d ou 2d , en tenantcompte du choix de la parit de l'ordre souhaite.Ligne de retard entierLa ligne de retard entier est implmente sous forme d'un buffer circulaire de taille 512. FTStravaillant par paquets de 64 chantillons, chaque passage le pointeur d'criture se dplacede 64 chantillons vers la gauche et crit les 64 nouveaux chantillons vers la droite. Lepointeur de lecture (qui est alors kprcdent chantillons droite du pointeur d'criture) sedplace lui de 64-(knouveau-kprcdent ) vers la gauche et lit les 64 chantillons vers la droite. Lasortie de la ligne de retard entier est raccorde l'entre du filtre interpolateur de Lagrange(figure 3-6.).

  • Implmentation en temps rel des retards fractionnaires par interpolation de Lagrange 46.

    pointeurs dcriture (dplacement de 64 chantillons chaque appel)

    pointeurs de lecture (dplacement de 64 - (knouveau

    -kprcdent

    )

    ...

    ligne de retard entier

    vers F.I.L. sous forme de

    structure modulaire dordre N

    ...

    criture

    ...

    lecture

    x(n) x(n-1)x(n-2) x(n-k) x(n-64)x(n-65) x(n-66)

    Figure 3-6. Fonctionnement de la ligne de retard entier

    Retard fractionnaire (Filtre Interpolateur de Lagrange)Le Filtre Interpolateur de Lagrange est implment sous forme de structure modulaire d'ordreN et de coefficients d (voir 2.2.2.).Pour le temps rel, l'algorithme de calcul du filtre est implment sous forme vectorielle.Remarquons que du fait du traitement vectoriel, seuls les tats internes (X n pour 1 n Npour un F.I.L. d'ordre N) correspondants au traitement du dernier chantillon du paquet (i=64)doivent tre stocks en mmoire. Ceux-ci serviront pour le traitement du premier chantillondu paquet suivant (i=1).L'algorithme vectoriel pour le calcul du F.I.L. d'ordre N peut alors s'crire de la maniresuivante :o n : indice du nme tage du filtre d'ordre N

    i : indice correspondant au traitement du ime chantillon du paquet de taille 64sortie[i] : ime chantillon du paquet de taille 64 sorti de la ligne de retard entier auquel

    s'additionne les valeurs obtenues par les diffrents tages du F.I.L..

    1) Initialisationn 1

    Boucle parcourir pour i =1 64b i sortie i

    2) Boucle parcourir tant que n N[] [ ] []( )11 bnX

    n

    de

    sortie sortie e1 1 1 +

    Boucle parcourir pour i =2 64

    [] [ ] []( )ibibn

    die 1

    sortie i sortie i e i +

    [ ] []ibnX Boucle parcourir pour i =1 (taille buffer FTS)

  • Implmentation en temps rel des retards fractionnaires par interpolation de Lagrange 47.

    [] []ieib ---

    d d 1

    n n + 1

    3) Dernire boucle

    [ ] [ ] [ ]( )264364264 bbn

    de

    [ ] [ ] [ ]( )164264164 bbn

    de

    [ ] [ ] [ ]( )6416464 bbn

    de

    [ ] [ ]64bnX [ ] [ ]264264 eb[ ] [ ]164164 eb[ ] [ ]6464 eb

    d d 1

    n n + 1

    -------------------------------------------

    [ ] [ ] [ ]( )164264164 bbn

    de

    [ ] [ ] [ ]( )6416464 bbn

    de

    [ ] [ ]64bnX [ ] [ ]164164 eb[ ] [ ]6464 eb

    d d 1

    n n + 1

    -------------------------------------------

    [ ] [ ] [ ]( )6416464 bbn

    de

    [ ] [ ]64bnX [ ] [ ]6464 eb

    n n + 1

    -------------------------------------------

    X n b 64

  • Implmentation en temps rel des retards fractionnaires par interpolation de Lagrange 48.

    Dans la dernire boucle de l'algorithme nous anticipons les 4 tats internes du F.I.L.. d'ordresuprieurs X[N+1], X[N+2], X[N+3], X[N+4], de faon pouvoir si le besoin est, augmenterl'ordre du filtre de 4 modules l'ordre du passage suivant ( d Dmax max= =2), et de faon aussi pouvoir effectuer les transferts entre ligne de retard entier et F.I.L. (impliquant une remise jour de l'tat du systme) par valeur de 2 chantillons (1 chantillons dans le 2.2.2.).Les chantillons de sortie du filtre (sortie[i] pour 1 64 i ) sont envoys dans la suite dumodle.

    3.2.3. Contrle de la longueur du retard via l'interface Midi ("miditofreq")Ce petit objet tout simple permet le contrle de l'objet "fd~" via un clavier Midi. Il prend enentre le numro de la note Midi joue ainsi que la valeur du Pitch-Bend, et donne en sortie lavaleur de la frquence (en Hz) et la longueur de retard (en ms) correspondantes.L'objet permet galement de choisir :

    la correspondance entre le dplacement du Pitch-Bend et les valeurs en demi-tons, la transposition du clavier (par demi-tons).

    Les valeurs en sortie sont obtenues l'aide des quations suivantes (69 est le numro de lanote Midi correspondant au "la" 440 Hz et 64 est la valeur du Pitch-Bend l'tat de repos) :

    bendpitchducourse

    bendpitchdumidientreclavierduiontranspositclavierdumidientre

    Hzfrquence

    +

    =/1264

    64

    12

    )69(

    20.440)(

    FTSnnagechantillofrquence

    toutpassefiltreduphasederetardszrounplesdeuxfiltreduphasederetardsFTSbuffertaillefrquence

    msretard++

    +

    =

    /

    0.1000)(

    3.2.4. Filtres rsonnant et filtre passe-tout ("2p2z~")L'objet "2p2z~" de la librairie FTS implmente un filtre deux-ples/deux-zros. Nous nous enservons pour raliser le filtre rsonnant et le filtre passe-tout d'ordre 1 de notre modle. Lafonction de transfert du filtre ralis par l'objet "2p2z~" est la suivante :

    H z cd d z d z

    c z c z( ) =

    + +

    00 1

    12

    2

    11

    221

    Filtre rsonnant

    Comme signal en 3.2.1., l'insertion d'un filtre rsonnant configur en passe-bas dans laboucle est ncessaire afin de forcer le systme vers la solution prsentant un contenuessentiellement en basse-frquence.Le filtre rsonnant que nous avons utilis possde les caractristiques suivantes :

    - frquence de rsonance : 750 Hz- bande passants -3dB : 1500 Hz- frquence de coupure : 11025 Hz

    A la figure 3-7., nous en donnons la rponse en amplitude et en phase.

  • Implmentation en temps rel des retards fractionnaires par interpolation de Lagrange 49.

    Figure 3-7. Rponse en amplitude et en phase du filtre rsonnant/passe-bas decaractristiques fr = 750 Hz BW=1500 Hz, fc=11025 Hz

    Une tude plus approfondie des caractristiques frquentielles d'un instrument (une clarinettebasse par exemple) devrait permettre de dfinir les paramtres idaux de ce filtre d'unemanire plus prcise.Le filtre rsonnant est ralis par un filtre deux-ples/un-zro :

    H zc dz

    az bz( ) =

    +

    + +

    1

    1 21

    Ses coefficients s'obtiennent partir des caractristiques voulues par :

    r e

    Bw

    Fe=

    a rf

    Fer

    = 2 2cos( )

    b r= 2

    c = sin( )

    d rf

    Fer

    = sin( )2

    o Bw est la bande passante -3db et pi

    =

    2 est la phase initiale

    Nous normalisons le filtre de manire le rendre passif. Le filtre s'crit alors :

    H zz

    z z( ) .

    .

    . .=

    +

    +

    0 04131 0 7892

    1 1 5784 0 6522

    1

    1 2

    Filtre passe-tout

  • Implmentation en temps rel des retards fractionnaires par interpolation de Lagrange 50.

    Comme signal dans l'introduction du paragraphe 3.2., le filtre passe-tout que nous insronsdans la boucle n'est nullement une autre implmentation des retards fractionnaires variables. Ils'agit d'un filtre passe-tout d'ordre 1 et de ple constant a. D'ailleurs, lorsqu'on utilise un filtrepasse-tout pour la ralisation de retards fractionnaires, il est utilis pour ses proprits delinarit de phase (donc de retard de phase constant). Ce qui se passe lorsque le ple estproche de zro (pour un filtre d'ordre 1). Le passe-tout que nous utilisons a un ple proche deun et possde une rponse en phase non-linaire (donc un retard en phase non-constant) (voirfigures 3-8. et 3-9.)

    Figure 3-8. Rponse en phase (-) et retard dephase (--) d'un filtre passe-tout d'ordre 1 de

    ple a=0.18

    Figure 3-9. Rponse en phase (-) et retard dephase (--) d'un filtre passe-tout d'ordre 1 deple a=0.8

    C'est cette dernire proprit de retard de phase non-constant (figure 3-9) qui nous intresse.Elle nous permet de retarder les diffrentes composantes frquentielles du signal d'un retardvariant en frquence ( ) . On peut noter que cette situation est aussi le cas d'instruments rels(exemple de la fonction de rflexion du saxophone).Les rpercutions sur le spectre du signal de l'introduction d'un filtre passe-tout avec un pleproche de un sont difficiles expliquer dans un contexte de boucle renfermant galement unefonction non-linaire. Ceci n'est d'ailleurs pas le propos de ce travail. Nous pouvonssimplement dire qu'exprimentalement nous avons constat une modification du spectre telleque les partiels principaux restent. Il se produit galement un phnomne de modulation enamplitude des partiels une frquence infrieur, la raison pour laquelle sans doute le sonparat plus "vivant".

  • Implmentation en temps rel des retards fractionnaires par interpolation de Lagrange 51.

    La fonction de transfert du filtre passe-tout d'ordre 1 que nous utilisons est la suivante :

    H z a az

    az( ) =

    11

    1

    1

    1 o a < 1

    Dans notre modle, le ple peut tre rgler entre ] [1,0 . Dans les exemples sonores que nousmontrerons lors de la soutenance de stage, nous avons utilis les valeurs suivantes de ples etde zro :

    ple en a = 0.18 et donc zro en 1a

    = 5.55

    ple en a = 0.8 et donc zro en 1a

    = 1.25

    3.2.5. Schma global du modle physique d'instrument tube et du contrle de ses paramtresvia Midi

    Pour terminer nous donnons le schma global de notre modle physique simplifid'instrument tube et les contrle de ses paramtres via Midi (figure 3-10) correspondant notre patch "trombinette.pat" ("clarinette" + "trombone coulisse" = trombinette) sur Max(figure 3-11).Nous aurions aim pouvoir analyser la forme de l'onde lors d'une variation de la longueur deretard (comme nous l'avions fait lors de la simulation sur Matlab). Mais le fait que lesparamtres du systme ne peuvent tre changs que tous les 64 chantillons, nous forcerait analyser le signal sur une longue priode. Hors comme expliqu en 3.1., actuellement iln'existe pas d'objet sur FTS permettant de convertir le signal DSP en fichier audio. Seule unesonde nous permettrait de raliser une analyse, mais la longueur du signal obtenue serait alorstrop petite.

    Les exemples sonores prsents lors de la soutenance de ce travail serviront donc validerl'implmentation.

  • Implmentation en temps rel des retards fractionnaires par interpolation de Lagrange 52.

    Fonction Non-Linaire

    Ligne de retard entier

    Retard Fractionnaire (Filtre Interpolateur de Lagrange)

    Mixer

    Rverbration

    Filtre rsonnant/passe-bas

    Filtre passe-tout

    DAC

    Midi Velocity Midi Aftertouch Midi Modulation

    Midi vers longueur de retard

    Midi Note Number Midi Pitch Bend

    pente autour de zro pente autour de linfini dissymtrie de la fonction

    -

    z-1

    Figure 3-10. Schma global du modle physique simplifi d'instrument tube et du contrlede ses paramtres via Midi tel que ralis sur le logiciel Max/FTS

  • Implmentation en temps rel des retards fractionnaires par interpolation de Lagrange 53.

    Figure 3-11. Notre patch "trombinette.pat" de Max correspondant au schma de la figure 3-10

  • Implmentation en temps rel des retards fractionnaires par interpolation de Lagrange 54.

    CONCLUSION

    Ce travail avait pour but l'tude de diffrentes stratgies d'implmentation des filtresinterpolateurs de Lagrange pour l'approximation rel des retards fractionnaires variables entemps.

    Nous avons tudi l'implmentation des filtres interpolateurs de Lagrange sous formes destructure de Farrow modifie et sous forme d'une nouvelle structure modulaire. Cette dernireest innovante sur de nombreux points : factorisation et vectorisation des calculs, trs grandeplage de variation de l'ordre du re