KSPROPSETID_Synth

Kumpulan KSPROPSETID_Synth properti berisi properti yang bersifat global untuk konfigurasi simpul synth (KSNODETYPE_SYNTHESIZER).

Item properti dalam set ini ditentukan oleh nilai enumerasi KSPROPERTY_SYNTH, seperti yang didefinisikan dalam file header Dmusprop.h.

Tabel Ringkasan Penggunaan

Properti KSPROPERTY_SYNTH_CAPS digunakan oleh sistem untuk menentukan kemampuan synthesizer.

Dapatkan Set Target Jenis deskriptor properti Jenis nilai properti

Ya

Tidak

Menyematkan

KSNODEPROPERTY

SYNTHCAPS

Nilai properti (data operasi) adalah struktur jenis SYNTHCAPS dan menentukan kemampuan synthesizer. Kemampuannya meliputi:

  • Jumlah memori sampel yang tersedia

  • Jumlah maksimum grup saluran

  • Jumlah suara maksimum

  • Jumlah maksimum saluran audio

  • Efek penyajian

Untuk informasi selengkapnya, lihat SYNTHCAPS.

Nilai Yang Dikembalikan

Permintaan properti KSPROPERTY_SYNTH_CAPS mengembalikan STATUS_SUCCESS untuk menunjukkan bahwa permintaan telah berhasil diselesaikan. Jika tidak, permintaan mengembalikan kode status kesalahan yang sesuai.

Untuk informasi selengkapnya tentang kemampuan synthesizer, lihat metode IDirectMusicPort::GetCaps dan struktur DMUS_PORTCAPS dalam dokumentasi Microsoft Windows SDK.

Tabel Ringkasan Penggunaan

Properti KSPROPERTY_SYNTH_CHANNELGROUPS digunakan oleh sistem untuk mengatur atau mendapatkan jumlah grup saluran aktif pada instans pin. Grup saluran diberi nomor, dimulai dengan nol, pada setiap instans pin.

Dapatkan Set Target Jenis deskriptor properti Jenis nilai properti

Ya

Ya

Menyematkan

KSNODEPROPERTY

ULONG

Nilai properti (data operasi) berjenis ULONG dan menentukan berapa banyak grup saluran yang didukung pin. Jika pin mendukung grup saluran n , grup saluran pada pin diberi nomor dari 0 hingga n-1.

Nilai Yang Dikembalikan

Permintaan properti KSPROPERTY_SYNTH_CAPS mengembalikan STATUS_SUCCESS untuk menunjukkan bahwa permintaan telah berhasil diselesaikan. Jika tidak, permintaan mengembalikan kode status kesalahan yang sesuai. Tabel berikut ini memperlihatkan beberapa kemungkinan kode kegagalan.

Kode Status Makna

STATUS_BUFFER_TOO_SMALL

Buffer terlalu kecil untuk menyelesaikan operasi.

STATUS_UNSUCCESSFUL

Operasi tidak berhasil diselesaikan.

Untuk informasi selengkapnya tentang grup saluran, lihat deskripsi metode IDirectMusicPort::GetNumChannelGroups dan metode IDirectMusicPort::SetNumChannelGroups dalam dokumentasi Microsoft Windows SDK.

Tabel Ringkasan Penggunaan

Properti KSPROPERTY_SYNTH_LATENCYCLOCK digunakan untuk mengkueri driver miniport untuk waktu jam latensi aliran saat ini, yang selalu lebih besar dari waktu jam master.

Dapatkan Set Target Jenis deskriptor properti Jenis nilai properti

Ya

Tidak

Menyematkan

KSNODEPROPERTY

ULONGLONG

Nilai properti (data operasi) berjenis ULONGLONG dan mewakili waktu latensi saat ini dari synthesizer. Kali ini ditentukan relatif terhadap jam master dan dinyatakan dalam unit 100 nanodetik.

Nilai Yang Dikembalikan

