Je cherche à déterminer quelle peut être la meilleure méthode d'interpolation d'un signal audio.
La question concerne un oversampling numérique, d'un facteur entier pour faire au plus simple (x2, x3, etc...)
La question n'est pas innocente, le but au final serait de programmer un DSP ou autre pour implémenter cette fonction au sein d'un dac.
Dans mes recherches, j'ai trouvé la méthode classique de filtrage fir. Elle semble donner de bons résultat mais souffre d'un problème d'oscillation (ringing), d'autant plus que le filtre est long.
Le plus simple consiste à doubler les échantillons, on retrouve les mêmes données mais un sample rate doublé. Le problème c'est qu'on a alors le même filtrage en sortie à effectuer, ce qui supprime pas mal d'intérêt au processus.
Dans le simple, il y a l'interpolation linéaire (calculer la moyenne des échantillons dans le cas du x2)
J'ai trouvé aussi sur wikipedia l'interpolation bicubique.
Je suppose que les programmes spécialisés doivent utiliser d'autres algorithmes.
Le but serait de rassembler les infos et de faire un test final comparatif à l'écoute en suréchantillonant un morceau de musique et d'écouter les différences.
Pour visualiser les choses, voici un sinus de 11025hz échantillonné a 44100hz:
![Image](http://belinfabien.free.fr/dac/theorie/origine.jpg)
Voici le même sinus échantillonné à 88.2khz, qui représente l'objectif à atteindre pour avoir un suréchantillonage parfait:
Voici l'échantillon obtenu par interpolation linéaire du signal a 44.1k:
![Image](http://belinfabien.free.fr/dac/theorie/interpolation%20lineaire.jpg)
On constate qu'on obtient un signal triangulaire plutôt qu'un sinus, ce qui correspond à de la distorsion.