PythonBarCamp2010
Python und MIDI

Python und MIDI (ALSA, pygame/PortMidi)

Author

ChristopherArndt

Zusammenfassung

Die MIDI-Unterstützung unter Python war in der Vergangheit mehr schlecht als recht. Es gibt zwar einige Libraries und Tools (siehe Python Wiki) aber viele sind nur teilweise fertig und/oder werden nicht mehr weiterentwicklet. Außerdem sind die MIDI/Audio-Frameworks der verbreitetsten Plattformen (Linux, OS X, Windows) nicht unmittelbar miteinander kompatibel und es fehlte eine Python-Library zur plattform-übergreifenden MIDI-Programmierung. Ein solche ist mit PortMidi nun seit einiger Zeit vorhanden und es gibt sogar mehrere Python-Bindungs dafür. Diese Library unter allen Plattformen erfolgreich zu kompilieren war allerdings nicht ganz leicht. Seit Version 1.9 beinhaltet die Python Multimedia-Library PyGame ein Binding für die PortMidi-Library und diese ist dadurch nun viel einfacher zu installieren und zu nutzen. Damit braucht sich der Python-Programmierer nicht mehr um die Low-Leveldetails der MIDI-Schnittstelle kümmern und kann lustig drauf los hacken um MIDI-Daten zu empfangen, zu verwursten und zu versenden.

SVN Repository

svn co svn://svn.chrisarndt.de/talks/pybarcamp

Enthält zwei PyGame MIDI Testskripte, einen 4Mb GM-Soundfont und ein Shellskript zum Starten von fluidsynth.

Was braucht man?

Linux

Hilfreich:

Windows

Hilfreich:

MIDI Setup unter Linux

MIDI Geräte anzeigen (Paket alsa-utils installieren):

amidi -l

Verfügbare ALSA Sequenzer-Ports anzeigen:

aplaymidi -l

(nur Output-Ports) oder:

aconnect -io

Sequenzer-Ports verbinden:

aconnect 128:0 129:0 

wobei 128:0 Beispiel für den Input-Port (d.h. über den Daten rein kommen!) und 129:0 für den Output-Port ist.

PyGame Installation

Windows

Linux & Co

Entwder Paket python-pygame >= 1.9.1 installieren, falls Version nicht vorhanden via easy_install selbst kompilieren.

Voraussetzungen:

Pakete build-essentials, python, python-dev, libsdl-dev, libsdl-image-dev, libpm-dev und weitere, die nach dem configure-Schritt der Installation angezeigt werden.

Dann:

easy_install virtualenv
virtualenv --no-site-packages venv
source venv/bin/activate
easy_install pygame

MIDI Dokumentation:

Python MIDI Libraries:

Python Bindings für das ALSA Sequencer Interface (Auswahl):

ALSA Libary API Referenz:

Programme:

Windows:

Linux:

Sonstiges:

PythonBarCamp2010/Python und MIDI (last edited 2010-11-18 13:59:07 by ReimarBauer)