Простая, кроссплатформенная MIDI-библиотека для Python
Я хочу создать небольшое приложение, создающее MIDI-звуки. Я никогда не занимался звуком в программировании, поэтому я хотел бы начать с чего-то основного и иметь хорошую документацию. Я хочу придерживаться Python, так как я с ним максимально комфортен и не хочу себя перегружать, изначально.
Мое время разбивается на 50/50 между Windows и Ubuntu, поэтому очень полезно что-то, что "просто работает" на обеих платформах.
Любые предложения?
Ответы
Ответ 1
Библиотека MIDIUtil (размещенная здесь в Google Code) делает то, что вы хотите: пишите MIDI файлы из чистой библиотеки Python. Когда-то приятная вещь об этом (и полное раскрытие: я автор) заключается в том, что вам не нужно отслеживать MID-события более низкого уровня, такие как примечание и примечание: оно обрабатывает их для вас.
В качестве примера, чтобы написать заметку, вы бы сделали что-то вроде:
MyMIDI = MIDIFile(1)
track = 0
channel = 0
pitch = 60
time = 0
duration = 1
volume = 100
MyMIDI.addNote(track,channel,pitch,time,duration,volume)
Надеюсь, что это поможет
Ответ 2
Я искал библиотеку pure-Python для генерации MIDI файла, mxm Python MIDI library именно это.
Из этот фрагмент dzone, существует однофайловая версия вышеупомянутой библиотеки, smidi.py (gist'd here для потомков)
Использование довольно просто:
>>> import smidi
>>> m = smidi.MidiOutFile('out.mid')
>>> m.header()
>>> m.start_of_track()
>>> m.update_time(0)
>>> m.note_on(note=0x40) # single note
>>> m.update_time(192)
>>> m.note_off(note=0x40) # stop it after 192
>>> m.update_time(0)
>>> m.end_of_track()
>>> m.eof()
Предположительно работает в Windows (поскольку исходный пример использует C:\out.mid
как имя выходного файла), и я протестировал его на OS X
Ответ 3
pyPortMidi - это оболочка Python из PortMidi, которая описывается как "кросс-платформенная библиотека C для управления MIDI в реальном времени". Я не использовал его сам, но он выглядит очень многообещающим. Явное упоминание о возможности отправки MIDI-данных в реальном времени.
Ответ 4
Если вам нужно только создать Midi или обрабатывать midi файлы, попробуйте mingus,
Это отличный пакет, а также позволяет гораздо более высокие абстракции, такие как аккорды, прогрессирование аккордов, масштабы и т.д.
Ответ 5
Я попробовал восемь пакетов, перечисленных в wiki http://wiki.python.org/moin/PythonInMusic.
Я обнаружил, что тот, что music21 (http://web.mit.edu/music21/), был
- наиболее полный
- лучший учебник
- проще всего установить на windows
но что касается вашего запроса на простоту, я думаю, что это не самый простой. Но я не мог заставить любую из других программ читать midi файлы надежным способом (у меня есть множество странных и замечательных midi файлов, которые висят вокруг)
Ответ 6
Поддержка midi (вход и выход) была добавлена в pyGame 1.9, хотя она в основном на стадии разработки и еще не очень хорошо документирована, но она работает.
Поддержка midi также разрабатывается в преемнике pyGame, pgreloaded (или pygame2).
Также обратите внимание, что хотя pyGame имеет "игру" в названии, ее использование простирается далеко за рамки дизайна игры.
Ответ 7
Посмотрите cSounds.