Vous êtes sur la page 1sur 40

SYNTHSE AUDIO SUR SYSTME EMBARQU AVEC FPGA

PHILIPPE PROULX
INF8703 AUDIO NUMRIQUE HIVER 2012 POLYMTL.CA

MOTIVATION
Crer mon propre instrument de musique
Combiner informatique + musique Passionn par les synthtiseurs

Architecture utilise bien connue


Pourquoi ne pas faire un VST? Physiquement plus portable Systme ddi en temps rel (aucun risque de dfaillance dun OS, par exemple) Meilleure latence en gnral Plus grand dfi

PLAN
Motivation
Architecture utilise Prototype lectronique Processeur et contraintes
Quelques solutions

Flot de conception Synthse soustractive DSS (Direct Digital Synthesis) Par table donde Synthse FM Conclusion

SYNTHSE AUDIO SUR SYSTME EMBARQU AVEC FPGA

ARCHITECTURE

PROTOTYPE LECTRONIQUE
Ralis/dmontr sur le Digilent Genesys FPGA Xilinx Virtex-5 Entre MIDI via un core UART

Sortie AC97 (signal mono stro)

Vraie vue de mon projet une fois sur Virtex-5!

MIDI

FPGA
(synthse)

AC97

Signal audio

PROCESSEUR UTILIS
Xilinx MicroBlaze
Architecture 32-bit Synthtis mme le FPGA Trs configurable Permet davoir des DSP sur mesure

PROCESSEUR UTILIS

CONTRAINTES
100 MHz
RAM : 256 MiB Aucun FPU

PROCESSEUR UTILIS

MALGR TOUT

Multiplicateur 32 32 bits rsultat sur 64 bits


Dcalage barillet (barrel shifter) Division matrielle Plusieurs cores matriels (moins de logiciel) UART avec tampon pour entre MIDI (interruption) AC97
Tampon de sortie Contrle du gain global

Compteurs fixes avec interruption pour prcision temporelle

PROCESSEUR UTILIS

PRINCIPAUX PROBLMES POUR LA SYNTHSE AUDIO


100 MHz
Optimiser les routines critiques
On souhaite le plus de polyphonie possible

Utiliser beaucoup de tables prcalcules Forcer certaines routines en ligne (attribut GCC) Rduire le taux dchantillonnage Aucun FPU
Tout faire en virgule fixe
Q4.28 sign Les chantillons sont toujours entre -1 et 1 Certains coefficients dIIR demandent beaucoup de prcision dans la partie fractionnaire

PROCESSEUR UTILIS

VIRGULE FIXE RAPPEL


r = a b;

Oprande Rsultat Retenue

r = (a * b) >> f;

r = (a << f) / b; 0

10

FLOT DE CONCEPTION

Dveloppement et tests fonctionnels dans MATLAB


Implmentation en langage C pour environnement Xilinx Scripts pour gnrer les diffrentes tables directement en langage C

11

SYNTHSE AUDIO SUR SYSTME EMBARQU AVEC FPGA

SYNTHSE SOUSTRACTIVE
12

SYNTHSE SOUSTRACTIVE
Cration dune onde riche en harmoniques
Carre, triangle, dents de scie, bruit blanc Soustraction de frquences

Onde riche

Enveloppe

IIR passe-bas, passe-haut, passe-bande Options communes la synthse


Enveloppe ADSR pour caractre sonique Effets additionnels (non implments)
Distorsion/saturation cho/dlai Flanger ...

IIR

Effets

Sortie

13

SYNTHSE SOUSTRACTIVE

Onde riche

CRATION DE LONDE
Sans contrainte
Enveloppe

Calcul de la position dans londe mathmatiquement et rchantillonnage (TP1) Demande beaucoup dtapes (instructions) Avec contraintes IIR Accumulateur de phase
Table dincrments prcalculs selon notre taux dchantillonnage Plus on avance dans la phase, plus la frquence est haute Effets Trs peu couteux en temps de calcul 16 bits suffisant 32 bits Portamento (pitch bend) en divisant un demi-ton en Sortie plusieurs 16ime ou 32ime de ton Effet dunisson (chorus)

14

SYNTHSE SOUSTRACTIVE

Onde riche

CRATION DE LONDE
Bruit
rand()? ADC dconnect Registre dcalage rtroaction linaire
XOR entre diffrents bits dun registre produit un nouveau bit IIR pseudo-alatoire 16 bits pour un cycle de 65 535 valeurs Trs rapide Frquence paramtrable : garder une mme valeur sur plusieurs chantillons de suite Effets Utilis par le NES pour produire les percussions et certains effets spciaux (vagues, explosions, etc.)

