Простая кроссплатформенная MIDI-библиотека для Python [закрыта]
Вопрос
Я хочу создать небольшое приложение, которое создает MIDI-звуки.Я никогда не имел дела со звуком в программировании, поэтому хотел бы начать с чего-то базового и имеющего хорошую документацию.Я хочу придерживаться Python, так как мне с ним наиболее комфортно, и поначалу я не хочу перегружать себя.
Мое время разделено примерно 50/50 между Windows и Ubuntu, так что то, что "просто работает" на обеих платформах, было бы действительно полезно.
Есть какие-нибудь предложения?
Решение
Библиотека MIDIUtil (размещенная здесь в Google Code) делает то, что вы хотите:записывайте MIDI-файлы из чистой библиотеки Python.Когда-то это было приятно (и полное раскрытие:Я автор) заключается в том, что вам не нужно отслеживать промежуточные события более низкого уровня, такие как включение и выключение заметки:он обрабатывает их за вас.
В качестве примера написания заметки вы могли бы сделать что-то вроде:
MyMIDI = MIDIFile(1)
track = 0
channel = 0
pitch = 60
time = 0
duration = 1
volume = 100
MyMIDI.addNote(track,channel,pitch,time,duration,volume)
Надеюсь, это поможет
Другие советы
Я искал библиотеку на чистом Python для генерации MIDI-файла, MIDI-библиотека mxm на Python это именно так.
От этот фрагмент dzone, существует однофайловая версия вышеупомянутой библиотеки, smidi.py (суть здесь для потомков)
Использование довольно простое:
>>> 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
пиПортМиди является Python-оболочкой PortMidi, которая описывается как "кроссплатформенная библиотека C для управления MIDI в реальном времени".Я сам им не пользовался, но выглядит он очень многообещающе.Явное упоминание о возможности отправки MIDI-данных в режиме реального времени.
Если вам нужно только сгенерировать Midi или обработать midi-файлы, попробуйте мингус, Это отличный пакет, и он также позволяет создавать гораздо более высокие абстракции, такие как аккорды, последовательности аккордов, гаммы и так далее.
Я попробовал восемь пакетов, перечисленных в wiki http://wiki .python.org/moin/PythonInMusic.Я обнаружил , что тот , который music21 (http://web.mit.edu/music21/) был
- наиболее полный
- лучший учебник
- самый простой в установке на Windows
но что касается вашей просьбы о простоте, я думаю, что она не самая простая.Но я не смог заставить ни одну из других программ читать midi-файлы надежным способом (у меня есть множество странных и замечательных форматов midi-файлов).
Поддержка Midi (вход и выход) была добавлена в pyGame 1.9, хотя она в основном находится на стадии разработки и еще не очень хорошо документирована, но она работает.
Поддержка Midi также разрабатывается в преемнике pyGame, pgreloaded (или pygame2).
Также обратите внимание, что, хотя в названии pyGame есть слово "game", его использование выходит далеко за рамки просто игрового дизайна.
Посмотрите на cSounds.