Projet vlrFilter

Filtre Audio Multifonction avec Contrôle par Télécommande

Sujets:
   - Audio Positionnel 3D.
   - Audio Realité Virtuelle.
   - Convolution FFT Rapide.
   - Correction de Pertes Auditives.
   - Réduction de Bruit.
   - Réseau de Microphones.
   - Web Audio, WebRTC.

Un projet de communications audio nommé vlrPhone est en cours d'études et de développement.
Pour plus d'informations sur ce projet, voir aux adresses suivantes:
   - WhmSoft
   - Applications VoIP

vlrPhone utilise un codec audio (méthode de compression et de décompression audio) de grande qualité, entièrement basé sur FFT (Transformation de Fourier Rapide, ou Fast Fourier Transform en Anglais).
A ce stade de développement, à partir de la version 7 des codecs, le projet fournit 3 utilitaires sur Windows pour tester les codecs audio (nommés VLC et VLR) ainsi que d'autres fonctionnalités:
   - test.exe: lit un fichier Wave en entrée, encode le fichier, décode le fichier puis créé un autre fichier Wave en sortie.
   - fshift.exe: permet en plus de tester les décalages de fréquence pour corriger les pertes auditives, et la réduction de bruit.
   - pshift.exe: permet en plus de tester les décalages de hauteur pour corriger les pertes auditives, les décalages de hauteur en général, et la réduction de bruit.

Pour plus d'informations sur ces utilitaires, voir aux adresses suivantes:
   - Décalages de Fréquence
   - Décalages de Hauteur
   - Réduction de Bruit

Le programme vlrFilter va reprendre et complèter les fonctionnalités de ces utilitaires, en y ajoutant un contrôle dynamique des paramètres par l'intermédiaire d'une télécommande.
Le programme pourra être lancé sans paramètre, ou avec un ou plusieurs paramètres. Les valeurs des paramètres manquants seront lues dans un fichier de configuration si elles y figurent, sinon des valeurs par défaut seront prises.
Les valeurs de ces paramètres pourront être testées et fixées en temps réel par l'utilisation d'une télécommande.
A noter qu'à ce jour, ces utilitaires travaillent avec les codecs VLC et VLR.
Ces utilitaires supportent aussi les codecs PCM non compressés (pcm8, pcm16, pcm32 et pcm48, pour les fréquences d'échantillonnage de 8, 16, 32 et 48 kHz). Pour les traitements, les transformations FFT et inverse FFT sont effectués côté décodeur. Le programme vlrFilter va prendre en compte aussi les données audio non compressées.

À ce jour, le projet vlrPhone et les utilitaires utilisent la bibliothèque Open Source PJSIP.
Pour le projet vlrFilter, nous utiliserons la bibliothèque Chromium. Les interfaces Web Audio et WebRTC seront disponibles avec le choix de cette bibliothèque.
Les codecs VLC et VLR seront implémentés correctement dans la bibliothèque Chromium. Toutes les fonctionnalités listées ici concernant ces codecs seront disponibles via les lignes de commande, les fichiers de configuration ou les valeurs par défaut.
Il sera possible de construire des logiciels personnalisés avec des APIS basées sur HTML5 et Javascript, ou basées sur C / C++, directement à partir de la bibliothèque Chromium modifiée.

Le programme va supporter les systèmes d'exploitation Windows et Linux (Raspberry PI).
D'autres systèmes d'exploitation (iOS, Android, Mac, Chrome OS, ...) seront considérés ultérieurement.

L'entrée sera mono ou stéréo, avec diverses possibilités:
   - Une entrée audio non compressée (microphone ou ligne).
   - Un fichier Wave non compressé.
   - Une entrée audio compressée (avec les codecs VLC et VLR).
   - Un fichier Wave compressé (avec les codecs VLC et VLR).

La sortie sera mono ou stéréo, avec diverses possibilités:
   - Une sortie audio non compressée.
   - Un fichier Wave non compressé.
   - Un fichier Wave compressé (avec les codecs VLC et VLR).

La sortie sera à connecter à des enceintes acoustiques, à des appareils auditifs, à des écouteurs ou à des casques audio via des fils, le bluetooth ou le wifi. Se référer à la documentation de votre système pour cette mise en oeuvre.

Les fréquences d'échantillonnage seront données, dans l'ordre, soit par le fichier Wave d'entrée, soit par le codec VLC ou VLR d'entrée, soit au lancement du programme, soit par le fichier de configuration globale, soit par une valeur par défaut.

En option, l'entrée et la sortie vont supporter plus de deux canaux (multicanal).
L'accélération GPU sera disponible via la bibliothèque Chromium.

La télécommande infrarouge sera livrée avec un récepteur infrarouge USB.
Nous allons décrire ci-dessous les fonctionnalités que devra supporter la télécommande ainsi que les interactions avec le programme vlrFilter.

Il faut choisir une fonction, puis un numéro représentant une sous-fonction (touches 0 à 9).

Les touches [+] et [-] servent à changer les valeurs.
Les touches [++] et [--] servent à changer les valeurs plus rapidement.
La touche [Ok] valide les choix.
La touche [Cancel] annule tous les choix depuis la dernière validation.
La touche [Close] ferme le programme.
La touche [Reset] réinitialise les valeurs pour une fonction (si on choisit une fonction
et si on appuie sur [Reset]) ou pour une sous-fonction (si on choisit une sous-fonction
et si on appuie sur [Reset]).
Les touches [V+] et [V-] servent à changer le volume global de sortie.
La touche [i] affiche ou cache les informations de configuration sur l'écran de l'ordinateur.

Le programme doit répondre dynamiquement à tous les ordres de la télécommande.


1) [3D]
Pour l'audio positionnel 3D.
Pour plus d'informations sur l'audio positionnel 3D, voir à l'adresse suivante:
   - Audio Positionnel 3D

   - Touche [1]: pour changer l'azimuth (angle dans le plan horizontal). L'azimuth varie de -180 à 180 degrés par pas de 5 degrés.
   - Touche [2]: pour changer l'élévation (angle dans le plan vertical). L'élévation varie de -90 à 90 degrés par pas de 5 degrés.