Enveloppe

Sortie

15

SYNTHSE SOUSTRACTIVE

Onde riche

ENVELOPPE ADSR
Paramtres damplitude

Enveloppe

Attaque temps de passage de 0 100 % partir du dclenchement dune touche Chute temps de passage de 100 % s aprs lattaque IIR Maintien niveau s tant que la touche est maintenue Retombe temps de passage de s 0 % partir du relchement dune touche Effets Contrle le caractre sonique des notes Longue attaque, maintien 100 %, longue retombe pad Aucune attaque, courte chute, maintien 0 % pluck Courte attaque, maintien 100 %, courte retombe normal Sortie

16

SYNTHSE SOUSTRACTIVE

Onde riche

ENVELOPPE ADSR

Enveloppe

IIR

Effets

Sortie

17

SYNTHSE SOUSTRACTIVE

Onde riche

ENVELOPPE ADSR
Implmentation

Enveloppe

Table de 256 amplitudes prcalcules (virgule fixe) Compteur matriel 50 Hz (interruption)


IIR Met jour lamplitude en cours dun canal en faisant avancer lindex dans la table (direction selon ltat ADR) Accumulateur incrment dune certaine valeur pour aller lire dans la table temps ADR paramtrables Effets Niveau de maintien s paramtrable : un parmi les 256 disponibles Mais les contrles MIDI sont parmi [0, 127] Sortie

18

SYNTHSE SOUSTRACTIVE

Onde riche

FILTRAGE IIR

Comment contrler les paramtres dynamiquement?

Enveloppe

Quoi prcalculer, quoi calculer en temps rel? Paramtre dynamique fc


Fixer Q Valeur de Butterworth (0,71) plat jusqu fc Prcalculer b0, b1, b2, a1 et a2 Tables de 128 valeurs dans lintervalle [20, fs / 2] Hz Espaces exponentiellement Passe-bas b2 = (b1 0,5) = b0 Passe-haut b2 = (-b1 0,5) = b0 Passe-bande b1 = 0

IIR

Paramtres dynamiques fc et Q

Effets

Prcalculer 128 valeurs de w (vite la tangente en temps rel) Prcalculer 128 valeurs de (1 / Q) Calculer dynamiquement n, b0, b1, b2, a1 et a2 lorsquun des paramtres change Sortie 2 w w w Beaucoup de calcul quand mme pour un paramtre gnralement moins important que fc

19

SYNTHSE SOUSTRACTIVE

Onde riche

FILTRAGE IIR

Comment contrler les paramtres dynamiquement?

Enveloppe

Quoi prcalculer, quoi calculer en temps rel? Paramtre dynamique fc


Fixer Q Pente trop douce pour un Valeur de Butterworth (0,71) plat jusqu fc effet audio intressant Prcalculer b0, b1, b2, a1 et a2 dans un contexte de IIR Tables de 128 valeurs dans lintervalle [20, fs / musical synthtiseur 2] Hz Espaces exponentiellement Passe-bas b2 = (b1 0,5) = b0 Passe-haut b2 = (-b1 0,5) = b0 Passe-bande b1 = 0 Effets Prcalculer 128 valeurs de w (vite la tangente en temps rel) Prcalculer 128 valeurs de (1 / Q) Calculer dynamiquement n, b0, b1, b2, a1 et a2 lorsquun des paramtres change Sortie 2 w w w Beaucoup de calcul quand mme pour un paramtre gnralement moins important que fc

Paramtres dynamiques fc et Q

20

SYNTHSE SOUSTRACTIVE

Onde riche

FILTRAGE IIR
fc

Enveloppe

IIR

Effets

21

Paramtres tellement modifis souvent quils ont des accs physiques Sortie privilgis sur la plupart des synthtiseurs

SYNTHSE SOUSTRACTIVE

Onde riche

SORTIE
Mixe

Enveloppe vite le dbordement Dcalage de 3 positions utilis pour 8 canaux IIR

Division de laddition dondes pour lintervalle de 16 bits

Frquence dchantillonnage fixe

Boucle principale calcul du prochain chantillon selon les dernires notes demandes par MIDI Compteur matriel fix la frquence fs (ici 32 kHz 3 125 instructions par chantillon) Effets
Interruption qui met en sortie le dernier chantillon calcul MIDI 31 250 b/s, 10 b/jeton, 3 jetons/message 1 chantillon (1 / 32 000) s Total environ 1 ms

Latence dlai MIDI + 1 chantillon


Sortie

22

SYNTHSE SOUSTRACTIVE

