ГОСТ Р 53556.5—2013
]
На первом и каждом последующем обращении к
grain,
выполняются следующие шаги:
Время постепенно увеличивается на 1
1SR,
где
SR —
частота дискретизации оркестра. Если время
больше или равно
Mdensity.
то время обнуляется, и затем, если
time
<1/
density,
триггерные часы уста
навливаются в
time.
Если
time>
=
Mdensity,
триггерное время остается 0 и никакая мелкая частица не
создается.
Если триггерное время положительно, то оно постепенно уменьшается на 1
1SR.
Если триггерные
часы меньше или равны нулю, новая мелкая частица диспетчеризируется. Чтобы диспетчеризировать
новую мелкую частицу, число активных мелких частиц постепенно увеличивается и обозначается как /.
Должно быть выделено место, чтобы разместить текущую фазу
phase[i],
частоту
freq р],
амплитуду
атр р],
продолжительность
durp],
и время
0<те р]
новой мелкой частицы. Эти значениядолжны бытьустановлены в
текущее значение
phase, freq. dur,
и 0 соответственно.
Для каждой активной мелкой частицы /’текущее значение мелкой частицы х
р]
вычисляют следую
щим образом. В зависимости от формата
wave
существуют три варианта звуковой таблицы:
1. Если
wave
имеет параметры частоты дискретизации и основной частоты, то она имеетопределен
ную выборку и является переходом к
freq
в
loscil
().
loopstart
будет установлен в начальные параметры из
таблицы
wave,ioopend
будет установлен в параметры конца таблицы или /-1, где /является табличной дли
ной
wave,
если параметр конца цикла 0. Пусть
т
будет значением
loopstar
т/l и
п
будет значением
loopendH.
Тогда каждый раз после первого вычисления значение фазы
phase р]
будет увеличено на
freq
pJ’TSR/ (basefreq’SR),
где
TSR
является табличной частотой дискретизации и
basefreq
— основная
частота из таблицы
wave.
Если после этого приращения фаза не находится в диапазоне (0,1), то фаза
должна быть установлена в
phase [i\-fk>or(phase
[/]). Текущее значение мелкой частицы
хр]
— значение
номера
q
из звуковой таблицы, где
q = phase
[/] * (
т-п)
+
т.
Если значение
q
не будет целым числом, то
значение х [/] будет интерполировано из соседнихтабличных значений.
2. Если waveимеет параметр частотыдискретизации, но не имеет параметр основной частоты, то она
не имеет определенной выборки и является соответствующей частотой дискретизации оркестра и таким
образом
doscil()
и
phaseр]
игнорируются. Каждый раз после первого вычисляения значения фаза
phase
[/] будет увеличена на
TSR/SR.
где
TSR
является табличной частотой дискретизации, и
SR
является
частотой дискретизации оркестра. Если после этого приращения фаза больше чем 1, то все будущие
значения этой мелкой частицы равны 0. Иначе текущее значение мелкой частицы
хр]—
это значение
номера
q
из звуко вой таблицы, где
q
=
phase р]
* / и / являются длиной
wave
звуковой таблицы. Если
значение
q
не будет целым числом, то значение хДобудет интерполировано из соседних табличных
значений.
3. Если
wave
не имеет ни параметров частоты дискретизации, ни основной частоты, то она будет
v/aveshaped
и колеблется в osc//fl.Каждый раз после первого вычисления значения фаза
phase
[/] будет
увеличена на
freq p]/SR.
Если после этого приращения фазовое значение будет вне диапазона [0,1], то
фаза должна быть установлена в дробную частьее значения
pfiase р
—
floor(phase р]).
Текущее значение
мелкой частицы х
р]
будет значением номера
q
из звуковой таблицы, где
q
=
phase
[/] * / и /являетсядлиной
v/avo
звуковой таблицы. Если значение
q
не будет целым числом, то значение х [»]будет интерполировано из
соседних табличных значений.
Выходное значение мелкой частицы х [/] вычисленное одним из этих трех способов, модулируется
звуковой таблицей согласно гранулярной продолжительности. Время
gtime
[/] постепенно увеличивается на
1
JSR,
где
SR
является частотой дискретизации оркестра. Если
gtime
[/]>
dur,
то мелкая частица закончена.
Это действие должно быть отмечено, как неактивное, и его пространство может быть освобождено. Иначе,
значение модулятора
т
[/] это значение номера
q
звуковой таблицы
env,
где
q
=
floor(gtime р]
/
durр]
*
I)
и
/является длиной звуковой таблицы
env.
Значениеокончательного результата мелкой частицы х [/] повторно
масштабируется значением модулятора в х [/] =
атр’ х
[/] *
т
[/].
Выходное значение из кода операции является суммой выходных значений для всех активных
мелких частиц.
9.8 Шумовые генераторы
9.8.1 Примечание по шумовым генераторам и псевдослучайным последовательностям
Следующие коды операции генерируют шум, то ость псевдослучайные последовательности различ
ных статистических параметров. Чтобы обеспечить максимальную декорреляцию среди многократных
шумовых генераторов, важно, чтобы все ссылки на псевдослучайную генерацию совместно использовали
единую обратную связь. Таким образом, все случайные значения, требуемые различными состояниями
50