Permintaan properti KSPROPERTY_SYNTH_LATENCYCLOCK mengembalikan STATUS_SUCCESS untuk menunjukkan bahwa permintaan telah berhasil diselesaikan. Jika tidak, permintaan mengembalikan kode status kesalahan yang sesuai. Tabel berikut ini memperlihatkan beberapa kemungkinan kode kegagalan.

Kode Status Makna

STATUS_BUFFER_TOO_SMALL

Buffer terlalu kecil untuk menyelesaikan operasi.

STATUS_UNSUCCESSFUL

Operasi tidak berhasil diselesaikan.

STATUS_INVALID_DEVICE_REQUEST

Operasi ini tidak valid untuk perangkat ini.

Jam latensi biasanya digunakan untuk menyinkronkan aliran output audio di antara beberapa perangkat.

Permintaan get-property KSPROPERTY_SYNTH_LATENCYCLOCK harus mengembalikan waktu jam latensi yang sama dengan waktu jam master saat ini, ditambah latensi minimum yang dijamin dari filter audio yang dilewati aliran. Program aplikasi yang menjadwalkan data audio yang akan diputar lebih awal dari risiko waktu jam latensi saat ini memiliki data yang diputar terlambat.

Untuk informasi selengkapnya tentang jam latensi, lihat yang berikut ini:

  • Diskusi tentang properti KSPROPERTY_SYNTH_LATENCYCLOCK di Jam Latensi.

  • Deskripsi metode IDirectMusicPort::GetLatencyClock dan IReferenceClock::GetTime dalam dokumentasi Microsoft Windows SDK.

Tabel Ringkasan Penggunaan

Properti KSPROPERTY_SYNTH_PORTPARAMETERS digunakan untuk mendapatkan parameter konfigurasi untuk port DirectMusic, yang merupakan istilah DirectMusic untuk perangkat yang mengirim atau menerima data musik. (Dalam terminologi KS, port DirectMusic tidak sesuai dengan driver port DMus. Ini sesuai dengan render atau menangkap pin pada filter DirectMusic.)

Dapatkan Set Target Jenis deskriptor properti Jenis nilai properti

Ya

Tidak

Menyematkan

KSNODEPROPERTY + SYNTH_PORTPARAMS

SYNTH_PORTPARAMS

Deskriptor properti (data instans) terdiri dari struktur KSNODEPROPERTY yang segera diikuti oleh struktur SYNTH_PORTPARAMS. Sebelum mengirim permintaan properti, klien menentukan nilai parameter yang diminta dengan menulisnya ke dalam struktur SYNTH_PORTPARAMS.

Nilai properti (data operasi) juga berjenis SYNTH_PORTPARAMS. Driver miniport memuat struktur ini dengan nilai parameter yang benar-benar digunakan untuk mengonfigurasi port.

Nilai Yang Dikembalikan

Jika driver miniport berhasil mengonfigurasi port DirectMusic persis seperti yang ditentukan oleh pemanggil, ia mengembalikan kode STATUS_SUCCESS. Jika tidak, kode kesalahan akan menampilkan kode kesalahan yang sesuai. Tabel berikut menunjukkan beberapa kemungkinan kode status kesalahan.

Kode Status Makna

STATUS_NOT_ALL_ASSIGNED

Operasi berhasil, tetapi driver miniport harus memodifikasi satu atau beberapa nilai parameter yang ditandai pemanggil sebagai valid dalam nilai properti.

STATUS_UNSUCCESSFUL

Operasi tidak berhasil diselesaikan.

Ini adalah item properti DirectMusic yang paling rumit untuk ditangani. Meskipun properti ini hanya mendukung permintaan get, permintaan get juga mengatur parameter port. Port melewati struktur SYNTH_PORTPARAMS sebagai pendeskripsi properti untuk permintaan properti. Buffer nilai properti menyertai permintaan properti, tetapi karena ini adalah permintaan get, buffer hanya digunakan untuk mengambil informasi dari driver miniport.