L'audio positionnel 3D sera disponible via la bibliothèque Chromium.

Afin de personnaliser au mieux ces filtres HRTF génériques, notamment dans le plan horizontal, nous ajoutons deux paramètres contrôlés par les touches [3] et [4]:
   - L'ITD (Différence Interauriculaire de Temps, Interaural Time Difference en Anglais).
   - L'ILD (Différence Interauriculaire d'Intensité, Interaural Level Difference en Anglais).

   - Touche [3]: pour changer la valeur de l'ITD (en microsecondes), de -10000 à 10000 par pas de 100 (touches [+] ou [-]) ou 1000 (touches [++] ou [--]). La valeur par défaut de ce paramètre est de 0 microseconde.
   - Touche [4]: pour changer la valeur de l'ILD (en dB), de -40 à 40 par pas de 0,1 (touches [+] ou [-]) ou 1 (touches [++] ou [--]). La valeur par défaut de ce paramètre est de 0 dB.


2) [Reverb]
Pour l'effet de réverbération par la convolution FFT rapide.
L'effet est appliqué à une sortie mono ou stéréo.
Le nom du fichier de Réponse Impulsionnelle (IR, ou Impulse Response en Anglais) est donné au lancement du programme ou est lu dans un fichier de configuration global.
Le format (fichier Wave stéréo) et les conditions que doit remplir ce fichier sont les mêmes que pour l'audio positionnel 3D.
Les touches [1] et [2] servent à contrôler les gains ou les atténuations supplémentaires à appliquer aux canaux de sortie.


3) [IR360]
Pour choisir le multicanal et l'effet Surround par la convolution FFT rapide.
Le nombre de canaux en entrée et le nombre de canaux en sortie peuvent être donnés au lancement du programme ou sont lus dans le fichier de configuration globale.
Le nom du fichier de Réponse Impulsionnelle (IR, ou Impulse Response en Anglais) est donné au lancement du programme ou est lu dans un fichier de configuration global.
Le format (fichier Wave multicanal) et les conditions que doit remplir ce fichier sont les mêmes que pour l'audio positionnel 3D.
Les touches [1], [2], etc..., servent à contrôler les gains ou les atténuations supplémentaires à appliquer aux canaux de sortie.

