首頁 > 評測 > 讓音樂播放更簡單——Adafruit Music Maker FeatherWing和Audio FX Sound Board評測

讓音樂播放更簡單——Adafruit Music Maker FeatherWing和Audio FX Sound Board評測

Adafruit    Audio   音頻    Feather    MP3    OGG    播放器    解碼   
  • 作者:邵楠
  • 來源:21ic
  • [導(dǎo)讀]
  • 本文介紹的兩款模塊都很小巧,但功能強(qiáng)大,一款是高集成度的OGG播放器方案,另一款是大家都熟悉MP3解碼方案。此次評測的是Adafruit的兩塊板子:Audio FX Sound Board & Music Maker FeatherWing w/Amp

用VS1053做MP3的例子非常多,而我這里選擇另一方面的應(yīng)用:MIDI模式。這個(gè)模塊要使用MIDI模式,需要把PCB背面的跳線焊盤短路。模塊需要兩組電源5V和3V,分別供電給功放和VS1053。我這里從一個(gè)開發(fā)板上取電。功放輸出外接兩個(gè)無源小音箱(TB拆機(jī)件)。這里選擇用電腦串口發(fā)送指令,USB轉(zhuǎn)串口模塊是必須的,強(qiáng)烈建議使用FT232,其他的像PL2303不一定正常。因?yàn)槎际菑腢SB取電,所以這里串口模塊僅連接一根線。

這里參考了Adafruit的Arduino代碼,用Python實(shí)現(xiàn)同樣的功能,實(shí)現(xiàn)了這幾個(gè)函數(shù):

標(biāo)題圖片.jpg

初始化函數(shù)(注意這里設(shè)置了兩個(gè)通道,使用不同的樂器,在播放《獻(xiàn)給愛麗絲》的時(shí)候使用兩種樂器輪流演奏)

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

設(shè)置通道的樂器

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原創(chuàng),未經(jīng)許可禁止轉(zhuǎn)載!

網(wǎng)友評論

  • 聯(lián)系人:巧克力娃娃
  • 郵箱:board@21ic.com
  • 我要投稿
  • 歡迎入駐,開放投稿

熱門標(biāo)簽
項(xiàng)目外包 more+