通过MacOS上的端口将MIDI数据发送到Digital Piano



我想通过端口将midi数据从我的计算机(运行MacOS(发送到我的数字钢琴。我希望能够演奏midi文件,在一定的持续时间内演奏某些音符,并可能更换乐器。

我真的不知道如何实现这一点,也无法在网上找到任何资源。请提供您的解决方案的代码,因为这将大大有帮助。

我正在使用USB到主机,以发送数据->不确定这是否意味着什么。

使用Garageband手动:

  1. 将数字钢琴连接到计算机(MacOS(并打开两者
  2. 使用Garageband打开midi文件,该文件通常在MacOS设备上可用
  3. 然后转到Gargageband->首选项->'音频/迷笛'->'输出设备下拉列表
  4. 如果电脑识别出数字钢琴,则应将其列在下拉列表中。选择它
  5. 单击Garageband上的"播放"图标。midi文件应该与数字钢琴的输出混合播放

使用Mido编程:

  1. 将数字钢琴连接到计算机(MacOS(并打开两者。

  2. 安装mido-python包
    pip install mido

  3. 获取mido可识别的midi端口列表:
    python -c "import mido; print(mido.get_output_names())"

    输出应该类似于:
    ['Digital Keyboard', 'IAC Driver Bus 1']

    在本例中,"数字键盘"就是您的键盘
    您实际的键盘可能有不同的名称
    注意:"IAC驱动程序总线1"是一个标准的MacOS midi输出端口。

  4. 通过将"数字键盘"更改为mido在#3中显示的键盘名称,更新以下play-midi.py脚本。将*.mid文件更新为*.mid的文件名。

import mido
# This will list the available ports 
print(mido.get_output_names())
# Open the midi link to your keyboard
outport = mido.open_output('Digital Keyboard')
# Open the mid file to be played
mid = mido.MidiFile('my_midi_file.mid', clip=True)
# Play the file out to your keyboard
for msg in mid.play():
outport.send(msg)
  1. 运行脚本。声音应该在键盘外播放

Mido参考资源:

https://github.com/mido/mido
https://mido.readthedocs.io/en/latest/midi_files.html

不确定这是否是一个不错的堆栈溢出问题。互联网上有很多关于MIDI的资源。

搜索"Python MIDI"会显示这个repo Python MIDI。

如果你阅读自述,它似乎可以做你想做的事。

最新更新