15.1 Введение
Этот подпункт описывает использование SAOL оркестров для функции, обрабатывающей эффекты в AudioBIFS системе. SAOL используется не только в качестве метода описания синтеза звука, но также в качестве метода описания звуковых эффектов и для завершения алгоритмов.
15.2 Входные источники и phaseGroup
Каждый узел BIFS, который содержит код SAOL, является или узлом AudioSource, или узлом AudioFX. Если нет никаких входных источников к оркестру SAOL, то глобальная переменная оркестра inchannels по умолчанию имеет значение 0. В этом случае специальная шина input_bus не может быть отправлена к инструменту или использоваться в оркестре.
Если дочерние узлы узла AudioFX обеспечивают несколько каналов входного звука оркестру, то каналы входного звука помещаются в специальную шину input_bus. От этой шины они могут быть отправлены любому требуемому инструменту(ам), и аудиоданные должны обрабатываться. Число каналов ввода оркестра по умолчанию - это значение глобальной переменной оркестра inchannels, является суммой чисел каналов звука, обеспеченного каждым из дочерних элементов.
15.3 Узел AudioFX
15.3.1 Введение
Узел AudioFX в AudioBIFS используется, чтобы загрузить алгоритмы, обрабатывающие звуковые эффекты в пределах комплекта инструментальных средств AudioBIFS. SAOL является языком для описания алгоритмов, обрабатывающих звуковые эффекты в AudioBIFS.
15.3.2 Параметры оркестра AudioFX
В оркестре SAOL из узла AudioFX инстанцируют только файл оркестра (поле orch в узле) и, дополнительно, файл счета SASL (поле score). Эти файлы соответствуют маркируемым последовательностям оркестра и данных счета, формирующих элементы потока битов orchestra и score_file.
15.3.3 Инстанцирование оркестра AudioFX
Инстанцирование оркестра для узла AudioFX требует следующих шагов:
1. Декодирование элементов orch и score в узле
2. Грамматический разбор и проверка синтаксиса этих элементов
3. Инстанцирование отправляет инструменты в оркестр.
Каждый из переданных инструментов должен сохраняться, пока он не будет выключен оператором turnoff, или узел, содержащий оркестр, не будет удален. Если оператор turnoff будет использоваться в одном из этих инструментов, то это должно быть взято в качестве нулевого значения для будущего времени.
15.3.4 Выполнение оркестра AudioFX
Процесс синтеза времени выполнения продолжается согласно правилам для стандартного процесса декодирования SA со следующими исключениями и дополнениями:
Поскольку никакие устройства доступа не будут получены процессом AudioFX, то не должна сохраняться связь с системным уровнем. Используются только события, которые находятся в поле счета узла непосредственно. Каждый раз оркестр AudioFX должен запросить из системного уровня входные буферы аудио, которые соответствуют дочерним узлам. Эти аудио буферы должны быть помещены в специальную шину input_bus и затем отправлены любым инструментам, которые определяются в глобальном заголовке оркестра.
Кроме того, каждый шаг уровня управления params[] поля узла AudioFX должен быть скопирован в глобальную переменную params[] массива оркестра. В конце каждого цикла управления params[] значения массива должны быть скопированы обратно в соответствующие поля узла AudioFX и затем направлены к другим узлам.
В каждом моменте времени вывод оркестра становится выводом узла AudioFX.
15.3.5 Функциональность изменения скорости в узле AudioFX
Функциональность изменения скорости для звуков, обеспеченных из входных источников, поддерживается в узле AudioFX. Это обеспечивает код операции SAOL fx_speedc.
15.4 Интерактивные 3-D пространственные аудио сцены
Когда узел AudioSource или AudioFX является дочерним элементом узла Sound, коды пространственного расположения, направления, образец распространения звука от узла Sound и пространственного расположения и направления слушателя прописываются в узле SAOL.
С этой целью используются стандартные имена position, direction, listenerPosition, listenerDirection, minFront, maxFront, minBack и maxBack.