java изменить темп миди-файла без секвенсора?

Мне нужно получить информацию о миди-файле до его воспроизведения, что я могу сделать, но мне нужно сделать это с альтернативными битами в минуту для файлов в минуту.

Итак, есть ли способ установить bpm миди-файла и, следовательно, повлиять на соответствующие временные события?


person JavaTime    schedule 04.02.2012    source источник


Ответы (1)


Вы можете прочитать MIDI-файл с помощью этой библиотеки, а затем отфильтровать события Tempo и применить свои собственные, если это необходимо. Похоже, вас интересует реальное время каждого события (в отличие от их тика MIDI), поэтому вам все равно придется вычислять это самостоятельно. (Но я предполагаю, что вы все равно это уже делали, поскольку MIDI-файлы не отслеживают реальное время событий.)

http://code.google.com/p/android-midi-lib/

person LeffelMania    schedule 05.02.2012
comment
Ну, проблема в том, что я не знаю формулы для определения новых временных меток на основе нового значения темпа. У кого-нибудь есть формула на этот счет? - person JavaTime; 05.02.2012
comment
Эта ссылка имеет формулу: stackoverflow.com/questions/2038313/ Однако, если в файле MIDI есть несколько изменений темпа, становится сложнее вычислить реальное время. Для этого есть несколько стратегий, но в основном вам придется отслеживать временные интервалы для каждого раздела постоянного темпа и работать в обратном направлении от интересующей вас ноты. Не тривиально. - person LeffelMania; 06.02.2012
comment
да, я думал, что это потребует много работы, но на данный момент это не имеет значения, я, вероятно, не буду иметь дело с миди-файлами с большим количеством изменений темпа в данный момент. Спасибо за ссылку, как мне узнать значение ppq? - person JavaTime; 06.02.2012
comment
Это разрешение файла MIDI. Общие значения 480 и 960. - person LeffelMania; 06.02.2012
comment
Да нашли! Большое Вам спасибо!!! Решил мне проблему и много головных болей!!! - person JavaTime; 06.02.2012