Il faut noter que si on utilise les fichiers multicanaux compressés avec les codecs VLC et VLR, il n'y a pas besoin de faire de FFT avant d'effectuer la convolution rapide.
Il n'y a pas de limite théorique pour le nombre de canaux. La limite réelle est imposée par le matériel et les gestionnaires de périphérique.
La fréquence d'échantillonnage est de 44 kHz ou 48 kHz, le programme travaillant en interne à 48 kHz.

Cette fonctionnalité est disponible en option.


4) [Multi]
Pour choisir le multicanal simple, sans convolution FFT rapide.
Le nombre de canaux en entrée et le nombre de canaux en sortie peuvent être donnés au lancement du programme ou sont lus dans le fichier de configuration globale.
Les touches [1], [2], ..., servent à contrôler les gains ou atténuations supplémentaires à appliquer aux canaux de sortie.

L'option [Multi] peut être utilisée pour appliquer un algorithme simple mais efficace à un réseau de microphones.
Pour activer cet algorithme au lieu de l'audio multicanal simple, il faut utiliser les sous-fonctions * et #:
* [1], [2], [3], ..., pour donner les les gains ou atténuations supplémentaires à appliquer aux magnitudes.
# [1], [2], [3], ..., pour donner les décalages supplémentaires à appliquer aux phases.
Un canal de sortie intermédiaire sera créé, tous les canaux de sortie auront le même contenu que ce canal intermédiaire.
Voir les sections ILD et ITD pour des exemples de valeur.

Remarques:
Notre codec peut encoder efficacement les données des réseaux de microphones (beamforming microphone arrays en Anglais), avec ou sans pré-traitement côté émetteur (compression), et avec possibilité de traitement rapide côté récepteur (décompression).
La qualité du résultat souhaité (réduction de bruit, filtrage spatial, ...) dépend du nombre de microphones et les algorithmes les plus efficaces utilisent FFT.
Pour plus d'informations sur le sujet, voir à l'adresse suivante:
Beamforming

Il n'y a pas de limite théorique pour le nombre de canaux. La limite réelle est imposée par le matériel et les gestionnaires de périphérique.
La fréquence d'échantillonnage est de 44 kHz ou 48 kHz, le programme travaillant en interne à 48 kHz.

Cette fonctionnalité est disponible en option.


5) [EQ7]
Pour l'égaliseur graphique 7 bandes ou l'audiométrie, sortie gauche ou oreille gauche, et sortie droite ou oreille droite.
Les 7 fréquences standards sont contrôlées par les touches [1] à [7].
Un filtre FIR est automatiquement généré et appliqué à la sortie audio.
Les 7 fréquences standards sont:
   - 125 Hz, 250 Hz, 500 Hz, 1000 Hz, 2000 Hz, 4000 Hz et 8000 Hz.


6) [EQ10]
Pour l'égaliseur graphique 10 bandes, sortie gauche et sortie droite.
Les 10 fréquences standards sont contrôlées par les touches [0] à [9].
Un filtre FIR est automatiquement généré et appliqué à la sortie audio.
Les 10 fréquences standards sont:
   - 32 Hz, 63 Hz, 125 Hz, 250 Hz, 500 Hz, 1000 Hz, 2000 Hz, 4000 Hz, 8000 Hz et 16000 Hz.


7) [F-Sh]
Pour le décalage de fréquence (Frequency Shifting en Anglais).
Pour plus d'informations sur le décalage de fréquence, voir à l'adresse suivante:
   - Décalage de Fréquence

   - Touche [1]: pour fixer la valeur du ratio de compression entre 1 et 100 par pas de 1 (touches [+] ou [-]) ou 10 (touches [++] ou [--]). La valeur par défaut du ratio de compression est de 1 (pas de décalage de fréquence).
   - Touche [2]: pour fixer la valeur du seuil de compression (en Hz) par pas de 10 ou 100. La valeur par défaut du seuil de compression est de 1500 Hz.
   - Touche [3]: pour fixer la valeur de l'offset de décalage (en Hz) par pas de 10 ou 100. La valeur par défaut de l'offset de décalage est de 0 Hz.
   - Touche [4]: pour fixer la valeur de la largeur d'une bande de fréquence pour la composition (en Hz), par pas de 10 ou 100. La valeur par défaut de la largeur de bande est de 0 Hz (pas de composition).

