【问题标题】:Send MIDI data via port on MacOS to Digital Piano通过 MacOS 上的端口将 MIDI 数据发送到数码钢琴
【发布时间】:2021-04-06 14:06:50
【问题描述】:

我想通过端口从我的计算机(运行 MacOS)将 MIDI 数据发送到我的数码钢琴。 我希望能够播放 MIDI 文件,在特定时长内播放特定音符,并可能更换乐器。

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

我正在使用 USB-to-Host 来发送数据 --> 不确定这是否意味着什么。

【问题讨论】:

标签: python python-3.x midi


【解决方案1】:

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

搜索“Python MIDI”会显示此 repo python-midi

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

【讨论】:

  • 不幸的是,这不是我想要的,因为它不能通过端口播放。
【解决方案2】:

手动使用 Garageband:

  1. 将数码钢琴连接到计算机 (MacOS) 并打开两者。
  2. 使用 Garageband 打开 MIDI 文件,MacOS 设备上通常提供该文件。
  3. 然后转到 Gargageband->Preferences->'Audio/Midi'->'Output Device' 下拉菜单
  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 Driver Bus 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

【讨论】:

  • 鉴于这是一个以编程为中心的网站,我严重怀疑 OP 是否可以接受非编程方法
猜你喜欢
  • 2010-12-01
  • 2012-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多