Как “замедлить” файл MIDI (идеально в Python)?

Рекомендуемый метод работал на меня, но после обновления моей библиотеки 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

использования
17
задан Alex Martelli 6 September 2009 в 00:35
поделиться

2 ответа

Вы можете отредактировать файл согласно 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
9
ответ дан 30 November 2019 в 13:13
поделиться

Как Винко говорит, что вы можете редактировать мидифайл, но, поскольку это двоичный формат, сжатый до минимально возможного количества бит, помогает помощь.

Это конвертер миди в текст (и наоборот):
http://midicomp.opensrc.org/
Я довольно часто использую его в последнее время. Обработка текста (например, поиск строки с «Tempo») для простых операций довольно тривиальна, если у вас есть мидфайл в виде текста. не пробовал на Mac (скомпилировано без проблем на ubuntu 8.04).

Что касается конкретно темпа мидфайлов, это ' Действительно легко замедлить или ускорить воспроизведение, поскольку время событий указывается в «тиках», реальная продолжительность которых в секундах определяется параметром темпа, описанным в цитате Винко. Я считаю, что размер не так важен и предназначен в основном для правильного отображения тактов / долей при открытии в секвенсоре midi.

Кроме того, помимо pyPortMidi, существует еще пара других модулей midi python.

[хммм ... кажется, я могу публиковать только ссылки в сообщениях, будучи новым пользователем. я попробую разместить ссылки на модули python в паре комментариев или в паре других ответов ...]

14
ответ дан 30 November 2019 в 13:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: