Concernant l'audio du futur, on peut également s'interroger sur le prix du matériel (DSP) qui sera nécessaire pour la mettre en oeuvre.
Je vais essayer de refaire une tentative pour expliquer le filtrage par convolution et ce que cela implique au niveau du matos, que Dieu me pardonne (et que Gbo me modère si je sors des clous

). Je précise que je vais rester hyper basique : il n'est pas question d'entrer ds les subtilités => ce que je vais écrire est dnc un compromis entre extrême vulgarisation et exactitude mathématique.
Let's go.
Lorsqu'on veut appliquer une transformation linéaire à un signal numérique, afin d'obtenir un nouveau signal, on peut montrer que cette transformation se modélise dans le domaine temporel par un produit de convolution :
s[k] = somme pour i allant de -l'infini à +l'infini h[i] x e[k-i]
ou
s[k] est le nouveau signal obtenu à l'instant k
h[i] est la réponse impulsionnelle de la transformation à un instant i (la seule chose à retenir ici, c'est que c'est également un signal numérique obtenu d'une certaine manière...)
e[k-i] est le signal qu'on veut transformer à l'instant k-i
Dans la somme qui précède, le truc qui gène si on veut implémenter la convolution dans un DSP est que i varie de -l'infini à + l'infini. (Rq : implémenter cette convolution dans le domaine fréquentiel au lieu du temporel n'y changerait rien : il faudrait alors une précision infinie sur l'axe des fréquences jusqu'à la fréquence d'échantillonnage. Donc quoi qu'il arrive, on a un problème Houston!)
On peut tordre le coup à -l'infini en restreignant la transformation à une transformation dite causale. Dans ce cas, on obtient :
s[k] = somme pour i allant de 0 à +l'infini h[i] x e[k-i]
Mais bon, il reste tjrs un infini...
C'est la réponse impulsionnelle h qui va en quelque sorte nous sauver : il existe deux types de réponse h :
- celles de longueur infinie : quel que soit l'indice i que je considère, il existe toujours des termes non nuls dans le signal h : h[0], h[1], h[2], h[3], ... , h[i], ...
Ce type de réponse impulsionnelle porte le doux nom de IIR (Infinite Impulse Response), ou RII en français.
- celles de longueur finie : à partir d'un certain indice M, les termes sont TOUS nuls dans le signal h: h[0], h[1], h[2], ... , h[M-1], 0, 0, 0, 0, ...
Ce type de réponse impulsionnelle porte le doux nom de FIR (Finite Impulse Response), ou RIF en français.
Contrairement à ce qu'on pourrait imaginer, les transformations IIR sont extrêment classiques en filtrage de signal qu'il soit analogique ou numérique. Par exemple, en analogique, tous les filtres actifs ont des reponses impulsionnelles IIR. En numérique, tous les appareils qui proposent des banques de filtrage paramétrique EQ ont aussi des rép. imp. IIR. Idem pour les appareils qui proposent des filtres numériques passe bas, passe bande et passe haut pour faire de la multiamplification, etc.
Si les filtres (ou transformations) à base d'IIR ont tant de succès, c'est parce qu'en dépit de l'infini présent dans la convolution, il est très simple de les implémenter dans un DSP. On n'utilise tout simplement pas la convolution!!! (puisque c'est impossible). On s'en sort car on peut montrer que ce type de filtre peut *également* se modéliser par une équation récurrente :
dans ce cas, la sortie s[k] va dépendre de l'entrée e[k-1], éventuellement de qq entrées précédentes e[k-2], e[k-3] etc. en nombre *fini* ET FORCEMENT (c'est très important) de qq sorties précédentes s[k-1], s[k-2], etc. également en nombre *fini*.
Donc là on est sauvé ! Comme le nombre de sorties précédentes à considérer est généralement très faible (elle dépend de l'ordre du filtre : 1 sortie précédente pour un filtre d'ordre 1, 2 sorties précédentes pour un filtre d'ordre 2, etc. sachant qu'on va rarement au delà de l'ordre 5 ou 6 en pratique), un petit DSP avec quelques octets de mémoire et une unité de calcul arithmétique de base sur les flottants (nombres réels) est suffisant. Il suffit pour calculer s[k] de mémoriser les qq sorties précédentes et de remettre à jour cette mémorisation à chaque instant k. Ce type de circuit DSP coute quelques dollards et est présent dans tous les circuits audio numérique. Les appareils qui utilisent ces circuits ont généralement un coût assez faible (de la centaine d'euros voir moins à quelques centaines d'euros).
Reste les transformations dont la rép. imp. est de type FIR.
Dans ce cas, comme les termes dans h sont tous nuls à partir d'un certain indice M, la convolution du signal h[] avec le signal e[] devient :
s[k] = somme pour i allant de 0 à (M-1) h[i] x e[k-i]
avec h de longueur M : h[0], h[1], h[2], ... , h[M-1]
Pour implémenter cette convolution, on a deux choix possible : soit l'implémenter dans le domaine temporel (c'est maintenant possible car il n'y a plus d'infini), soit l'implémenter dans le domaine fréquentiel.
Dans le domaine temporel, on peut vite avoir des problèmes de temps de calcul. Imaginons par exemple qu'on veuille faire de la réverb. Si on veut simuler un hall avec une réverb de 5 sec, la longueur M de la réponse impulsionnelle h[] va être :
M = 44100 * 5 = 220500 samples (si on a une fréquence d'échantillonnage de 44.1 kHz).
Donc il va falloir faire 220500 "multiplication-additions" tous les 1/44100 sec pour calculer s[k]. Ca c'est pour 1 canal, il faut ensuite multiplier par le nombre de canaux à traiter.
En 5.0, ca donne : 5 * 220500 = 1 102 500 "multiplication-additions" à faire tous les 1/44100 sec...
Et tout cela empire encore si on est en 96 kHz... Bref, pour faire simple, ce n'est pas possible avec les DSP actuel sauf si M est tout petit (de l'ordre de qq centaines de samples avec des DSP puissants). Pour s'en sortir, on implémente alors la convolution dans le domaine fréquentiel. Pour cela (je schématise car c'est bcp plus compliqué), on calcule la FFT de e[] et de h[], on fait ensuite uniquement qq multiplications puis on fait la FFT inverse du résultat obtenu et on récupère le signal s[].
Malgré l'apparente complexité de ces opérations, dès que M est supérieur à 30, on est largement gagnant : ce calcul peut aller jusqu'à des centaines de fois plus vite selon la valeur de M !
Malgré cela, les DSP capables de faire de tels traitements "temps-réel" en multicanal restent chers (plusieurs dizaines à plusieurs centaines de dollards) et il faut en plus leur adjoindre une quantité importante de mémoire pour stocker les réponses implusionnelles h[] ainsi que leur FFT. Qd on sait que le prix de vente en audio est généralement supérieur ou égal au prix de revient multiplié par 10, on comprend vite le problème.
A titre d'exemple, le processeur Sony d'effet DRE S-777 qui fonctionne en filtrage FIR coute dans les $9000 (voir $11000 avec toutes les options). C'est une des raison qui a fait que l'approche logicielle du filtrage FIR s'est démocratisée sur les PC car aujourd'hui les PC sont capables de rivaliser avec les gros DSP audio pour un coup assez faible. Si on ajoute à ça que les régies numériques de studio utilisent de plus en plus des PC, on comprend l'offre logicielle énorme en matière de filtrage FIR.
Tout ça pour dire que le filtrage FIR qui est nécessaire aux approches audio moderne (Trinnov, travail de recherche de Mathieu, etc.) a un coup non négligeable qu'il faudra répercuter sur nos install. Seul un marché de masse et un support par des poids lourds de l'audio (Sony and co) permettra de faire diminuer ces coûts.
Je terminerai en disant qu'un des avantage du DSR, c'est qu'il n'y a pas besoin de DSP.
@+
Emmanuel