Рекомендуемый метод работал на меня, но после обновления моей библиотеки implementation 'androidx.appcompat:appcompat:1.1.0'
Реализация как ниже
val onBackPressedCallback = object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
// Handle the back button event
}
}
requireActivity().onBackPressedDispatcher.addCallback(this, onBackPressedCallback)
Kotlin
использованияВы можете отредактировать файл согласно http://www.sonicspot.com/guide/midifiles.html
Хотя, вероятно, уже существует библиотека чтения / записи MIDI. . Фактически, это был вопрос просмотра связанных вопросов: Простая кроссплатформенная библиотека MIDI для Python
Установить темп
Это мета-событие устанавливает темп последовательности с точки зрения микросекунд на четверть, что составляет закодирован в трех байтах. Обычно это найдено в первом фрагменте трека, выровнено по времени, чтобы происходить в одно и то же время как сообщение MIDI Clock для продвижения более точная синхронизация. Если нет присутствует установленный темп, 120 ударов в минуту предполагается. Последующий формулы могут быть использованы для перевода темп от микросекунд на четверть в удары в минуту и назад.
MICROSECONDS_PER_MINUTE = 60000000 BPM = MICROSECONDS_PER_MINUTE / MPQN MPQN = MICROSECONDS_PER_MINUTE / BPM
Meta Event Type Length Microseconds/Quarter-Note 255 (0xFF) 81 (0x51) 3 0-8355711
Как Винко говорит, что вы можете редактировать мидифайл, но, поскольку это двоичный формат, сжатый до минимально возможного количества бит, помогает помощь.
Это конвертер миди в текст (и наоборот):
http://midicomp.opensrc.org/
Я довольно часто использую его в последнее время. Обработка текста (например, поиск строки с «Tempo») для простых операций довольно тривиальна, если у вас есть мидфайл в виде текста. не пробовал на Mac (скомпилировано без проблем на ubuntu 8.04).
Что касается конкретно темпа мидфайлов, это ' Действительно легко замедлить или ускорить воспроизведение, поскольку время событий указывается в «тиках», реальная продолжительность которых в секундах определяется параметром темпа, описанным в цитате Винко. Я считаю, что размер не так важен и предназначен в основном для правильного отображения тактов / долей при открытии в секвенсоре midi.
Кроме того, помимо pyPortMidi, существует еще пара других модулей midi python.
[хммм ... кажется, я могу публиковать только ссылки в сообщениях, будучи новым пользователем. я попробую разместить ссылки на модули python в паре комментариев или в паре других ответов ...]