Темп автоматически определяется в файле MIDI.Используя класс MetaMessage в javax.sound.MIDI и метод getData (), вы получите байты метаданных.Байты с меткой 0x51 содержат значение темпа, измеренное в микросекундах на четвертную ноту для каждой дорожки.Обратите внимание, что каждый MIDI-файл обычно имеет несколько дорожек;отсюда несколько темповых подписей.Посмотрите на схему ссылки на структуру MIDI ниже.Он объясняет каждый фрагмент данных файла MIDI и где и что все это означает.
Вот ссылка на схему структуры MIDI: http://www.ccarh.org/courses/253/handout/smf/
Вот ссылка на MetaMessageКласс: https://docs.oracle.com/javase/8/docs/api/javax/sound/midi/MetaMessage.html
Вот ссылка на стандартный формат файла MIDI: https://formats.kaitai.io/standard_midi_file/index.html
Простая сводка: 11-й и 12-й байт = количество дорожек.Это находится в заголовке, который имеет длину 14 байтов.Далее следует фрагмент трека, затем еще один, и еще один столько раз, сколько определено в 11-м и 12-м байтах.Каждый из них имеет длину, определенную в 5, 6, 7 и 8 байтах в чанке.Длина измеряет количество байтов дорожки (начиная с 9-го байта).