MIDI Transport
Le pilote de port DMus est impliqué sur les côtés avant et arrière du travail de synthétiseur du pilote miniport DMus. Le pilote de port entre un flux MIDI qui se compose de données MIDI horodatées et achemine le flux vers le séquenceur. Le séquenceur supprime les horodatages et transmet les messages MIDI bruts au pilote miniport lorsque leurs horodatages sont à échéance. (Les données DLS passent directement par le pilote de port jusqu’au pilote miniport sans prétraitement.)
Lorsque le flux d’entrée MIDI du pilote miniport DMus est converti en données d’ondes, sa sortie est gérée par le récepteur d’ondes (également appelé « récepteur de synthèse » ou « récepteur de rendu »).
Le pilote de port DMus implémente un filtre de diffusion en continu du noyau avec une broche d’entrée qui accepte les données DirectMusic du composant en mode utilisateur DirectMusic, dmusic.dll. Le pilote de port a également une broche de sortie d’onde qui émet le flux audio synthétisé. Le récepteur d’ondes gère cette broche et indique au synthé où écrire ses données en mémoire. Cette disposition isole le synthé des détails de la diffusion en continu du noyau. Votre pilote miniport DMus doit uniquement traiter les détails de la synthèse des données d’onde à partir du flux MIDI d’entrée. Le pilote de port envoie les données d’ondes au système, et le graphe de filtre de SysAudio connecte les filtres pour que tout se passe correctement. Comme le montre le diagramme suivant, les données MIDI entrent dans le pilote de port DMus et, après le séquencement, sont passées au pilote miniport DMus.
Le pilote miniport convertit les données MIDI au format d’onde, qui est rendu dans une mémoire tampon désignée par une autre partie du pilote de port : le récepteur d’ondes. Ensuite, au lieu d’aller à DirectSound comme en mode utilisateur, la sortie d’onde est envoyée au matériel audio via le pilote système KMixer. DirectSound n’est en fait qu’une API qui expose KMixer, et l’accélération DirectSound se compose de fonctions mixer accélérées dans le matériel au lieu d’émuler dans le logiciel par KMixer.
Le pilote système SysAudio, qui génère le graphique de filtre audio, connecte le pilote de port DMus à un élément matériel. La partie récepteur d’ondes du pilote de port remet les données par le biais de sa broche de sortie de vague, que SysAudio peut connecter au périphérique matériel. Il extrait les données de vague du pilote miniport DMus (sans tenir compte du fait qu’il s’agit d’un synthé matériel ou logiciel) et gère tous les problèmes de minutage. Par rapport au mode utilisateur, le pilote miniport est analogue au synthé, tandis que le récepteur d’ondes ne fait qu’une partie du pilote de port.
Si un pilote miniport DMus peut fournir sa sortie à l’hôte, il expose une broche d’ondes avec une direction des données de KSPIN_DATAFLOW_OUT (voir KSPIN), que SysAudio reconnaît et connecte à KMixer.
Pour plus d’informations sur le récepteur d’ondes, consultez Un récepteur de vagues pour Kernel-Mode synthétiseurs logiciels.
Cette section comprend également les éléments suivants :