掌控板 + Blynk + haodaMIDI,一個人就是一支樂隊!

視頻封面

怎麼也沒想到,我,一個五音不全、樂理不通的人,有一天會來分享音樂相關的作品。還不是因爲疫情隔離期間,家裏沒啥動靜,實在太無聊了,總想搞點聲音出來!

問號臉

所以就想到了 haodaMIDI 模塊。haodaMIDI 模塊可以接入各種控制器控制如 micro:bit、掌控板、好搭酷、Arduino、徽章板等。haodaMIDI 模塊帶耳放,可以接耳機播放。硬音源帶 128 種樂器音色,60 餘種打擊樂器,可以圖形化編程,控制簡單,完全可以製作各種電聲樂器,或自動演奏樂器,相當於一支樂隊。

就是它

由於 haodaMIDI 能演奏的樂器和音色實在是太多了,而我又不懂音樂,但是卻硬想要漲漲知識裝裝逼、聽聽看每種樂器的效果。這可怎麼辦纔好呢?如果用編程的方式將每一個音色去試一遍,每試一個音色,就要重新編程,然後重新上傳程序,那豈不是太麻煩了,估計就算花幾天時間,都試不過來。相信大家也碰到過類似的問題,製作 MIDI 作品時,到底用哪個音色呢?怎麼測試呢?有沒有簡單方便的測試辦法呢?

給我安排

當然有!這時候 Blynk 就派上用場了。我們可以用 Blynk 做一個萬能 MIDI 試音器,想要知道不同音色聽起來是什麼效果,直接在 Blynk 裏面簡單設置一下就行了。

Blynk 不需要任何實體按鍵,只要一個手機,想要多少按鍵,就可以設置多少按鍵,接線簡單,成本低廉。再配合 haodaMIDI 模塊,不要說萬能 MIDI 試音器了,一個人組一支樂隊完全都沒有問題!不信?你看:

https://www.bilibili.com/video/av93517194/

是不是很羨慕?也想擁有一支自己的樂隊?那就繼續往下看吧,手把手教你自制樂隊!

電路連接

這裏我們使用掌控板來編程,因爲掌控板同時支持 Wi-Fi 和藍牙,可以任選一種方式和 Blynk 進行連接。haodaMIDI 接在掌控板 P0 引腳。當然我們接線的時候,需要通過擴展板,這裏畫圖偷懶了一下,把擴展板省略了。音箱或者耳機可以直接與 haodaMIDI 的耳機口連接。電路連接效果如下圖所示:

電路圖

這個電路相當簡單,這裏就不多做介紹了,相信你分分鐘就搞定了。

Blynk 項目設置

設置完電路,接着進行 Blynk App 設置。

在 Blynk App 中新建一個項目,取名就叫“MIDI 樂隊”。然後拖入一個 Tabs 模塊,方便設置多個界面。分別給這些 Tab 命名爲“旋律”、“打擊樂”、“MORE”等,你也可以根據自己的需求,設置更多的 Tab,這樣可以讓項目更加完善。

首先我們在“旋律”分欄中設置如下界面,可以大概設置成類似鋼琴按鍵的樣子。由於 Blynk 模塊位置拖動的限制,鋼琴黑鍵不能放在兩個白鍵之間,所以只能放在白鍵的邊上。然後用兩個 Step V 模塊,分別設置音階音色調節按鍵,其中音階的調節範圍是:-19,;音色的調節範圍是:0127。然後再拖入一個 Vertical Slider 模塊,用來調節音量,這裏我將音量的調節範圍設置爲:0~100。所有模塊的虛擬引腳設置如下左圖所示,運行後每個按鍵顯示的音符標號如下右圖所示。

旋律設置

在“打擊樂”分欄中,拖入一些 Button 模塊,用來設置並模擬各種打擊樂。根據自己的喜好設置自己想要的打擊樂即可。每個按鍵的虛擬引腳編號和代表的樂器如下圖所示。

打擊樂設置

關於 Blynk 更多詳細的教程,這裏不再展開,感興趣的朋友,可以去購買筆者和裘炯濤老師一起寫的書《物聯網,So Easy》。

本書是基於 Blynk 物聯網平臺而寫的,書中用到了 Arduino 代碼和 Mixly 圖形化編程兩種模式來進行教學,在原理與使用方法上與 Mind+ 版的 Blynk 基本一致,讀者可以參考學習。

封面

程序編寫

接下來開始編寫程序,這次我們採用 Mind+ 圖形化軟件來進行編程。

添加模塊

在編程時,我們主要用到兩個庫:BlynkhaodaMIDI 音樂模塊。由於這兩個庫不是 Mind+ 的內置庫,所以我們需要手動添加。

打開 Mind+ 軟件,添加完主控板之後,在用戶庫中搜索“鐵熊”或者“Blynk”,即可添加 Blynk 模塊。沒錯,這裏透露一個小技巧,Mind+ 用戶庫支持搜索了。

關於 Mind+ 中 Blynk 模塊的更多介紹,請跳轉:Blynk擴展庫正式發佈!Mind+軟件中也能愉快地使用Blynk物聯網平臺了!

搜索blynk

添加完 Blynk 模塊之後,再來添加 haodaMIDI 模塊,在搜索欄中輸入網址:https://gitee.com/liliang9693/ext-haodamidi ,即可看到 haodaMIDI 音樂模塊,點擊添加即可。haodaMID 模塊,暫時還不支持搜索,不過後面應該會支持。關於 haodaMIDI 編程模塊的更多介紹,也可以跳轉上述網址查看介紹。

添加haodaMIDI

添加完兩個模塊之後,就可以開始愉快的編程啦。其實程序很簡單,我這裏將它們分成 4 個部分。

主程序部分

首先是主程序部分。在主程序中,我們設置了幾個變量:音量、音階、音色,方便後面進行動態調節。然後初始化 haodaMIDI 和 Blynk 服務。

主程序

設置部分

然後是設置部分。在設置部分中,我們可以動態從 Blynk App 中接收狀態變化,去調節音量(0100)、音階(-19)、音色(0~127)等。音量比較好理解,音階其實代表的聲音是低沉還是尖銳,音色代表的其實就是不同的樂器。具體不同的編號分別代表哪種樂器,可以在文末附錄查詢。這裏通過改變音色的數值,就可以方便的改變想要使用的樂器了。

初始化設置

音符旋律部分

接着是音符旋律樂部分,也就是對應我們 Blynk App 中設置的鋼琴按鍵,這些按鍵包括:C、C#、D、D#、E、F、F#、G、G#、A、A#、B,總共 12 個音符,這些音符再配合 10 個音階,每種樂器都可以發出 120 種聲音。然後再配合上面的 128 種音色設置,所以這部分總共可以發出 120×128=15360 種聲音,Amazing!通過變量的方式,我們用很短的幾句程序,竟然可以實現那麼多種聲音!這也充分說明了合理使用變量,可以大大簡化程序。

鋼琴部分

這裏放一張 MIDI 音符代碼表,大家可以看一下音符(CB)、音階(-19)與對應代碼(0~127)的關係。實際上程序底層就是根據音符和音階,向 haodaMIDI 模塊發送對應的代碼 0~127。

MIDI音符代表表

打擊樂器部分

最後是打擊樂器部分。爲什麼要把打擊樂與前面的樂器分開呢?

這是因爲打擊樂是不需要設置音階和音符的,每種打擊樂器只能發出一種聲音,比如我們熟悉的鼓可以發出“咚咚咚”的聲音,鑼可以發出“乓乓乓”的聲音。打擊樂的編程如下圖所示,這裏我偷懶一下,只挑選了部分打擊樂器,沒有想上面一樣,把所有的打擊樂器都包含在內,實際上是可以包含所有打擊樂器的。

打擊樂部分

至此,完整的程序就編寫完整了。

音樂就是要分享

前面的部分,我們已經完成了所有硬件和軟件的設置,那麼視頻中看到的多人多臺設備演奏是怎麼實現的呢?

其實很簡單,只要在 Blynk 項目設置中,將 SHARED ACCESS 設置打開,然後點擊 Generate Link 就會生成一個二維碼,別的夥伴只要打開他的 Blynk App 掃描這個二維碼,就會在他的手機中出現這個項目。當你對項目改動之後,別的手機上也會自動同步。

share

這時,你們就可以在不同的分欄裏同時演奏不同的樂器啦,當然你們也可以在同一個分欄裏演奏同一個樂器。另外,你也可以根據你的樂隊需要,在不同的分欄裏設置不同的樂器,硬件端幾乎不用改變,程序也幾乎不用變化,只要在手機裏簡單設置一下,你的樂隊屬性馬上發生變化!流行樂?搖滾風?金屬感?朋克?一切都可以隨心而動!

Let’s rock!!!

附錄:音色編碼對照表

這裏還是偷懶惹的鍋,其實在 Blynk App 中可以設置音色顯示對應的樂器名稱的,但是懶得打字了,所以就放一張對照表方便查詢吧。

音色對應表

程序下載

歡迎關注本賬號:鐵熊玩創客,不定期更新創客製作、技術教程、創客教育等相關內容。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章