共用方式為


語音配置

大部分包含合成器迷你埠驅動程式的介面卡驅動程式也都包含 DirectSound 硬體加速。 這會顯示合成器語音與硬體加速 DirectSound 緩衝區之間的語音配置問題。

DirectMusic synths--硬體與軟體都應該支援多個實例,以最大化並行用戶端的數目。 合成器可能會想要以靜態方式配置語音給合成器,但應該考慮所有可用的合成實例,以從一般動態語音集區繪製。 然後,每個實例都會將可用的語音數目報告為集區中可用的總數。

以這種方式實作時,即使是具有有限實體語音的硬體合成,也可以支援許多合成實例。 即時的 STATS 呼叫會通知用戶端每個實例目前使用的語音數目。 如果動態集區已耗盡,且 synth 實例需要新的語音,則該合成實例必須實作語音竊取配置,以釋放該實例內的語音。

下列配置配置是以合成器所使用的語音比 DirectSound 緩衝區更容易共用的概念,因為驅動程式可以控制哪些資料會進入哪些語音,而且可以決定 DLS 層級 1 規格中所述的語音竊取 () 。

迷你埠驅動程式可用的所有語音 (硬體、軟體或硬體和軟體) 組合分成兩個集區。 第一個集區免費集區是由任何位置未認可的語音所組成。 第二個集區動態集區是由合成器實例認可的語音所組成。 合成器實例目前可能未使用這些語音。 動態集區的大小為任何合成器實例所要求的語音數目上限,受限於可用集區的目前內容。 DirectSound 緩衝區會在配置時從可用集區中移除,並在解除配置時傳回。

下表包含說明實際配置之語音配置的範例序列。

時間 要求 免費集區 動態集區 迷你埠驅動程式動作

T0

啟動電源

64

0

初始 化。

T1

DSound (4)

60

0

以靜態方式將四個語音配置給 DirectSound 緩衝區。

T2

Synth (32)

28

32

將動態集區增加至 32 個語音。

T3

Synth (24)

28

32

不進行動作。 動態集區中已經有 24 個以上的語音。

T4

DSound (24)

4

32

以靜態方式將 24 個語音配置給 DirectSound 緩衝區。

T5

Synth (48)

0

36

將動態集區增加至 36 個語音。 (建立埠的方法會傳回S_FALSE並設定DMUS_PORTPARAMS。dwVoices = 36.)

T6

DSound (10)

0

36

失敗。 免費集區中沒有語音。

T7

DSound (-5)

5

36

免費五個語音。 請注意,這些不會回到動態集區,即使 T5) 時的最後一個要求 (超過授與。

請注意,DirectSound 緩衝區實際上會逐一配置,並群組在資料表中以供可讀性。

在建立合成器釘選實例之後,就不應該根據它配置任何語音。 建立之後不久,就會收到 KSPROPERTY_SYNTH_PORTPARAMETERS 屬性專案。 這個屬性專案會指出要與此實例相關聯的語音數目,以及其他專案。 此專案也會讓迷你埠驅動程式有機會回報動態集區的實際新大小,以防無法配置所有要求的語音。