Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 11650
Последний выпуск: 19.06.2015

MOD

В проигрывателе для каждого канала хранится описание состояния канала. Оно полностью описывает звучание канала. Состояние канала имеет следующие характеристики:

  1. последняя использовавшаяся на канале нота;
  2. последняя использовавшаяся на канале частота выборки для сэмпла;
  3. текущая частота выборки для сэмпла;
  4. текущая громкость;
  5. количество выборок, оставшихся до конца сэмпла;
  6. длина повторяемой части сэмпла;
  7. смещение текущей выборки;
  8. смещение зацикливания;
  9. целая и дробная части значения, на которое увеличивается смещение текущей выборки, определяет текущую частоту выборки;
  10. дробная часть смещения в буфере, в который помещается сумма выборок сэмплов со всех каналов, целая часть смещения глобальна для всех каналов;
  11. указатель на дескриптор последнего использовавшегося на канала сэмпла;
  12. последний использовавшийся на канале эффект и его параметр;
  13. значения по умолчанию параметров некоторых эффектов:
    1. параметр эффектов Portamento Up & Down;
    2. параметр эффекта TonePortamento;
    3. параметр эффекта Sample Offset;
  14. переменные, используемые при обработке эффектов:
    1. счетчики для эффектов Arpeggio, Note Cut, Note Delay и Retrig;
    2. переменные для Vibrato: глубина, скорость, текущий указатель в таблице волновой формы Vibrato, текущая волновая форма Vibrato и указатель, надо ли играть новую ноту с начала волновой формы, или использовать позицию, оставшуюся от предыдущей ноты;
    3. переменные для Tremolo: глубина, скорость, текущий указатель в таблице волновой формы Tremolo, базовая громкость Tremolo, текущая волновая форма Tremolo и указатель, надо ли играть новую ноту с начала волновой формы, или использовать позицию, оставшуюся от предыдущей ноты;
    4. номер сэмпла для эффектов Note Delay и Retrig;
    5. счетчик и номер строки начала цикла для эффекта Pattern Loop.

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

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

Микшер в это время, работая параллельно с проигрывателем, микширует сэмплы и подает результат на звуковой выход. Микшер в своей работе использует часть характеристик состояния канала. Работа микшера сводится к просмотру структур, описывающих состояние каналов. Если на канале задан сэмпл, и он не доиграл до конца, то из сэмпла берется текущая выборка и добавляется в сумму текущих выборок со всех каналов. После чего указатель текущей выборки передвигается на следующую позицию в сэмпле. Оригинально, в MOD-формате звук из каналов с номерами 1+4*n и 4+4*n выводится в левый звуковой выход, а звук из каналов с номерами 2+4*n и 3+4*n - в правый, где n - целое неотрицательное число, зависящее от числа каналов.

После того, как проигрыватель в начале первого кадра изменил состояния каналов, он ждет 5/(BPM*2) секунд. По прошествии этого времени начнется второй кадр. В это время возможно изменение состояния каналов, если до этого были заданы соответствующие эффекты. Опять ожидается, пока не начнется новый кадр. И т.д. Когда пройдет число кадров, равное текущей скорости, указатель текущей строки перемещается на следующую, и происходит изменение состояния каналов в соответствии с новыми нотами, сэмплами и эффектами.

Рассмотрим влияние ноты и номера сэмпла на изменение состояния канала.

Если встречается нота при незаданном номере сэмпла или встречается номер сэмпла при незаданной ноте, то они сохраняются и никаких дальнейших действий не происходит.

Если одновременно заданы и нота, и номер сэмпла, то они становятся текущими, и происходит инициализация информации о сэмпле. Она включает в себя следующее: по ноте и тонкому тону сэмпла находится текущая частота выборки; смещение текущей выборки обнуляется; длина повторяемой части, смещение зацикливания и текущая громкость копируется из дескриптора сэмпла; вычисляется количество выборок, оставшихся до конца сэмпла.

Если задана только нота, она становится текущей и происходит инициализация информации о сэмпле.

Если задан только номер сэмпла, то проверяется не совпадает ли он с номером текущего сэмпла. Если совпадает, то инициализируется только текущая громкость. Иначе происходит полная инициализация информации о сэмпле.

Кроме ноты и номера сэмпла на состояние канала влияют эффекты.


Предыдущая | Оглавление | Следующая

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог