Требования к Node-Ordering DirectSound

Контакт двухмерного или трехмерного микшера DirectSound должен иметь цепочку узлов, содержащую следующую последовательность узлов:

Узлы в этом списке отображаются в том порядке, в котором они встречаются при потоковой передаче данных в контакт. Другие узлы могут чередуться между этими узлами, не вызывая проблем, при условии, что указанный выше порядок сохраняется.

Для двухD-закрепления требуются все узлы из предыдущего списка, за исключением трехмерного узла, который является необязательным. Для трехмерного контакта требуются все узлы в списке, включая трехмерный узел.

Узел SRC (преобразование частоты выборки) должен предшествовать узлу СУММ. Узлы SRC и SUM обычно находятся рядом, хотя это не является обязательным требованием. Метод IDirectSoundBuffer::SetFrequency (см. Microsoft Windows SDK документацию) изменяет частоту повторной выборки узла SRC.

Микшера, содержащего только узлы SRC и SUM, достаточно для смешивания потоков, управляемых системными драйверами, такими как SWMidi и Redbook (см. раздел Драйвер системы SWMidi и Системный драйвер Redbook), но DirectSound дополнительно требует, чтобы два узла тома и узел супермиксера предшествовали узлу SUM. DirectSound отправляет изменения тома в результате вызовов IDirectSoundBuffer::SetVolume на первый узел тома и отправляет эффекты сдвига из вызовов IDirectSoundBuffer::SetPan на второй узел тома.

DirectSound может создавать трехмерные эффекты на двухмерном контакте с помощью вызовов SetVolume, SetPan и SetFrequency для управления томом и узлами SRC:

  • Вызовы SetVolume могут имитировать изменения расстояния от источника звука от прослушивателя.

  • Вызовы SetPan могут имитировать изменения ориентации источника звука относительно прослушивателя.

  • Вызовы SetFrequency могут имитировать эффекты Doppler и HRTFs (функции передачи, связанные с головой).

Узел супермиксера — это перекрестная матрица, которая соединяет входные каналы M с N выходными каналами, где N должно быть равно количеству каналов в конечном выходном потоке устройства.

Необязательный трехмерный узел требуется для управления эффектами трехмерной обработки с аппаратным ускорением (см. раздел Поддержка 3D-ускорения DirectSound в WDM Audio), но не требуется для программно-эмулированной трехмерной обработки. Большинство существующих реализаций размещают трехмерный узел перед узлом SRC и между первым узлом тома и узлом супермиксера, но возможны и другие конфигурации.

Входной поток для трехмерного узла обычно содержит один канал. В DirectSound 8.0 и более поздних версиях с трехмерными эффектами можно создавать только буферы mono PCM. Более ранние версии DirectSound, однако, поддерживают трехмерные узлы с моно- и стереофонические входные потоки, а драйверы должны поддерживать оба типа для обеспечения совместимости со старыми приложениями.