Пятница, 27.12.2024, 10:04
Приветствую Вас Гость | RSS

VistaMEDIA

Главная | Регистрация | Вход

Главная » Статьи » Форматы файлов

Формат MOD-файлов и технология их воспроизведения (часть 2)

3.ПРИНЦИП ВОСПРОИЗВЕДЕНИЯ 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) секунд. По прошествии этого времени начнется второй кадр. В это время возможно изменение состояния каналов, если до этого были заданы соответствующие эффекты. Опять ожидается, пока не начнется новый кадр. И т.д. Когда пройдет число кадров, равное текущей скорости, указатель текущей строки перемещается на следующую, и происходит изменение состояния каналов в соответствии с новыми нотами, сэмплами и эффектами.

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

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

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

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

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

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

Категория: Форматы файлов | Добавил: vistamedia (27.09.2007) | Автор: codenet.ru
Просмотров: 839 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]

Категории каталога

Форма входа

Поиск

Статистика

Наш опрос

Оцените мой сайт
Всего ответов: 52

Мини-чат

200
Бесплатный хостинг uCoz