Driver miniport harus terlebih dahulu menyalin struktur SYNTH_PORTPARAMS dari deskriptor properti ke buffer nilai properti. Selanjutnya, ia harus memeriksa untuk melihat apakah ia mampu mendukung semua nilai parameter yang diminta pemanggil (ditandai sebagai valid). Jika driver miniport tidak dapat mendukung satu atau beberapa nilai parameter yang diminta, driver miniport harus menimpa (dalam struktur SYNTH_PORTPARAMS dalam buffer nilai properti) nilai yang diminta untuk parameter tertentu ini dengan nilai yang dapat didukungnya.

Jika driver miniport tidak membuat perubahan pada SYNTH_PORTPARAMS pemanggil, pemanggil harus mendapatkan kembali nilai properti yang sama persis dengan parameter dalam deskriptor properti yang awalnya dikirim pemanggil ke driver miniport.

Menurut konvensi, driver juga mengisi nilai untuk parameter yang tidak memiliki bit terkait yang diatur dalam anggota dwValidParams dari SYNTH_PORTPARAMS. Ini memungkinkan pemanggil untuk melihat nilai default apa yang digunakan driver miniport untuk parameter ini. Driver miniport menghasilkan nilai parameter aktual yang digunakannya untuk membangun perangkat antarmuka gelombang.

Handler KSPROPERTY_SYNTH_PORTPARAMETERS driver miniport harus siap untuk menangani permintaan perubahan laju sampel dengan benar.

Tabel Ringkasan Penggunaan

Properti KSPROPERTY_SYNTH_RUNNINGSTATS digunakan untuk mengkueri driver miniport untuk statistik performa synthesizer.

Dapatkan Set Target Jenis deskriptor properti Jenis nilai properti

Ya

Tidak

Menyematkan

KSNODEPROPERTY

SYNTH_STATS

Nilai properti (data operasi) adalah struktur jenis SYNTH_STATS. Handler properti driver miniport menulis statistik berikut ke dalam struktur ini:

  • Jumlah rata-rata suara yang diputar

  • Penggunaan CPU

  • Jumlah catatan yang hilang

  • Jumlah memori bebas

  • Tingkat volume puncak

Nilai Yang Dikembalikan

Permintaan properti KSPROPERTY_SYNTH_RUNNINGSTATS mengembalikan STATUS_SUCCESS untuk menunjukkan bahwa permintaan telah berhasil diselesaikan. Jika tidak, permintaan mengembalikan kode status kesalahan yang sesuai. Tabel berikut ini memperlihatkan beberapa kemungkinan kode kesalahan.

Kode Status Makna

STATUS_BUFFER_TOO_SMALL

Buffer terlalu kecil untuk menyelesaikan operasi.

STATUS_UNSUCCESSFUL

Operasi tidak berhasil diselesaikan.

STATUS_INVALID_DEVICE_REQUEST

Operasi ini tidak valid untuk perangkat ini.

Statistik performa synthesizer terus diperbarui saat perangkat tetap dalam status KSSTATE_RUN. Setiap kali perangkat memasuki status ini, perangkat mengatur ulang statistik, yang nol nilai kumulatif seperti volume puncak dan jumlah catatan yang hilang.

Untuk informasi tambahan, lihat deskripsi metode IDirectMusicPort::GetRunningStats dan struktur DMUS_SYNTHSTATS dalam dokumentasi Microsoft Windows SDK.

Tabel Ringkasan Penggunaan

Properti KSPROPERTY_SYNTH_VOICEPRIORITY menentukan prioritas suara tertentu dalam synthesizer MIDI yang harus dimiliki ketika driver miniport perlu menabrak suara dari cache suaranya.

Dapatkan Set Target Jenis deskriptor properti Jenis nilai properti

Ya

Ya

Menyematkan

KSNODEPROPERTY + SYNTHVOICEPRIORITY_INSTANCE

DWORD

