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