我需要在运行Raspbian的Raspberry Pi 3上用虚拟MIDI电缆(或端口)连接两个MIDI程序,就像loopMIDI在Windows上所做的那样。(https://www.tobias-erichsen.de/software/loopmidi.html)
我知道一定有一种方法可以使用alsa或PI上的其他通用系统来创建虚拟端口,但我一直无法找到特定的信息/指令。
发布于 2018-11-15 01:50:11
您可以使用Jack来实现这一点。安装完成后,使用以下命令在终端中启动Jack:
jack_control startPython示例(需要JACKClient):
import jack
midiInBuffer = []
midiOutBuffer = []
client = jack.Client('jack')
midi_in = client.midi_inports.register('midi_in)
midi_out = client.midi_outports.register('midi_out')
@client.set_process_callback
def process(frames):
midi_out.clear_buffer()
if (len(midiOutBuffer)):
for msg in midiOutBuffer:
midi_out.write_midi_event(0, msg)
print('MIDI sent = ', msg)
midiOutBuffer.clear()
for offset, data in midi_in.incoming_midi_events():
msg = struct.unpack('3B', data)
midiInBuffer.append(msg)
print('MIDI rcvd = ', msg)
client.activate()
print(client.midi_inports)
print(client.midi_outports)
# forward all incoming messages from midi_in to midi_out
while True:
for msg in midiInBuffer
midiOutBuffer.append(msg)
print('MIDI fwd = ', msg)
midiInBuffer.clear()现在使用jack:midi_out端口将MIDI消息从一个MIDI程序发送到另一个MIDI程序,并从jack:midi_in端口读取另一个MIDI程序中的这些MIDI消息。
https://stackoverflow.com/questions/46285612
复制相似问题