Подтвердить что ты не робот

Простая, кроссплатформенная MIDI-библиотека для Python

Я хочу создать небольшое приложение, создающее MIDI-звуки. Я никогда не занимался звуком в программировании, поэтому я хотел бы начать с чего-то основного и иметь хорошую документацию. Я хочу придерживаться Python, так как я с ним максимально комфортен и не хочу себя перегружать, изначально.

Мое время разбивается на 50/50 между Windows и Ubuntu, поэтому очень полезно что-то, что "просто работает" на обеих платформах.

Любые предложения?

4b9b3361

Ответ 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.