480 likes | 681 Views
SoundEngine. Un serveur d ’effets sonore en temps réel Juillerat Nicolas. Objectifs du projet. Modifier des sons en temps réel Micro Transformation Hauts-parleurs Modifier la transformation en temps réel Modification des paramètres Modification des effets Temps réel = 1/10 secondes.
E N D
SoundEngine Un serveur d ’effets sonore en temps réel Juillerat Nicolas
Objectifs du projet • Modifier des sons en temps réel • Micro Transformation Hauts-parleurs • Modifier la transformation en temps réel • Modification des paramètres • Modification des effets • Temps réel = 1/10 secondes
Plan de la présentation • 1. Noyau du programme • 2. Effets sonores • 3. Conclusion
1. Noyau du programme • Composantes principales • 1.1 Effets • 1.2 Graphe d’effets • 1.3 Remarques
1.1 Effets • Boîtes noires constituées d’entrées et de sorties • Structure d’un effet • Nom, type, description • Ports d’entrée et de sortie • Fonction (inconnue du noyau et du client)
1.1 Effets • Structure d’un port • Nom, description, capacité • Attributs • Formats acceptés
1.1 Effets • Exemples de formats • 2048 échantillons 16 bit, 44100Hz, linéaire, Mono (Qualité CD) • 1024 bandes de fréquence (amplitude et phase) • Un nombre à virgule flottante • Un choix parmi une liste • État (Stop, Play, Pause) • Interrupteur (On, Off) • Un nom de fichier
1.1 Effets • Fonctionnement d’un effet • Lis les données dans les ports d’entrées • Applique une ou plusieurs transformations • Renvoie les résultats dans les ports de sortie
1.1 Effets • Trois types d’effets • sources : produisent des sons • Lecture depuis un fichier • Lecture depuis le microphone • Génération de signaux simples • effets : transforment des sons • puits : diffusent des sons • Diffusion dans les hauts-parleurs • Enregistrement dans un fichier
1.2 Graphe d’effets • But • Combiner plusieurs effets simples entre eux pour créer des effets complexes • Isoler chaque problème • Exemple : • 1 effet pour lire depuis un microphone • 1 ou plusieurs effets pour transformer le son • 1 effet pour diffuser le résultat dans les hauts-parleurs
1.2 Graphe d’effets • Structure • Noeuds: Effets • Arcs: Connexions entre le port de sortie d’un effet et le port d’entrée d ’un autre effet • Lorsque deux ports sont connectés, les données produites dans le port de sortie sont transmise au port d ’entrée
1.2 Graphe d ’effets • Fonctionnement interne • Similaire à un « depth-first search » partant des puits • Les puits demandent des informations à intervalles réguliers • Les autres effets répondent aux demandes • Les données sonores sont traitées et circulent par blocs de 50ms
1.2 Graphe d ’effets • Remarques • Les cycles sont permis • Ils induisent un retard dépendant des effets • Les effets inatteignable depuis un puit ne travaillent pas
1.3 Remarques • Le programme permet de créer et de connecter des effets entre eux pour créer un graphe quelconque • La création et la manipulation d ’effets et de connexions est effectuée par des appels RPC
1.3 Remarques • Utilise un Scheduler pour répartir les tâches suivantes : • Réception des appels RPC (tâche de fond) • Exécution des appels RPC • « depth-first-search » du graphe des effets (tâche périodique) • Autres événements utilisés par certains effets temps-réel
1.3 Remarques • Le noyau est indépendant des types d’effets • Effets sonores • Effets vidéos • Portes logiques • etc
2. Effets sonores • Présentation d’un exemple concret: le décalage fréquentiel (pitch shifting)
2. Effets sonores • 2.1 Définition du pitch shifting • 2.2 Problèmes • 2.3 Solution proposée • 2.4 Intégration
2.1 Définition du pitch shifting • Définition intuitive • Modifier la fréquence d’un son sans en changer la vitesse • Définition formelle • Multiplier par une constante l’ensemble des fréquences de base du spectre instantané à tout instant
2.1 Définition du pitch shifting • Définition du spectre instantané • Ensemble des fréquences de base présente dans un son à un instant donné
2.1 Définition du pitch shifting • Définition d ’une fréquence de base • signal cosinusoïdal, A * cos(2f + ) • A: amplitude • f: fréquence • : phase • Remarque • Tout son périodique est la somme d’un ensemble (généralement infini ) de fréquences de base (théorie de Fourier)
2.1 Définition du pitch shifting • Illustration
2.2 Problèmes • A) Impossible de traiter un ensemble infini de fréquences • B) Impossible de modifier une fréquence sans changer la phase • C) Impossible de calculer le spectre instantané (principe d’incertitude d’Heisenberg)
2.3 Solution proposée • Principes • A) Se limiter à un ensemble de fréquences audibles • B) Ignorer les modifications de phase • C) Se contenter du spectre local (ensemble des fréquences de bases sur un intervalle de temps)
2.3 Solution proposée • Méthode • Diviser le son en intervalles consécutifs • Calculer et modifier le spectre local sur chaque intervalle • Regrouper les intervalles modifiés pour reconstruire le résultat final
2.3 Solution proposée • Calcul du spectre local • Utiliser la transformation de Fourier discrète (DFT) • Remarques (choix pratiques) • Les sons sont échantillonnés à 44100Hz • La taille choisie des intervalles est de 2048 échantillons (environ 50ms) => Analyse des fréquences entre 22Hz (environ) et 22kHz => Permet d ’utiliser la FFT
2.3 Solution proposée • Calcul du spectre local Problème: • La DFT analyse le spectre d’un son périodique • Problème de dispersionpour les fréquences qui n’apparaissent pas un nombre entier de fois dans l’intervalle • Domaine temporel: discontinuités • Domaine spectral: apparition de hautes fréquences
2.3 Solution proposée • Calcul du spectre local Illustration
2.3 Solution proposée • Calcul du spectre local Illustration
2.3 Solution proposée • Calcul du spectre local Solution : le fenêtrage • Atténuer les bords des intervalles par une multiplication par une fonction fenêtre
2.3 Solution proposée • Fenêtrage : Illustration
2.3 Solution proposée • Fenêtrage : Problèmes • L ’information est perdue sur les bords des intervalles • Le son est modulé • La transformation peut modifier la fenêtre • La fenêtre modifiée peut ne plus être atténuée sur les bords de l ’intervalle
2.3 Solution proposée • Fenêtrage : Solutions • Utiliser des intervalles qui se chevauchent • Appliquer une fenêtre de correction lors de la reconstruction • Tenir compte de la modification de la fenêtre pour la reconstruction • Appliquer une seconde fenêtre après la transformation et tenir compte des deux fenêtres pour la reconstruction
2.3 Solution proposée • Résumé
2.4 Intégration • 1ere idée • Créer un effet « pitch shifting » qui effectue toutes ces opérations
2.4 Intégration • Meilleure solution • Créer un effet différent pour chaque étape: • Division en intervalles et fenêtrage • DFT • Modification des fréquences et de la fenêtre • DFT inverse • Second fenêtrage et reconstruction du signal
2.4 Intégration • Désavantages • Plusieurs effets pour un effet sonore
2.4 Intégration • Avantages • Isole chaque problème • Les effets de fenêtrage et de DFT peuvent être réutilisés indépendamment pour d ’autres effets sonores • Deux effets travaillant sur le spectre peuvent être regroupés entre la DFT et la DFT inverse => optimisation
3. Conclusion • Le temps de réaction dépend de nombreux facteurs • Retard du au tampon du périphérique d ’entrée (0 - 25ms) • Taille des blocs traités (50ms) • Fenêtrage (0 - 100ms) • Temps de calcul (0 - 50ms) • Retard du au tampon du périphérique de sortie (0 - 25ms)
3. Conclusion • Temps de réaction (total) • Intervalle (50 - 250ms) • En pratique: • Décalage de la tonalité sans fenêtrage: env. 80ms • Décalage de la tonalité avec fenêtrage: env. 150ms
Coffee break Merci de votre attention