-
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