首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RaspberryPi虚拟MIDI电缆

RaspberryPi虚拟MIDI电缆
EN

Stack Overflow用户
提问于 2017-09-19 02:05:39
回答 1查看 707关注 0票数 1

我需要在运行Raspbian的Raspberry Pi 3上用虚拟MIDI电缆(或端口)连接两个MIDI程序,就像loopMIDI在Windows上所做的那样。(https://www.tobias-erichsen.de/software/loopmidi.html)

我知道一定有一种方法可以使用alsa或PI上的其他通用系统来创建虚拟端口,但我一直无法找到特定的信息/指令。

EN

回答 1

Stack Overflow用户

发布于 2018-11-15 01:50:11

您可以使用Jack来实现这一点。安装完成后,使用以下命令在终端中启动Jack:

代码语言:javascript
复制
jack_control start

Python示例(需要JACKClient):

代码语言:javascript
复制
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消息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46285612

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档