Драйвер pyCoreMIDI vs PortMIDI
За основу взял Turcanator — проект для тех, кто хочет научиться играть на пианино. Michal J Wallace сделал его в 2006 году, тогда же ему понадобилось реализоваться минимум интерфейса CoreMIDI для программирования в python2.4 под MacOS X, но проект перестал развиваться.
Так как лицензия проекта BSD, берем документацию Apple CodeAudio и доделываем api модуля python так, как это нужно.
Исходный код pyCoreMIDI
Скачать можно на страничке проекта pycoremidi-google-code или сразу тут, при помощи Mercurial.
hg clone https://pycoremidi.googlecode.com/hg/trunk pycoremidi
Доделать проект понадобилось для обработки входящих сигналов с физического интерфейса MIDI и конвертирования его с дальнейшим посылом на виртуальное устройство MIDI. На данный момент в стадии доработки, но решил анонсировать сразу, чтобы учесть все пожелания и комментарии.
import pyCoreMIDI as cm
print cm.midiVirtualSystem('pyCoreMIDI', True)
print cm.midiGetNumberOfSources()
Теперь можно пользоваться собственным виртуальным устройством MIDI.
В чем запор с драйвером pyPortMIDI ?
Установка в моем случае:
$ svn co https://portmedia.svn.sourceforge.net/svnroot/portmedia/portmidi/trunk portmidi
$ cd portmidi
$ sudo make -f pm_mac/Makefile.osx install-with-xcode
- Понадобилось сделать ссылки на dylib файлы
- Используем жирненький xcode чтобы сделать libportmidi.a для OS X 10.4
- Копируем libportmidi.a and portmidi.h, porttime.h в pyPortMidi директорию с исходным кодом
- Удаляем porttime из зависимостей в setup.py
И затем долгожданный запуск
$ sudo python setup.py install
Результаты
После граблей с установкой PortMIDI при тестовом запуске прослушивающего сервиса для физического интерфеса MIDI USB мой macbook закипел =). pyCoreMIDI при этом больше похож на оригинальное решение для Mac OS X и производительность впечатляющая.


















