SoundEngine

48
SoundEngine SoundEngine Un serveur d ’effets sonore en temps réel Juillerat Nicolas

description

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. - PowerPoint PPT Presentation

Transcript of SoundEngine

Page 1: SoundEngine

SoundEngineSoundEngine

Un serveur d ’effets sonore en temps réel

Juillerat Nicolas

Page 2: SoundEngine

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

Page 3: SoundEngine

Plan de la présentationPlan de la présentation

1. Noyau du programme2. Effets sonores3. Conclusion

Page 4: SoundEngine

1. Noyau du programme 1. Noyau du programme

Page 5: SoundEngine

1. Noyau du programme1. Noyau du programme

Composantes principales– 1.1 Effets– 1.2 Graphe d’effets– 1.3 Remarques

Page 6: SoundEngine

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)

Page 7: SoundEngine

1.1 Effets1.1 Effets

Structure d’un port– Nom, description, capacité– Attributs– Formats acceptés

Page 8: SoundEngine

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

Page 9: SoundEngine

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

Page 10: SoundEngine

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

Page 11: SoundEngine

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

Page 12: SoundEngine

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

Page 13: SoundEngine

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

Page 14: SoundEngine

1.2 Graphe d ’effets1.2 Graphe d ’effets

Page 15: SoundEngine

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

Page 16: SoundEngine

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

Page 17: SoundEngine

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

Page 18: SoundEngine

1.3 Remarques1.3 Remarques

Le noyau est indépendant des types d’effets– Effets sonores– Effets vidéos– Portes logiques– etc

Page 19: SoundEngine

2. Effets sonores2. Effets sonores

Page 20: SoundEngine

2. Effets sonores2. Effets sonores

Présentation d’un exemple concret: le décalage fréquentiel (pitch shifting)

Page 21: SoundEngine

2. Effets sonores2. Effets sonores

2.1 Définition du pitch shifting2.2 Problèmes2.3 Solution proposée2.4 Intégration

Page 22: SoundEngine

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

Page 23: SoundEngine

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é

Page 24: SoundEngine

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)

Page 25: SoundEngine

2.1 Définition du pitch shifting2.1 Définition du pitch shifting

Illustration

Page 26: SoundEngine

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)

Page 27: SoundEngine

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)

Page 28: SoundEngine

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

Page 29: SoundEngine

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

Page 30: SoundEngine

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

Page 31: SoundEngine

2.3 Solution proposée2.3 Solution proposée

Calcul du spectre local

Illustration

Page 32: SoundEngine

2.3 Solution proposée2.3 Solution proposée

Calcul du spectre local

Illustration

Page 33: SoundEngine

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

Page 34: SoundEngine

2.3 Solution proposée2.3 Solution proposée

Fenêtrage : Illustration

Page 35: SoundEngine

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

Page 36: SoundEngine

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

Page 37: SoundEngine

2.3 Solution proposée2.3 Solution proposée

Résumé

Page 38: SoundEngine

2.4 Intégration2.4 Intégration

Page 39: SoundEngine

2.4 Intégration2.4 Intégration

1ere idée– Créer un effet « pitch shifting » qui

effectue toutes ces opérations

Page 40: SoundEngine

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

Page 41: SoundEngine

2.4 Intégration2.4 Intégration

Désavantages– Plusieurs effets pour un effet sonore

Page 42: SoundEngine

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

Page 43: SoundEngine

3. Conclusion3. Conclusion

Page 44: SoundEngine

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)

Page 45: SoundEngine

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

Page 46: SoundEngine

Questions ?Questions ?

Page 47: SoundEngine

Demonstration !Demonstration !

Page 48: SoundEngine

Coffee breakCoffee break

Merci de votre attention