DMONSTRATION
8 canaux
Enveloppes indpendantes Ondes

Carre, triangle, dents de scie, bruit blanc Mixe vers IIR passe-bas (2ime ordre)
Paramtres

Type donde canal MIDI fc du filtre IIR Temps dattaque, de chute et de retombe (enveloppe) Niveau du maintien (enveloppe) Portamento (8 niveaux/demi-ton)

23

SYNTHSE SOUSTRACTIVE AVEC TABLE DONDE


Accumulateur de phase
Tables de demi-ondes plutt que de calculer lchantillon partir de laccumulateur de phase Autre demi-onde la premire ngative et lue dans lautre sens Permet des ondes plus complexes (enregistre) sans augmenter le nombre de calculs Occupe plus despace en ROM Mmes tapes que la synthse DDS

IIR, enveloppe, effets, sortie

24

SYNTHSE AUDIO SUR SYSTME EMBARQU AVEC FPGA

SYNTHSE FM

25

SYNTHSE FM

PRINCIPE
Porteuse Modulation cos 2 +

= cos 2

cos 2 + cos 2
26

SYNTHSE FM

PRINCIPE
cos 2 + cos 2

Dtermine par la note joue


Enveloppe ou indice de modulation

Dtermine par un ratio par rapport fc

27

SYNTHSE FM

SAVEURS
Basse frquence de modulation
Vibrato Haute frquence de modulation

Son complexe Plusieurs harmoniques


Selon le ratio C:M (expliqu plus tard) Selon lindice de modulation

SYNTHSE FM

EXEMPLE
Porteuse 10 Hz Modulation 2 Hz, indice 5

29

SYNTHSE FM

EXEMPLE
Porteuse 10 Hz Modulation 20 Hz, indice 1

30

SYNTHSE FM

BANDES LATRALES
Rapport C:M
C frquence de la porteuse M frquence de la modulation Bandes latrales (harmoniques) > fondamentale

C + M, C + 2M, C + 3M, C + 4M, Bandes latrales basses < fondamentale


C M, C 2M, Si la frquence est ngative
Prendre la valeur absolue et inverser la phase

Porteuse fondamentale M >= 2C ou C:M = 1:1 Ratios harmoniques forme 1:N Ratios intressants 1:1, 1:2, 4:9, 3:7, 2:5, 2:9, 1: (inharmonique)

31

SYNTHSE FM

BANDES LATRALES

32

SYNTHSE FM

BANDES LATRALES

33

SYNTHSE FM

IMPLMENTATION
Table de 65 536 valeurs dune priode de sinus
Virgule fixe Q1.31 sign Accumulateurs de phase

fc de base fixe par la note fm fixe par un ratio C:M


Ratio paramtrable en temps rel par des interrupteurs sur la carte de dveloppement 1 15 (4 interrupteurs) pour C et M Valeur donne aussi grce la table de sinus Indice de modulation paramtrable en temps rel par contrle MIDI

Modulation

34

SYNTHSE FM

IMPLMENTATION
Modulation de phase en cours prise dans la table de sinus

chantillon de sinus pris dans la table

Modification de laccumulateur de phase en cours de la porteuse (modifie la frquence indirectement)

Amplitude de modulation paramtrable

35

SYNTHSE AUDIO SUR SYSTME EMBARQU AVEC FPGA

CONCLUSION

36

SYNTHSE SOUSTRACTIVE

Mise en forme de bruit


Diminue le bruit de quantification Oscillateurs trs lents (LFO)

Modifient certains paramtres automatiquement


fc du filtre IIR

Ondes sinusodale ou triangulaire Flanger, phaser Enveloppe ADSR pour fc du filtre IIR Permet un timbre de type pouet ou trompette Modulateur en anneau (ring modulator) Multiplication de londe synthtise par une onde sinusodale de frquence variable Basse frquence tremolo Haute frquence son de cloche

37

SYNTHSE FM
Yamaha DX7
Un peu de bruit dans le rendu audio Prcision arithmtique Table de sinus petite Enveloppe ADSR sur un paramtre Indice de modulation automatis Plusieurs modulateurs Modulateur rtroaction ngative

38

FPGA
Coprocesseurs
IIR
Augmenter lordre Plus de paramtres en temps rel Calcul de fonctions trigonomtriques pour remplacer les LUT si lespace est un facteur limitant

CORDIC

Gnrateurs DDS ddis

39

SYNTHSE AUDIO SUR SYSTME EMBARQU AVEC FPGA

REMERCIEMENT
FRANOIS-RAYMOND BOYER

40