步驟1:MXL文件
我發(fā)現(xiàn)的MXL文件最佳來源是musescore.com,大量的收藏用戶提交了樂譜增強(qiáng)音樂。 MXL文件是壓縮的xml文件,其中包含語音,樂器,音符和持續(xù)時(shí)間定義。我下載了Riley Apperson的這個(gè)版本的Stranger Things主題曲。
可以下載許多音樂格式,但是MXL包含轉(zhuǎn)換為Arduino可以播放的音樂所需的信息。
上面的圖片2顯示了以PK開頭的內(nèi)容,這是文件被PK Zip壓縮后的立即泄漏。
圖片3是未壓縮的相同文件,包含標(biāo)準(zhǔn)XML格式。
步驟2:MXL文件數(shù)據(jù)
在數(shù)據(jù)中有幾件事情要看。請記住,我們必須使音符和整體歌曲保持簡單,因?yàn)闆]有比Arduino更強(qiáng)大的功能或其他一些技巧,我們一次只能演奏一個(gè)音符。
音符步驟-E
音符八度音階-3
持續(xù)時(shí)間-1ms ish
聲音-語音將在彼此之上分層疊加。您可能需要找到歌曲的簡單版本,或者挑選出想要的每種聲音的哪個(gè)部分。
我獲取了此信息,使用C#進(jìn)行了解析并將其放入arduino代碼中
步驟3:Arduino代碼
從MXL文件中解析數(shù)據(jù)之后,我將其放入arduino代碼中。必須播放持續(xù)時(shí)間才能使歌曲以您的感覺呈現(xiàn)出來。您可以找到我在GitHub上編寫的Arduino代碼。
int notes [] = {NOTE_C3,NOTE_E3,NOTE_G3,NOTE_B3,NOTE_C4
int持續(xù)時(shí)間[] = {750、750, 750、750、750
現(xiàn)在看來,我看到多維數(shù)組會更有效。音符和持續(xù)時(shí)間相對應(yīng),因此,如果有5個(gè)音符,則應(yīng)該有5個(gè)持續(xù)時(shí)間。
每個(gè)音符都定義為一個(gè)音調(diào)
#define NOTE_B0 31
#define NOTE_C1 33
#define NOTE_CS1 35
#define NOTE_D1 37
然后循環(huán)遍歷數(shù)組中的每個(gè)音符,然后使用上面顯示的音符定義進(jìn)行播放。
tone(8,notes [thisNote],noteDuration);
請注意,Arduino Uno有文件大小限制,因此必須縮短注釋量以達(dá)到該限制。我編寫的應(yīng)用程序有一個(gè)音符限制器,可以更改它以滿足您的需求。
步驟4:C#
我編寫了一個(gè)用C#編寫的小型應(yīng)用程序以解壓縮MXL,解析出音樂數(shù)據(jù),然后將arduino格式輸出到文本區(qū)域。該應(yīng)用程序的源代碼位于GitHub上。
請注意,Arduino Uno有文件大小限制,因此必須縮短注釋量才能達(dá)到該限制。我編寫的應(yīng)用程序具有一個(gè)音符限制器,可以對其進(jìn)行更改以滿足您的需求。
第5步:Arduino接線
這非常簡單。我只是使用了對講機(jī)中的壓電體,然后將“正極”(紅色)連接到引腳8,將“負(fù)極”(黑色)連接到地面。
步驟6:音頻預(yù)覽
這是arduino產(chǎn)生的音頻的預(yù)覽。
步驟7:文件
所有需要的文件都在GitHub上https://github .com/MrRedBeard/DotNet-MXL-Parsing-for-Arduino
只需在此處下載MXL Parser。
Arduino代碼在一個(gè)文件中,但需要在第50行上分為2。audio.ino和pitches.h。也可以從GitHub上獲取該代碼。
Rangerley Apperson在musescore.com上提供的Stranger Things主題曲MXL示例文件
步驟8:應(yīng)用程序的未來
首先,我要說的是我不介意幫助他人進(jìn)行他們的項(xiàng)目,但是就應(yīng)用程序而言,除非有其他項(xiàng)目出現(xiàn),否則我不打算對它做太多其他事情。話雖如此,如果其他人想貢獻(xiàn)和/或與之合作,我將很樂意加入并竭盡所能。
如果您想做出貢獻(xiàn),請?jiān)L問GitHub https://github.com/MrRedBeard/DotNet-MXL-Parsing-for-Arduino并開始使用。向我發(fā)送消息或只是開始將代碼發(fā)布到新分支,其中包含您所做的更改的詳細(xì)信息。
責(zé)任編輯:wv
-
Arduino
+關(guān)注
關(guān)注
190文章
6498瀏覽量
192187
發(fā)布評論請先 登錄
【開源獲獎案例】基于T5L智能屏的音樂播放與歌詞顯示方案

STM32開發(fā)板一般都會配置arduino接口,是不是基本上也都會支持arduino?
AI助力實(shí)時(shí)翻譯耳機(jī)

HAL庫在Arduino平臺上的使用
HarmonyOS NEXT應(yīng)用元服務(wù)開發(fā)Intents Kit(意圖框架服務(wù))本地搜索方案概述
TPA6130A2的寄存器配置正常,也可以正常播放歌曲,但是負(fù)壓只有-2.7左右,為什么?
TAS5731M播放特定歌曲會立馬打嗝,怎么解決?
TPA3116的輸入端,可以播放音質(zhì)很差,關(guān)閉電源再次上電就怎么都沒法播放了,怎么解決?
AM335x接TLV320AIC3104然后接外置揚(yáng)聲器,播放歌曲時(shí)沒有聲音輸出是怎么回事?
開源項(xiàng)目!基于Arduino做的“魷魚游戲”BOSS面具,支持動作檢測
變速播放器1和2的區(qū)別
TM4C12x MCU上的數(shù)字音頻播放

評論