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


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

Вы можете в любое время изменить звуковые графы, чтобы добавить или удалить голоса или целые вложенные диаграммы. В этом разделе показано, как добавить или удалить голоса подмиксов из графа, созданного в соответствии с инструкциями из статьи How to: Build a Basic Audio Processing Graph. Один голос может отправлять свои выходные данные нескольким голосам или длинной цепочке голосов. Удаление или добавление одного голоса может оказать большое влияние на звуковой граф.

Динамическое изменение звукового графа

Добавление и удаление голосов из звукового графа очень похоже на добавление или удаление узлов из одного связанного списка или графа.

  • Добавление голоса или подграфа в звуковой граф

    Задайте выходные данные голоса в графе (родительский голос) для добавляемого голоса с помощью функции SetOutputVoices . Задайте для вывода нового голоса исходный дочерний элемент родительского голоса.

    XAUDIO2_SEND_DESCRIPTOR send = {0, pNewVoice};
    XAUDIO2_VOICE_SENDS sendlist = {1, &send};
    pParentVoice->SetOutputVoices(&sendlist);
    send.pOutputVoice = pChildVoice;
    pNewVoice->SetOutputVoices(&sendlist);
    
  • Удаление голоса или подграфа из звукового графа

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

    XAUDIO2_SEND_DESCRIPTOR send = {0, pChildVoice};
    XAUDIO2_VOICE_SENDS sendlist = {1, &send};
    pParentVoice->SetOutputVoices(&sendlist);
    

Обратите внимание, что для ясности в этих примерах у каждого родителя есть только один дочерний элемент. Если родительский узел имеет несколько дочерних элементов, его список отправки будет содержать массив голосов, а не указатель только на один голос.

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

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

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

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

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