lang/python/ RtMidi
pip install python-rtmidi
Does work on windows (tested with anaconda3 and python 3.9)
Install with
python -m pip install python-rtmidi
Simple midi input logger
from rtmidi import MidiIn
from time import sleep
midiin = MidiIn()
for i,x in enumerate(midiin.get_ports()):
if "M32" in x:
n = i
break
else:
print(f"Couldn't find M32 port")
def cb(e,x):
data,t = e
print(data,t)
midiin.set_callback(cb)
midiin.open_port(n)
try:
while True:
sleep(1)
except KeyboardInterrupt:
exit(0)
pip install rtmidi
Does not work on Windows
Install with
python -m pip install rtmidi
Simple Midi Input
Interactive transcript
>>> from rtmidi import *
>>> midiin = RtMidiIn()
>>> midiin.
midiin.LINUX_ALSA midiin.cancelCallback( midiin.isPortOpen(
midiin.MACOSX_CORE midiin.closePort( midiin.openPort(
midiin.RTMIDI_DUMMY midiin.getMessage( midiin.openVirtualPort(
midiin.UNIX_JACK midiin.getPortCount( midiin.setCallback(
midiin.UNSPECIFIED midiin.getPortName(
midiin.WINDOWS_MM midiin.ignoreTypes(
>>> midiin.getPortCount()
4
>>> n = midiin.getPortCount()
>>> for i in range(n):
... print(midiin.getPortName(i))
...
loop a
loop b
KOMPLETE KONTROL M32
Komplete Kontrol M DAW
>>> midiin.openPort(2)
>>> def f(*xs,**kw):
... print(xs,kw)
and then press keys. So
from rtmidi import RtMidiIn
pat = "M32"
midiin = RtMidiIn()
for i in range(midiin.getPortCount()):
name = midiin.getPortName(name)
if pat in name:
midiin.openPort(i)
break
else:
print(f"Didn't find port with name containing {pat}")
exit(1)
def cb(*xs,**kw):
print(xs,kw)
midiin.setCallback(cb)
# and then press keys and turn knobs