La sortie suppose un seul canal.
Dans le cas d'une entrée avec plusieurs canaux, on peut supposer qu'on a un réseau de microphones et appliquer un algorithme spécifique à cette sortie, avant d'appliquer les méthodes de cette section. Il suffit d'entrer les valeurs suivantes:
* [1], [2], [3], ..., pour donner les les gains ou atténuations supplémentaires à appliquer aux magnitudes.
# [1], [2], [3], ..., pour donner les décalages supplémentaires à appliquer aux phases.
Voir la section [Multi].
Le multicanal est disponible en option.


8) [P-Sh]
Pour le décalage de hauteur (Pitch Shifting en Anglais).
Pour plus d'informations sur le décalage de hauteur, voir à l'adresse suivante:
   - Décalage de Hauteur

   - Touche [1]: pour fixer la valeur du ratio de décalage entre -100 et 100 par pas de 1 (touches [+] ou [-]) ou 10 (touches [++] ou [--]). La valeur par défaut du ratio de décalage est de 0 (pas de décalage de hauteur).
   - Touche [2]: pour fixer la valeur du seuil de décalage (en Hz) par pas de 10 ou 100. La valeur par défaut du seuil de décalage est de 1500 Hz.
   - Touche [3]: pour fixer la valeur de l'offset de décalage (en Hz) par pas de 10 ou 100. La valeur par défaut de l'offset de décalage est de 0 Hz.
   - Touche [4]: pour fixer la valeur de la largeur d'une bande de fréquence pour la composition (en Hz), par pas de 10 ou 100.

La valeur par défaut de la largeur de bande est de 0 Hz (pas de composition).

La sortie suppose un seul canal.
Dans le cas d'une entrée avec plusieurs canaux, on peut supposer qu'on a un réseau de microphones et appliquer un algorithme spécifique à cette sortie, avant d'appliquer les méthodes de cette section. Il suffit d'entrer les valeurs suivantes:
* [1], [2], [3], ..., pour donner les les gains ou atténuations supplémentaires à appliquer aux magnitudes.
# [1], [2], [3], ..., pour donner les décalages supplémentaires à appliquer aux phases.
Voir la section [Multi].
Le multicanal est disponible en option.


9) [G-Sh]
Cas spécial de décalage de hauteur avec seuil de décalage = 0 Hz, offset de décalage = 0 Hz et pas de composition.
Cet effet correspond à un effet de décalage de hauteur du son de guitare.

   - Touche [1]: pour fixer la valeur du ratio de décalage entre -100 et 100 par pas de 1 (touches [+] ou [-]) ou 10 (touches [++] ou [--]).

La sortie suppose un seul canal.
Dans le cas d'une entrée avec plusieurs canaux, on peut supposer qu'on a un réseau de microphones et appliquer un algorithme spécifique à cette sortie, avant d'appliquer les méthodes de cette section. Il suffit d'entrer les valeurs suivantes:
* [1], [2], [3], ..., pour donner les les gains ou atténuations supplémentaires à appliquer aux magnitudes.
# [1], [2], [3], ..., pour donner les décalages supplémentaires à appliquer aux phases.
Voir la section [Multi].
Le multicanal est disponible en option.


