Hi,
When working on my hobby project, a Raspberr-Pi based wireless foot
switch for my VOX Adio Air GT guitar amplifier, I hit, once again, the
same problem: there is not good Python library for use with ALSA MIDI
sequencer.
Those that can be found on PyPI are either very outdated an
unmaintained, useless with modern Python 3.x, or they use one of the
portable MIDI libraries (PortMidi or RtMidi) and lack much of the ALSA
sequencer API functionality – useless for my use case, where the MIDI
port may appear and disappear at any time.
Last time, with another project, I wrote my own limited bindings. This
time I had no urge to code any C any more. I decided to use cffi this
time and, instead of making limited set of bindings for the one use
case, to make a proper Python package.
And here it is:
https://github.com/Jajcus/python-alsa-midi/
https://python-alsa-midi.readthedocs.io/
https://pypi.org/project/alsa-midi/
The project should work on any Linux distribution and architecture
(provided ALSA kernel module and library is available), on Python 3.7 to
3.10. Asynchronous asyncio API is also provided.
The API is not complete yet – some ALSA sequencer API functions are not
covered or not fully covered, but I think it is complete-enough for most
use cases.
I am thinking about adding raw MIDI API too, just for the completeness,
so the package name is not confusing.
Now it is great time to evaluate the new API, as I would like to make a
1.0.0 release soon and then I would rather not do any
backward-incompatible changes.
I hope someone will find this code useful.
Greets,
Jacek