240 likes | 341 Views
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
E N D
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 bas-niveau) • - 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)