SoundEngine
description
Transcript of SoundEngine
SoundEngineSoundEngine
Un serveur d ’effets sonore en temps réel
Juillerat Nicolas
Objectifs du projetObjectifs du projet
Modifier des sons en temps réel–Micro Transformation Hauts-
parleursModifier la transformation en temps
réel–Modification des paramètres–Modification des effets
Temps réel = 1/10 secondes
Plan de la présentationPlan de la présentation
1. Noyau du programme2. Effets sonores3. Conclusion
1. Noyau du programme 1. Noyau du programme
1. Noyau du programme1. Noyau du programme
Composantes principales– 1.1 Effets– 1.2 Graphe d’effets– 1.3 Remarques
1.1 Effets1.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 Effets1.1 Effets
Structure d’un port– Nom, description, capacité– Attributs– Formats acceptés
1.1 Effets1.1 EffetsExemples 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 Effets1.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 Effets1.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’effets1.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’effets1.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 ’effets1.2 Graphe d ’effets
Fonctionnement interne– Similaire à un « depth-first searchdepth-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 ’effets1.2 Graphe d ’effets
1.2 Graphe d ’effets1.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 Remarques1.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 Remarques1.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-searchdepth-first-search » du graphe des
effets (tâche périodique)– Autres événements utilisés par certains
effets temps-réel
1.3 Remarques1.3 Remarques
Le noyau est indépendant des types d’effets– Effets sonores– Effets vidéos– Portes logiques– etc
2. Effets sonores2. Effets sonores
2. Effets sonores2. Effets sonores
Présentation d’un exemple concret: le décalage fréquentiel (pitch shifting)
2. Effets sonores2. Effets sonores
2.1 Définition du pitch shifting2.2 Problèmes2.3 Solution proposée2.4 Intégration
2.1 Définition du pitch shifting2.1 Définition du pitch shifting
Définition intuitive–Modifier la fréquence d’un son sans en
changer la vitesseDéfinition formelle–Multiplier par une constante l’ensemble
des fréquences de base du spectre instantané à tout instant
2.1 Définition du pitch shifting2.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 shifting2.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 infini ) de fréquences de base (théorie de Fourier)
2.1 Définition du pitch shifting2.1 Définition du pitch shifting
Illustration
2.2 Problèmes2.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ée2.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 intervalleintervalle de temps)
2.3 Solution proposée2.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ée2.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 20482048 échantillons (environ 50ms)
=> Analyse des fréquences entre 22Hz (environ) et 22kHz
=> Permet d ’utiliser la FFT
2.3 Solution proposée2.3 Solution proposée
Calcul du spectre local
Problème:– La DFT analyse le spectre d’un son
périodiquepériodique
– Problème de dispersion pour 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ée2.3 Solution proposée
Calcul du spectre local
Illustration
2.3 Solution proposée2.3 Solution proposée
Calcul du spectre local
Illustration
2.3 Solution proposée2.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ée2.3 Solution proposée
Fenêtrage : Illustration
2.3 Solution proposée2.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ée2.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èsaprès la
transformation et tenir compte des deux fenêtres pour la reconstruction
2.3 Solution proposée2.3 Solution proposée
Résumé
2.4 Intégration2.4 Intégration
2.4 Intégration2.4 Intégration
1ere idée– Créer un effet « pitch shifting » qui
effectue toutes ces opérations
2.4 Intégration2.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égration2.4 Intégration
Désavantages– Plusieurs effets pour un effet sonore
2.4 Intégration2.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. Conclusion3. Conclusion
3. Conclusion3. 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. Conclusion3. 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
Questions ?Questions ?
Demonstration !Demonstration !
Coffee breakCoffee break
Merci de votre attention