10.1 Введение
Все генераторы звуковой таблицы должны быть реализованы в терминале, который может декодировать объект, тип 3 или 4.
Для каждого генератора звуковой таблицы описывается следующее:
Используемые описания, показывающие параметры, которые обязаны быть в таблице, которой пользуется звуковой генератор.
Семантика генератора. Семантика описывает, как вычислить значения и разместить их в звуковую таблицу, используя этот генератор.
Для каждого генератора звуковой таблицы первое поле в табличном определении является именем генератора, а значение выражения во втором поле является размером звуковой таблицы. Многие генераторы звуковой таблицы также показывают значение -1 в поле динамического вычисления для размера звуковой таблицы.
Последующие выражения являются необходимыми и дополнительными параметрами к генератору. Каждому из этих полей дадут имя в описании генераторов.
У каждой звуковой таблицы, так же как блока данных, есть четыре параметра: цикл частоты дискретизации и запуска, конец цикла и основная частота. Для всех генераторов звуковой таблицы, кроме sample, эти параметры первоначально должны быть обнулены.
10.2 Выборка
t1 table (sample, size, which [, skip])
Код генератора звуковой таблицы sample позволяет включение аудиосэмплов (или другие блоки данных) в потоке битов и последующий доступ в оркестр.
Если size будет -1, то размер таблицы должен быть длиной аудиосэмпла. Если size больше, чем длина аудиосэмпла, то аудиосэмпл должен быть дополнен нулем в конце длины size. Если size меньше, чем длина аудиосэмпла, то должны использоваться только первые выборки size.
Поле which идентифицирует выборку. which - это любой символ. Когда генератор обращается к выборке в потоке битов, это символ числа. Когда генератор обращается к выборке, сохраненной в AudioBuffer, это число.
В случае, где генератор обращается к выборке в потоке битов для совместимых реализаций потока битов, данные являются просто потоком необработанных значений с плавающей точкой. Новый блок данных с именем должен быть помещен в звуковую таблицу. Если блок данных потока битов содержит частоту дискретизации, цикл запуска и конец цикла, и/или значения основной частоты, то эти параметры звуковой таблицы должны быть установлены. Если частота дискретизации не будет оценена, то она должна быть установлена в частоту дискретизации оркестра по умолчанию. Любые другие неоцененные параметры должны быть установлены к 0.
В случае, когда генератор обращается к выборке, сохраненной в AudioBuffer, для сжатия выборки может использоваться любой аудиокодер. В этом случае поля children узла AudioSource, ответственного за инстанцирование этого оркестра, обращаются к узлам AudioBuffer. Каждый AudioBuffer после буферизации содержит несколько каналов аудиоданных. Если у первого элемента есть каналы , вторые каналы и до k-1, то у узла AudioSource есть всего каналов, и which должен быть значением между 0 и K-1. Канал which (где which в случае необходимости округляется в самое близкое целое число) нумеруется в порядке элементов и их каналов, которые и будут помещены в звуковую таблицу. Частота дискретизации звуковой таблицы должна быть установлена в частоту дискретизации узла AudioBuffer, из которого берется канал which. Цикл запускается, конец цикла и значения основной частоты должны быть установлены в 0.
Если skip обеспечивается и является положительным значением, то он округляется к самому близкому целому числу, и данные, помещенные в звуковую таблицу, начинаются с выборки skip+1 потока битов или данными из AudioBuffer.
10.3 Данные
t1 table (data, size, p1, p2, p3...)
Код генератора звуковой таблицы data позволяет оркестру помещать значения данных непосредственно в звуковую таблицу.
Если size будет -1, то размер таблицы должен быть числом определенных значений данных. Если size будет дан и будет больше, чем число значений данных, то звуковая таблица в конце длины size должна быть дополнена нулем. Если size будет дан и будет меньше, чем число значений данных, то должны использоваться только первые значения size.
р1, p2, р3... поля являются значениями с плавающей точкой, которые должны быть помещены в звуковую таблицу.
10.4 Random
t1 table (random, size, dist, p1 [, p2])
Код генератора звуковой таблицы random заполняет звуковую таблицу псевдослучайными числами согласно данному распределению. Для всех псевдослучайных алгоритмов генерации числа должны быть повторно отобраны после запуска оркестра так, чтобы каждое исполнение оркестра, содержащего эти инструкции, генерировало различные числа.
Если поле size будет положительным значением, то оно должно быть длиной таблицы, и много независимых случайных чисел должны быть вычислены и помещены в таблицу.
Поле dist определяет, какое случайное распределение использовать, и соответственно изменяются значения полей р1 и p2.
Если dist равно 1, то используется универсальное распределение. Псевдослучайные числа вычисляются так, что у всех значений с плавающей точкой между р1 и p2 включительно есть равная вероятность того, чтобы быть выбранным для любой выборки.
Если dist равно 2, то используется линейно умещающееся распределение. Псевдослучайные числа вычисляются так, что функции распределения вероятности х для любой выборки дают