Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die DMus Miniport-Treiberschnittstelle basiert auf der MIDI Miniport-Treiberschnittstelle, fügt aber die folgenden Erweiterungen hinzu, um erweiterte Synthesizer zu unterstützen:
DLS lädt mehr als 16 Kanäle pro Instanz herunter.
Sequenzierung von Notizereignissen in der Hardware
Die DMus miniport-Treiberschnittstelle unterscheidet sich auf verschiedene Weise von der MIDI Miniport-Treiberschnittstelle. Ein DMus miniport-Treiber implementiert die Schnittstelle IMiniportDMus im Gegensatz zu IMiniportMidi. Diese Schnittstelle ähnelt IMiniportMidi, aber die IMiniportDMus::NewStream-Methode erstellt eine IMXF-Schnittstelle (MIDI-Transformationsfilter) und stellt eine Verbindung mit einer IAllocatorMXF-Schnittstelle im DMus-Porttreiber her, im Gegensatz zur Implementierung einer IMiniportMidiStream-Schnittstelle . IAllocatorMXF und IMXF umschließen die standardmäßigen GetMessage - und PutMessage-Aufrufe (siehe IAllocatorMXF::GetMessage und IMXF::P utMessage). Diese Aufrufe behandeln verpackte Ereignisse statt mit unformatierten MIDI-Bytes.
Der DMus-Miniporttreiber für einen Synthesizer kann einige oder alle DirectMusic-Eigenschaften implementieren. Diese Eigenschaften ermöglichen es dem System, DLS-Downloads und Kanalzuweisungen für das Gerät zu verwalten. Die Headerdatei "dmusprop.h" definiert DirectMusic-spezifische Eigenschaftselemente. Eine Liste dieser Eigenschaften finden Sie unter KSPROPSETID_Synth und KSPROPSETID_Synth_Dls.
Von DMus-Miniport-Treibern wird erwartet, dass sie die Erstellung mehrerer Pin-Instanzen ermöglichen. Jede Pininstanz fungiert als ein virtueller Synthesizer und enthält eine Reihe von Kanälen und DLS-Downloads unabhängig von den anderen Pininstanzen.
Einige der in Audio-Treiber-Eigenschaftsgruppen beschriebenen Synth-Eigenschaften wirken auf eine Pininstanz, andere sind global. Um die globalen Eigenschaften zu verarbeiten, muss der Synthesizer über einen Synthesizerknoten in seiner Topologie verfügen. Die Beschreibung jedes Eigenschaftselements gibt an, ob das Element an den Synthesizerknoten oder an eine Pininstanz gesendet wird. Für jedes Hardwarestück, das die Synthese unterstützt, gibt es ein Porttreiberobjekt und ein Miniporttreiberobjekt, wie in der folgenden Abbildung dargestellt.
Das Porttreiberobjekt macht eine Instanz einer IPortDMus-Schnittstelle verfügbar, die vom Miniport-Treiberobjekt gehalten wird. Der Miniporttreiber exportiert eine Instanz einer IMiniportDMus-Schnittstelle , die vom Porttreiber gehalten wird. Für jeden instanziierten Pin fordert der Porttreiber eine übereinstimmende IMXF-Schnittstelle an. Die Kommunikation zwischen dem System und dieser Instanz ist die Kombination von Eigenschaftsanforderungen, die an den Pin gerichtet sind, und Ereignissen, die an oder von der IMXF-Datenstromschnittstelle fließen.
Beim Erstellen müssen zwei Objekte an den Miniporttreiber übergeben werden:
Uhr
Allocator-Objekt
Die Uhr ist für Render- und Aufnahmevorgänge sehr wichtig. Der Miniporttreiber muss Notizen zu den angegebenen Zeiten rendern; Wenn der Miniport-Treiber in MIDI-Daten liest, muss er die Zeit kennen, damit es das Kernelereignis zeitstempeln kann. Weitere Informationen finden Sie unter Latency Clocks.
Das Allocator-Objekt , das über eine IAllocatorMXF-Schnittstelle verfügt, wird als Speicherpool zum Wiederverwenden des Arbeitsspeichers verwendet. Alle MIDI-Nachrichten im System werden aus diesem gemeinsamen Pool zugeordnet. Das Allocator-Objekt sollte verwendet werden, um die einzelnen Nachrichten zu erstellen oder zu zerstören.
Dieser Abschnitt umfasst:
Anfragen zu Miniport-Treibereigenschaft-Elementen