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


Граф звука XAudio2

Набор всех голосов с их содержащимися эффектами и их взаимодействием называется графом обработки звука. Граф принимает набор аудиопотоков от клиента в качестве входных данных, обрабатывает их и предоставляет конечный результат звуковому устройству. Обработка звука выполняется в отдельном потоке с периодичностью, определенной квантовым графом (в настоящее время 10 миллисекунд в Microsoft Windows и 5 1/3 миллисекундах на Xbox 360). Каждый квантовый миллисекунд поток просыпается и распределяет квантовые миллисекунды звуковых данных через весь граф. Пример создания базового звукового графа см. в статье "How to: Build a Basic Audio Processing Graph".

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

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

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

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

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

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

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

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

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

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

 

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

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

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

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

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

звуковых графов

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

How to: Build a Basic Audio Processing Graph

Практическое руководство. Динамическое добавление или удаление голосов из аудиографа

Практическое руководство. Использование вложенных голосов

Практическое руководство. Создание цепочки эффектов