2016-07-03 10 views
3

Pythonのrtmidiをインストールしてインポートできました。私はここに与えられた全体の使用例実行しようとしたとき、しかし:PythonのAttributeError-rtmidiサンプルコード

はAttributeError:https://pypi.python.org/pypi/python-rtmidiを、私はこのエラーを得た「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を使用しています。どんな助けもありがとう、ありがとう!

答えて

2

問題が発生する理由は、python-rtmidiのサンプルコードを実行していますが、rtmidi-pythonをインストールしているためです。私はあなたがいない、これらはほとんど同じインターフェイスで同じことを行う2つの別々のライブラリです。それはナッツです!あなたが実行して正しいライブラリをインストールすることができます

  1. :あなたは、2つのオプションがあり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属性を参照するだけです。

関連する問題