Поделиться через


Звуковой граф XAudio2

Набор всех голосов с их содержащимися эффектами и их взаимосвязями называется графом обработки звука. Граф принимает набор аудиопотоков от клиента в качестве входных данных, обрабатывает их и передает конечный результат звуковому устройству. Вся обработка звука выполняется в отдельном потоке с периодичностью, определяемой квантом графа (в настоящее время 10 миллисекунд в Microsoft Windows и 5 1/3 миллисекунд на Xbox 360). Каждые квантовые миллисекунды поток просыпается и распределяет квантовые миллисекунды звуковых данных по всему графу. Пример создания базового звукового графа см. в разделе Практическое руководство. Создание базового графа обработки звука.

Простой звуковой граф:

простой звуковой граф

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

Обработка графа

Любой вызов метода, влияющий на любой объект в графе, считается влияющим на изменение состояния графа. К изменениям состояния графа относятся следующие:

  • Создание и уничтожение голосов
  • Запуск или остановка голосов
  • Изменение назначений голоса
  • Изменение цепочек эффектов
  • Включение или отключение эффектов
  • Настройка параметров для эффектов или встроенных SPC, фильтров, томов и микшеров

Любой набор изменений состояния графа можно объединить и выполнить как атомарную транзакцию. Эти атомарные операции называются наборами операций. Они рассматриваются в обзоре наборов операций XAudio2 .

Представление внутренних данных

Звуковые данные в графе XAudio2 всегда хранятся и обрабатываются в 32-разрядной форме PCM с плавающей запятой. Однако количество каналов и частота выборки могут различаться в пределах графа. Формат, в котором данный голос обрабатывает звук, определяется типом голоса и параметрами, используемыми для создания голоса.

Тип голоса Параметры
IXAudio2SourceVoice Количество каналов и частота выборки голосов, на которые исходный голос отправляет звук.
IXAudio2SubmixVoice и IXAudio2MasteringVoice Аргументы InputChannels и InputSampleRate, используемые для создания голоса submix/mastering.

 

Преобразование формата

XAudio2 обрабатывает любую частоту выборки или преобразования каналов, необходимые для передачи звука из одного голоса в другой, со следующими ограничениями:

  • Все целевые голоса для определенного голоса должны работать с одинаковой частотой выборки.
  • Эффекты в цепочке эффектов могут изменять число каналов аудио, но не частоту выборки.
  • Число выходных каналов цепочки эффектов должно соответствовать количеству голосов, на которые она отправляет
  • Невозможно внести изменения динамического графа, которые нарушат приведенные выше правила.

На стороне ввода исходные голоса могут считывать данные в любом допустимом формате PCM или в любом из сжатых форматов, поддерживаемых XAudio2. Если входные данные сжаты, они декодируются в PCM с плавающей запятой перед дальнейшей обработкой.

На стороне вывода мастеринг голосов может создавать только данные PCM. Эти данные всегда будут соответствовать тем же ограничениям, которые описаны выше для входных данных PCM.

Звуковые графы

Руководство по программированию для XAudio2

Руководство: создание базовой схемы обработки звука

Руководство: динамическое добавление речи или удаление ее из звуковой схемы

Руководство: использование субмикшированной речи

Руководство: создание цепи эффектов