Deskriptor properti (data instans) terdiri dari struktur KSNODEPROPERTY yang segera diikuti oleh struktur SYNTHVOICEPRIORITY_INSTANCE, yang menentukan grup saluran suara (set 16 saluran MIDI) dan nomor saluran (dalam grup).

Nilai properti (data operasi) adalah DWORD yang menentukan prioritas. Klien menggunakan permintaan set-property KSPROPERTY_SYNTH_VOICEPRIORITY untuk mengirim prioritas baru suara ke driver miniport, dan menggunakan permintaan get-property KSPROPERTY_SYNTH_VOICEPRIORITY untuk mengambil prioritas suara saat ini dari driver miniport.

Prioritas Suara

Prioritas grup saluran berikut ditentukan dalam file header Dmusprop.h:

  DAUD_CRITICAL_VOICE_PRIORITY
  DAUD_HIGH_VOICE_PRIORITY
  DAUD_STANDARD_VOICE_PRIORITY
  DAUD_LOW_VOICE_PRIORITY
  DAUD_PERSIST_VOICE_PRIORITY

Daftar sebelumnya diurutkan dengan prioritas tertinggi di bagian atas daftar dan terendah di bagian bawah. Prioritas ini adalah ORed dengan offset prioritas saluran untuk sampai pada prioritas suara untuk setiap saluran dalam grup saluran. Prioritas yang dihasilkan diteruskan dalam permintaan get dan set-property.

Nilai prioritas grup saluran sebelumnya besar dibandingkan dengan offset prioritas saluran. Hasilnya adalah bahwa mengubah prioritas grup saluran menaikkan atau menurunkan prioritas seluruh grup saluran relatif terhadap grup saluran lain tanpa mengubah prioritas relatif saluran dalam grup saluran.

Prioritas Default

Ketika driver miniport synthesizer dibuat, ia menetapkan prioritas default untuk setiap suaranya. Default didefinisikan sebagai berikut:

  • Secara default, prioritas sama di seluruh grup saluran. Ini berarti, misalnya, saluran 5 di grup saluran 1 memiliki prioritas yang sama dengan saluran 5 di grup saluran 2.

  • Sesuai dengan spesifikasi DLS Level-1, saluran 10 (saluran perkusi MIDI) memiliki prioritas tertinggi, diikuti oleh 1 hingga 9 dan 11 hingga 16.

File header Dmusprop.h menentukan offset prioritas berikut:

  DAUD_CHAN10_VOICE_PRIORITY_OFFSET
  DAUD_CHAN1_VOICE_PRIORITY_OFFSET
  DAUD_CHAN2_VOICE_PRIORITY_OFFSET
  DAUD_CHAN3_VOICE_PRIORITY_OFFSET
  DAUD_CHAN4_VOICE_PRIORITY_OFFSET
  DAUD_CHAN5_VOICE_PRIORITY_OFFSET
  DAUD_CHAN6_VOICE_PRIORITY_OFFSET
  DAUD_CHAN7_VOICE_PRIORITY_OFFSET
  DAUD_CHAN8_VOICE_PRIORITY_OFFSET
  DAUD_CHAN9_VOICE_PRIORITY_OFFSET
  DAUD_CHAN11_VOICE_PRIORITY_OFFSET
  DAUD_CHAN12_VOICE_PRIORITY_OFFSET
  DAUD_CHAN13_VOICE_PRIORITY_OFFSET
  DAUD_CHAN14_VOICE_PRIORITY_OFFSET
  DAUD_CHAN15_VOICE_PRIORITY_OFFSET
  DAUD_CHAN16_VOICE_PRIORITY_OFFSET

Daftar offset sebelumnya diurutkan dengan prioritas tertinggi di bagian atas daftar. File header Dmusprop.h juga menentukan prioritas default saluran di setiap grup saluran dengan bitwise ORing masing-masing offset ini dengan DAUD_STANDARD_VOICE_PRIORITY. Misalnya, definisi berikut memberikan prioritas default untuk saluran 1 di setiap grup saluran:

  #define DAUD_CHAN1_DEF_VOICE_PRIORITY \
    (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN1_VOICE_PRIORITY_OFFSET)

