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

StackOverflow https://stackoverflow.com/questions/569321

  •  05-09-2019
  •  | 
  •  

Вопрос

Я хочу создать небольшое приложение, которое создает 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top