如何解决使用用于 RPi 的 midi 板在 Raspberry Pi 上设置 midi 的问题
我从 oSAElectronics 买了这个: 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
然而,当我从他们的网页运行一些测试应用程序时,我没有得到任何输入或输出。 像这样:
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],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 失败(地址已被使用)无法初始化 小猪图书馆
但是我也一直在命令行中运行这个:
aplaymidi -p f_midi myMidiTune.mid
我该如何调试?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。