【问题标题】:RaspberryPi virtual MIDI cable树莓派虚拟 MIDI 线
【发布时间】:2018-11-15 01:50:10
【问题描述】:

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

我知道必须有一种方法可以使用 alsa 或 PI 上的其他通用系统创建虚拟端口,但我只是无法找到该特定信息/说明。

【问题讨论】:

  • Raspbian 是否包含snd-seq-dummy 模块和aconnect 工具?
  • 它确实包括aconnect,但不包括另一个。
  • 是否有snd-seq*/dev/snd/seq 模块?

标签: raspberry-pi port raspbian midi


【解决方案1】:

您可以为此使用Jack。安装后,在终端中启动 Jack:

jack_control start

一个 Python 示例(需要 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 程序发送到另一个程序,并从 jack:midi_in 端口在另一个 MIDI 程序中读取这些 MIDI 消息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-04
    • 1970-01-01
    • 2013-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多