Files
virtual-controller/app-desktop-macos/midi_ports.py
T
Paul Lipscomb 7ecc718f5d Reorganize top-level directories with clearer naming convention
app -> app-desktop-macos, presets -> app-presets, server -> remote-server,
daw-config-reaper -> osc-config-daw, plugin-reaper-realearn -> plugin-reaper-relearn.
Updated run.py and presets.py path references accordingly.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-15 17:51:05 -04:00

33 lines
929 B
Python

import rtmidi
def get_available_input_ports():
"""Returns list of (display_name, original_index, available) for all ports."""
try:
all_ports = rtmidi.MidiIn().get_ports()
except:
return []
result = []
for i, name in enumerate(all_ports):
try:
test = rtmidi.MidiIn()
test.open_port(i)
test.close_port()
del test
result.append((name, i, True))
except:
print(f"Port in use, skipping: {name}")
result.append((f"{name} [in use by another program]", i, False))
return result
def open_midi_input_port(original_index, callback):
midi_in = rtmidi.MidiIn()
midi_in.open_port(original_index)
midi_in.set_callback(callback)
return midi_in
def close_midi_input_port(midi_in):
if midi_in and midi_in.is_port_open():
midi_in.close_port()