Отдельный MIDI События песни из событий начальной настройки

я проигрываю MIDI-песню с помощью Java Sequencer . Песня предназначена для непрерывного зацикливания, что я легко могу сделать с помощью
секвенсора. setLoopCount (Sequencer.LOOP_CONTINUOUSLY)
При воспроизведении через встроенный синтезатор (звуковая карта) это работает нормально и (с добавление фиктивного события , , если необходимо), синхронизация цикла точная.

Однако при воспроизведении через внешний (USB или последовательный) синтезатор наблюдается заметный пробел на выходе в точке, где он петли вокруг. Это объясняется тем фактом, что в начале файла .mid есть много событий настройки, которые требуют некоторого времени для отправки по последовательной линии.

Я хотел бы попробовать выделить одноразовые события настройки в их собственная Последовательность , которая отправляется на устройство один раз, когда песня загружается, но остается вне основной (зацикленной) Последовательности .

Есть ли простой алгоритм (или библиотечная функция ), которые могут различать два типа событий?

Требуется предусмотреть:

  • Изменения зарегистрированного параметра , которые отправляются как группа связанных сообщений.
  • Иногда изменения программы канала отправляются в в середине дорожки (и должна быть частью зацикленной последовательности), но если одна и та же программа сохраняется на протяжении всей песни (в большинстве случаев), изменение программы должно быть частью последовательности установки. То же самое относится и к изменениям темпа.

5
задан finnw 17 July 2011 в 17:36
поделиться