Transportasi MIDI

Driver port DMus terlibat di sisi depan dan belakang dari pekerjaan synthesizer driver miniport DMus. Driver port memasukkan aliran MIDI yang terdiri dari data MIDI bertanda waktu dan merutekan aliran ke pengurut. Pengurut menghapus stempel waktu dan meneruskan pesan MIDI mentah ke driver miniport ketika tanda waktu mereka jatuh tempo. (Data DLS melewati driver port ke driver miniport tanpa praproses.)

Ketika aliran input MIDI driver DMus miniport dikonversi ke data gelombang, outputnya dikelola oleh sink gelombang (juga disebut "sink sintetis" atau "render sink").

Driver port DMus menerapkan filter streaming kernel dengan pin input yang menerima data DirectMusic dari komponen mode pengguna DirectMusic, dmusic.dll. Driver port juga memiliki pin output gelombang yang memancarkan aliran audio yang disintesis. Sink gelombang mengelola pin ini dan memberi tahu synth di mana dalam memori untuk menulis datanya. Pengaturan ini mengisolasi synth dari detail streaming kernel. Driver miniport DMus Anda hanya perlu menangani detail data gelombang sintesis dari aliran MIDI input. Driver port mengirimkan data gelombang ke sistem, dan grafik filter SysAudio menghubungkan filter untuk membuat semuanya mengalir dengan benar. Seperti yang ditunjukkan pada diagram berikut, data MIDI masuk ke driver port DMus dan, setelah pengurutan, diteruskan ke driver miniport DMus.

Diagram yang mengilustrasikan aliran data MIDI dan DLS melalui driver PortDMus.

Driver miniport mengonversi data MIDI ke format gelombang, yang dirender menjadi buffer yang ditunjuk oleh bagian lain dari driver port: wastafel gelombang. Kemudian, alih-alih keluar ke DirectSound seperti dalam mode pengguna, output gelombang masuk ke perangkat keras audio melalui driver sistem KMixer. DirectSound benar-benar hanya API yang mengekspos KMixer, dan akselerasi DirectSound terdiri dari fungsi mixer yang dipercepat dalam perangkat keras alih-alih ditiru dalam perangkat lunak oleh KMixer.

Driver sistem SysAudio, yang membangun grafik filter audio, menghubungkan driver port DMus ke perangkat keras. Bagian wastafel gelombang dari driver port menyerahkan data melalui pin peluasan gelombangnya, yang dapat disambungkan SysAudio ke perangkat keras. Ini menarik data gelombang dari driver miniport DMus (tanpa memperhatikan apakah itu perangkat keras atau perangkat lunak synth), dan menangani semua masalah waktu. Dibandingkan dengan mode pengguna, driver miniport dianalogikan dengan synth, sedangkan wastafel gelombang hanyalah bagian dari driver port.

Jika driver miniport DMus dapat memberikan outputnya kembali ke host, ia mengekspos pin gelombang dengan arah data KSPIN_DATAFLOW_OUT (lihat KSPIN), yang dikenali dan disambungkan SysAudio ke KMixer.

Untuk informasi selengkapnya tentang sink gelombang, lihat Sink Gelombang untuk Kernel-Mode Software Synthesizer.

Bagian ini juga mencakup:

Antarmuka IMXF

Pengalokasi