gpt4 book ai didi

python - python-rtmidi示例代码中的AttributeError

转载 作者:行者123 更新时间:2023-11-28 16:23:54 24 4
gpt4 key购买 nike

我为 python 安装了 rtmidi 并且能够导入它。但是当我尝试运行此处给出的整个用法示例时:https://pypi.python.org/pypi/python-rtmidi ,我得到了这个错误:

AttributeError: 'rtmidi_python.MidiOut' 对象没有属性 'get_ports'

完整代码如下:

import time
import rtmidi_python as rtmidi

midiout = rtmidi.MidiOut()
available_ports = midiout.get_ports()

if available_ports:
midiout.open_port(0)
else:
midiout.open_virtual_port("My virtual output")

note_on = [0x90, 60, 112] # channel 1, middle C, velocity 112
note_off = [0x80, 60, 0]
midiout.send_message(note_on)
time.sleep(0.5)
midiout.send_message(note_off)

del midiout

我在导入部分稍微修改了代码,因为不知何故,当我输入 import rtmidi 时它不起作用,但当我输入 import rtmidi_python 时它起作用。

我使用的是 Python 3.5。任何帮助将不胜感激,谢谢!

最佳答案

您遇到问题的原因是您正在运行 python-rtmidi 的示例代码, 但你安装了 rtmidi-python .我没骗你,这是两个独立的库,它们用几乎相同的界面做同样的事情。太疯狂了!您有两个选择:

  1. 您可以通过以下方式安装正确的库:pip install python-rtmidi
  2. 您可以修改您的代码,使其与 rtmidi-python 一起工作,如下所示:

    import time
    import rtmidi_python as rtmidi

    midiout = rtmidi.MidiOut()
    available_ports = midiout.ports

    if available_ports:
    midiout.open_port(0)
    else:
    midiout.open_virtual_port("My virtual output")

    note_on = [0x90, 60, 112] # channel 1, middle C, velocity 112
    note_off = [0x80, 60, 0]
    midiout.send_message(note_on)
    time.sleep(0.5)
    midiout.send_message(note_off)

    del midiout

您会看到:您无需执行 get_ports(),只需引用 ports 属性即可。

关于python - python-rtmidi示例代码中的AttributeError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38166344/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com