L`Audio sur PC

Transcription

L`Audio sur PC
L’Audio sur PC
• Comparaison Numérique vs Analogique
• Comparaison Audio sur PC vs Hardware
dédié (DSP)
• Rmq: beaucoup de simulitudes avec la
vidéo, mais débit vidéo bcp + élevé!
Dsp: les +
• + optimisé, « puissant » pour le traitement
de signal
• + travail échantillon par éch => latence = 1
échantillon
• + produit final embarqué, simple , pas
cher, …
DSP: les • - Difficultés de développement
(connaissance architecture, langage basniveau)
• - Code peu réutilisable
• - Entrées / sorties limitées
• - Cher pour un petit développeur (pas
possible à la maison!)
• - Communication avec d’autres soft et
avec l’utilisateur (clavier, écran,…)
PC: les +
• + On en a 1 chez soi!
• + Langage de programmation haut-niveau
• + Communication autres applications soft /
utilisateur
• + Code réutilisable (plugins)
• + Sortie carte son: dével applications
indépendantes du matériel grâce aux drivers
• + Disque dur (lecture et ecriture) de fichiers,
stockés sous différents formats (waves, mp3, …)
PC: les • - pas embarqué
• - latence (on travaille sur des blocs d’éch.)
• - OS pas temps réel
Les drivers: Introduction
• Qu’est-ce qu’un driver (pilote)
• Présentation des drivers les plus courants
– (MME)
– DirectSound
– ASIO
– Linux: OSS et ALSA
Présentation
• On entend par driver un ensemble d’APIs
(application programming interfaces)
permettant l’accès à un composant
matériel sans devoir écrire du code
spécifique à ce matériel.
• L’intérêt majeur d’un driver est de pouvoir
utiliser un même et unique code pour tout
matériel supportant ce driver.
Présentation (suite)
• Le terme driver est utilisé à tort car
derrière les APIs, il existe un vrai driver
fourni par le fabriquant du matériel mais ce
terme, que nous utiliserons dans la suite,
est le plus courant.
• L’API accède au module du vrai driver
chargé par le système au démarrage.
• Certaines fonctionnalités peuvent ne pas
être prises en charge par le driver
Drivers les plus courants
•
•
•
•
•
(MME)
DirectSound
ASIO
OSS
ALSA
MME
• MultiMedia Extension (Windows)
• Utilisé depuis Windows 3.0. Fait partie
intégrante de l’O.S.
DirectSound
• Composant de DirectX (Windows)
• Fait partie intégrante de l’O.S. Windows
• Plus simple, plus efficace et de latence
plus faible que MME.
• Possède également des fonctions 3D
ASIO
• Développé par Steinberg
• Audio pro, très faible latence
LINUX
• OSS
• ALSA
Comment ça marche:
Direct Sound
• 1 buffer pour entrée (playback) et/ou 1 buffer
pour sortie (capture)
• Le buffer est subdivisé en partitions
• Dès que la « tête » de lecture (resp. écriture)
passe d’une partition à l’autre, un événement est
généré pour signaler qu’un nouveau bloc
d’échantillons peut être écrit (resp. lu)
• Taille du buffer et nombres de partitions
paramétrable
Les fonctions « callback »
• Un pointeur de fonctions est donné à
chaque thread
• Avantage: on ne doit pas reprogrammer
les fonctions exécutées dans les threads
• Permet de créer des plugins
Les plugins
• Code compilé en shared et chargé
dynamiquement
• Permet de faire évoluer une application de
base (host) (pour les effets, les
entrées/sorties)
• Plugin standard: VST
Fichiers wave
• Header
• Échantillons entrelacés
Autres formats de fichiers:
• MP3, Ogg Vorbis, etc.: on peut les ajouter
à une application facilement (par ex. via
plugins)
Présentation du travail
• 1 application
• Entrée/sortie steréo
• 4 combinaisons entrée/sortie possible
(fichier wave ou dsound)
• Dsound configurable (taille buffer et
nombre de partitions) pour entrée et sortie
(lantence!)
• Plugin de traitement
Exemple de plugin:
• Voir code
• Compilation d’un plugin
Outils à disposition
• Application
• Plugin exemple
• Pas obligatoire: Compilateur gratuit,
librairies nécessaires, Makefile
Remarques pour le travail
• Configuration entrée/sortie via fichier
• Pas de messages d’erreur, peut donc planter si
mauvaise opération
• Taille bloc d’entrée doit être identique en entrée
et sortie
• Réglages controleur de volume
• 16 bits, 44kHZ, stereo
• Testé sur plusieurs pcs, mais toujours en
développement (entrée sature sur un pc)
• Possibilité d’une interface graphique
Remarques travail (suite)
• Nom du fichier plugin et du module à
exporter: modifier le prefixe
« bypass »(voir exemple)
• Echantillons dans le plugin au format Float
normalisés entre –1 et 1
Vocabulaire
• blocksize= nombre de frames d’une
partition.
• 1 Frame= 1 couple échantillon (1
échantillon par canal)