Nilai Yang Dikembalikan

Permintaan properti KSPROPERTY_SYNTH_VOICEPRIORITY mengembalikan STATUS_SUCCESS untuk menunjukkan bahwa permintaan telah berhasil diselesaikan. Jika tidak, permintaan mengembalikan kode status kesalahan yang sesuai. Tabel berikut ini memperlihatkan beberapa kemungkinan kode kesalahan.

Kode Status Makna

STATUS_BUFFER_TOO_SMALL

Buffer terlalu kecil untuk menyelesaikan operasi.

STATUS_UNSUCCESSFUL

Operasi tidak berhasil diselesaikan.

Untuk informasi selengkapnya tentang prioritas suara, lihat deskripsi metode IDirectMusicPort::GetChannelPriority dan IDirectMusicPort::SetChannelPriority dalam dokumentasi Microsoft Windows SDK.

Tabel Ringkasan Penggunaan

Properti KSPROPERTY_SYNTH_VOLUME mendapatkan atau mengatur tingkat volume perangkat synthesizer.

Dapatkan Set Target Jenis deskriptor properti Jenis nilai properti

Ya

Ya

Menyematkan

KSPROPERTY

PANJANG

Nilai properti (data operasi) berjenis LONG dan menentukan tingkat volume perangkat synthesizer. Pengaturan volume ditentukan dalam satuan desibel 1/100. Driver miniport harus mengubah volumenya atau melaporkan volumenya, tergantung pada apakah permintaan akan mendapatkan atau mengatur properti.

Nilai Yang Dikembalikan

Permintaan properti KSPROPERTY_SYNTH_VOLUME mengembalikan STATUS_SUCCESS untuk menunjukkan bahwa permintaan telah berhasil diselesaikan. Jika tidak, permintaan mengembalikan kode status kesalahan yang sesuai. Tabel berikut ini memperlihatkan beberapa kemungkinan kode kesalahan.

Kode Status Makna

STATUS_BUFFER_TOO_SMALL

Buffer terlalu kecil untuk menyelesaikan operasi.

STATUS_UNSUCCESSFUL

Operasi tidak berhasil diselesaikan.

Tabel Ringkasan Penggunaan

Properti KSPROPERTY_SYNTH_VOLUMEBOOST menentukan jumlah di mana volume perangkat synthesizer didorong.

Dapatkan Set Target Jenis deskriptor properti Jenis nilai properti

Ya

Ya

Menyematkan

KSNODEPROPERTY

PANJANG

Nilai properti (data operasi) berjenis LONG dan ditentukan oleh berapa banyak untuk meningkatkan sinyal audio setelah tahap campuran. Ini adalah jumlah volume untuk ditambahkan ke output akhir dari synthesizer setelah semua artikulasi dan pencampuran suara selesai. Jumlah peningkatan volume ditentukan dalam desibel 1/100. Nilai ini bisa positif atau negatif.

Nilai Yang Dikembalikan

Permintaan properti KSPROPERTY_SYNTH_VOLUMEBOOST mengembalikan STATUS_SUCCESS untuk menunjukkan bahwa permintaan telah berhasil diselesaikan. Jika tidak, permintaan mengembalikan kode status kesalahan yang sesuai. Tabel berikut ini memperlihatkan beberapa kemungkinan kode kesalahan.

Kode Status Makna

STATUS_BUFFER_TOO_SMALL

Buffer terlalu kecil untuk menyelesaikan operasi.

STATUS_UNSUCCESSFUL

Operasi tidak berhasil diselesaikan.

Tidak ada peningkatan lain yang harus ditambahkan ke output. Synthesizer harus mengikuti konvensi DLS Level-1 yang ketat untuk artikulasi.

Properti ini digunakan untuk menyamakan volume synthesizer dengan output audio lain dalam sistem, dan meningkatkan jumlah karena itu harus ditafsirkan secara konsisten di semua perangkat.