首页 > 评测 > 让音乐播放更简单——Adafruit Music Maker FeatherWing和Audio FX Sound Board评测

让音乐播放更简单——Adafruit Music Maker FeatherWing和Audio FX Sound Board评测

Adafruit    Audio   音频    Feather    MP3    OGG    播放器    解码   
  • 作者:邵楠
  • 来源:21ic
  • [导读]
  • 本文介绍的两款模块都很小巧,但功能强大,一款是高集成度的OGG播放器方案,另一款是大家都熟悉MP3解码方案。此次评测的是Adafruit的两块板子:Audio FX Sound Board & Music Maker FeatherWing w/Amp

用VS1053做MP3的例子非常多,而我这里选择另一方面的应用:MIDI模式。这个模块要使用MIDI模式,需要把PCB背面的跳线焊盘短路。模块需要两组电源5V和3V,分别供电给功放和VS1053。我这里从一个开发板上取电。功放输出外接两个无源小音箱(TB拆机件)。这里选择用电脑串口发送指令,USB转串口模块是必须的,强烈建议使用FT232,其他的像PL2303不一定正常。因为都是从USB取电,所以这里串口模块仅连接一根线。

这里参考了Adafruit的Arduino代码,用Python实现同样的功能,实现了这几个函数:

标题图片.jpg

初始化函数(注意这里设置了两个通道,使用不同的乐器,在播放《献给爱丽丝》的时候使用两种乐器轮流演奏)

def vs1053_midi_setup(com_name,timeout=0.5):

ser=serial.Serial(com_name,31250,timeout=timeout)#31250

ser.open

print(ser.name+' is opened!')

midiSetChannelBank(ser,0, VS1053_BANK_MELODY)

midiSetChannelVolume(ser,0, 127)

instrument = VS1053_GM1_Acoustic_Grand_Piano

#instrument = random.randint(1,128)

midiSetInstrument(ser,0, instrument)

print("Set Instrument1: %u"%instrument)

instrument = VS1053_GM1_Acoustic_Guita

midiSetInstrument(ser,1, instrument)

print("Set Instrument2: %u"%instrument)

print('Ready!')

return ser

设置通道的乐器

def midiSetInstrument(ser, chan, inst):

if chan>15:

return -1

inst=inst-1 #page 32 has instruments starting with 1 not 0 :(

if inst>127:

return -1

ser.write([MIDI_CHAN_PROGRAM | chan])

time.sleep(1)

ser.write([inst])

time.sleep(1)

return 0

  • 本文系21ic原创,未经许可禁止转载!

网友评论