10) [Noise]
Pour la réduction de bruit.
Pour plus d'informations sur la réduction de bruit, voir à l'adresse suivante:
   - Réduction de Bruit

   - Touche [1]: pour fixer la valeur du plancher de l'avant plan (en dB) entre -180 et 0, par pas de 1 (touches [+] ou [-]) ou 10 (touches [++] ou [--]). La valeur par défaut du plancher de l'avant plan est de -80 dB.
   - Touche [2]: pour fixer la valeur du niveau de son voisé (en dB) entre -180 et 0, par pas de 1 et 10. La valeur par défaut de ce niveau est de -40 dB.
   - Touche [3]: pour fixer la valeur du ratio de l'énergie entre 0 et 1000, par pas de 0,1 ou 10. La valeur par défaut de ce paramètre est de 1.
   - Touche [4]: pour fixer la valeur du gain ou de l'atténuation du bruit (en dB), entre -180 et 180, par pas de 1 ou 10. La valeur par défaut de ce paramètre est de 0 dB (pas de gain ou d'atténuation).

La sortie suppose un seul canal.
Dans le cas d'une entrée avec plusieurs canaux, on peut supposer qu'on a un réseau de microphones et appliquer un algorithme spécifique à cette sortie, avant d'appliquer les méthodes de cette section. Il suffit d'entrer les valeurs suivantes:
* [1], [2], [3], ..., pour donner les les gains ou atténuations supplémentaires à appliquer aux magnitudes.
# [1], [2], [3], ..., pour donner les décalages supplémentaires à appliquer aux phases.
Voir la section [Multi].
Le multicanal est disponible en option.


11) [i1],[i2],[i3],[i4]
Pour afficher les informations sur les sponsors de niveau 1 au niveau 4, sur l'écran de l'ordinateur.



Risques

Les risques liés à ce projet sont minimes, la plupart des fonctionnalités existent déjà. Les télécommandes multimédia sont très largement utilisées de nos jours (XBMC Media Center, Windows Media Center, ...). Nous proposons juste une télécommande adaptée à notre projet.
Il reste quelques fonctionnalités intéressantes à développer ou à finir. Un léger retard n'est pas à exclure.


Récompenses

Ce projet ne peut pas aboutir sans le soutien d'utilisateurs intéressés et de sponsors.
Les premiers fonds recueillis serviront à terminer le codage et à lancer la fabrication des télécommandes et des récepteurs infrarouges.


1) Logiciel I
vlrFilter, version de base
Pour Windows et Linux (Raspberry PI)
30 Juin 2017
5 euros

2) Logiciel II
vlrFilter, version de base et options
Pour Windows et Linux (Raspberry PI)
30 Septembre 2017
50 euros

3) Télécommande et récepteur infrarouges
31 Juillet 2017
50 euros
Frais de port:
USA, Canada, France: 15 euros
UE: 20 euros
Autres pays: 25 euros
+ vlrFilter, version de base et options

4) Sponsor I
31 Juillet 2017
Nom et URL d'un site web du sponsor.
La liste de ces sponsors est visible avec la touche [i1] sur l'écran de l'ordinateur.
Nom et lien dans une page liée à la page web du logiciel, dans la section Sponsors I.
100 euros
+ vlrFilter, version de base et options
+ Télécommande et récepteur infrarouges et frais de port


5) Sponsor II
31 Juillet 2017
Nom, logo et URL d'un site web du sponsor.
La liste de ces sponsors est visible avec la touche [i2] sur l'écran de l'ordinateur.
Nom, logo et lien dans une page liée à la page web du logiciel, dans la section Sponsors II.
250 euros
+ vlrFilter, version de base et options
+ Télécommande et récepteur infrarouges et frais de port


6) Sponsor III
31 Juillet 2017
Nom, logo et URL d'un site web du sponsor.
La liste de ces sponsors est visible avec la touche [i3] sur l'écran de l'ordinateur.
Nom, logo et lien dans une page liée à la page web du logiciel, dans la section Sponsors III.
500 euros
+ vlrFilter, version de base et options
+ Télécommande et récepteur infrarouges et frais de port


7) Sponsor IV
31 Juillet 2017
Nom, logo et URL d'un site web du sponsor.
La liste de ces sponsors est visible avec la touche [i4] sur l'écran de l'ordinateur.
Nom, logo et lien dans une page liée à la page web du logiciel, dans la section Sponsors IV.
1000 euros
+ vlrFilter, version de base et options
+ Télécommande et récepteur infrarouges et frais de port



Infographies