Чтение MIDI-файлов - PullRequest
       9

Чтение MIDI-файлов

9 голосов
/ 25 июля 2009

Каков наилучший способ чтения файла MIDI (в хронологическом порядке) с несколькими дорожками? (Java)

Примечание: я не хочу воспроизводить MIDI-файл, просто прочитайте сообщения.

Пара идей:

Можно ли предположить, что нетотметить события короче 1/64 примечания? Или я должен посетить каждый трек и перейти к следующему тику только после всех других треков тиков

  • Предположим, что нет события миди короче 1/64 ноты, и переместить текущее число тиков на это значениеисправить дельту.
  • Посетить каждый трек и перейти к следующей самой ранней отметке

Ответы [ 2 ]

3 голосов
/ 05 января 2010

JFugue может читать MIDI-файл и сортировать сообщения в хронологическом порядке.

Результаты могут быть прочитаны как JFugue MusicStrings (например, C-sharp, 5-я октава, целая нота = "C # 5w"), или вы можете написать свой собственный ParserListener и прикрепить его к MidiParser, чтобы вы моглиможет выводить свой собственный текст.

0 голосов
/ 26 июля 2009

В Java вы можете прочитать MIDI-файл с помощью:

try {
        Sequencer sequencer = MidiSystem.getSequencer();
        sequencer.setSequence(MidiSystem.getSequence(yourMidiFile));
        sequencer.open();
        sequencer.start();
        while(true) {
            if(sequencer.isRunning()) {
                try {
                    Thread.sleep(1000); // Check every second
                } catch(InterruptedException ignore) {
                    break;
                }
            } else {
                break;
            }
        }

} catch(Exception e) {
        System.out.println(e.toString());
} finally {
    // Close resources
    sequencer.stop();
    sequencer.close();
}

Этот код должен читать ваши MIDI-файлы (даже если есть несколько дорожек)

...