我从 osa Electronics 买了这个: https ://www.osaelectronics.com/product/midi-board-for-raspberry-pi/
我按照此处的说明进行了设置: https ://www.osaelectronics.com/learn/setting-up-raspberry-pi-for-midi/
按照设置并在命令行中运行它后:
python
import mido
mido.get_output_names()
它输出这似乎是正确的:
['Midi Through:Midi Through Port-0 14:0', 'f_midi:f_midi 24:0']
以及当我从命令行运行它时:
amidi -l
输出这个:
Dir Device Name
IO hw:2,0 f_midi
但是,当我从他们的 webapge 运行一些测试应用程序时,我没有得到任何输入或输出。像这个:
import mido
from mido import MidiFile
from mido import MetaMessage
port = mido.open_output('f_midi')
mid = MidiFile('mymidifile.mid')
while True:
for msg in MidiFile('mymidifile.mid').play():
port.send(msg)
或从这个(我试图打印味精,但它甚至不会打印它。所以似乎没有进入while循环但没有错误消息)
import mido
import pigpio
from numpy import interp
pi1 = pigpio.pi()
port = mido.open_input('f_midi') # open USB port
while True:
try: # This filters out all non-note data
for msg in port.iter_pending(): # if there is a message pending
print(msg)
if(msg.type == 'note_on'): # if it is Note On message
out = interp(msg.velocity, [0, 127], [0, 255])
#scale velocity from 0-127 to 0-255
# filter the data by note number
if(msg.note == 53):
pi1.set_PWM_dutycycle(2, out)
elif(msg.note == 55):
pi1.set_PWM_dutycycle(3, out)
elif(msg.note == 57):
pi1.set_PWM_dutycycle(4, out)
else: # if the message is not Note On (e.g. Note Off)
if(msg.note == 53):
pi1.set_PWM_dutycycle(2, 0)
elif(msg.note == 55):
pi1.set_PWM_dutycycle(3, 0)
elif(msg.note == 57):
pi1.set_PWM_dutycycle(4, 0)
except AttributeError as error:
print("Error excepted")
pass
我注意到 pigpio 守护程序存在一些问题在我从这个页面下载并安装后:http: //abyz.me.uk/rpi/pigpio/download.html
然后尝试使用以下命令启动守护进程:
sudo pigpiod
我收到此错误消息:
绑定到端口 8888 失败(地址已在使用中)无法初始化 pigpio 库
但是我也一直在命令行中运行这个:
aplaymidi -p f_midi myMidiTune.mid
没有错误信息,但我的数码钢琴没有 midi 输出...
我该如何调试呢?