謝作如 張敬云
當下火遍整個創客教育圈的莫過于micro:bit了。如圖1所示,micro:bit是一個很小的可編程的微型電腦,能夠使用makecode、Mixly、Python等編程語言設計智能作品。一直期望能夠用micro:bit來識別音樂節奏,可惜micro:bit的功能太弱沒辦法實現,只能轉而希望借助于電腦的幫忙,即讓電腦識別音樂節奏,再將識別結果告訴micro:bit。這種做法其實就是在設計一款互動媒體作品。
互動媒體方面,最有名的編程軟件當屬Processing,Processing的Minim庫中有個范例程序——窗口的矩形會隨著音樂的節拍而跳動,效果圖如2所示。我們準備借助這個庫來識別音樂,然后實現micro:bit和音樂進行互動。比如,按下micro:bit的B鍵,音樂播放,按下micro:bit的A鍵,暫停播放,當音樂中有節拍時,則發送信息給micro:bit讓LED點陣屏快速閃爍心型圖像。
窗口的矩形隨著音樂的節拍而跳動的效果是由Processing的Minim庫中的“Frequency EnergyBearDetection”范例程序實現的,此程序是用頻率能量模式對音樂中的節拍進行監測,使用快速傅立葉變換(FFT)算法來獲得頻譜,然后將頻譜劃分為平均頻帶,并且獨立地監測在頻譜的不同部分發出的聲音(如底鼓、軍鼓和小擦)。簡單來說,此范例程序是對音樂的頻率進行監測,而Processing窗口中矩形的出現以及位置便是由實時監測到的頻率決定的。
那么,只要在這個范例程序中增加功能,當特定頻率出現的時候,向micro:bit發送信息,就可以達到音樂互動的目的??梢?,完成這個互動作品的關鍵在于讓micro:bit和Processing之間相互通信。
Processing支持網絡通信,通過WIFI進行互動本來是很好的方式,只是micro:bit自身不帶WIFI功能,外加無線設備又比較麻煩。幸好Processing和micro:bit都支持串口通信,二者的互動只能通過串口來實現。如果需要無線互動,則可以用一塊micro:bit作為中轉設備,多塊micro:bit作為終端同時顯示效果。
為了讓互動更加有意思一些,我們在micro:bit中加上了音樂控制功能。這個互動媒體作品的運行流程如圖3所示。
1.安裝串口驅動
micro:bit在windows中需要另外安裝Mbed串口驅動。而在Linux和Mac OS上無需安裝驅動。下面以Win7為例介紹Mbed串口驅動的安裝。首先連接micro:bit到計算機,然后雙擊Mbed串口驅動進行安裝,安裝完成后,便可通過設備管理器查看micro:bit的端口號了,如圖4所示的COM1是筆者使用的計算機中micro:bit的端口號。端口號與計算機連接過的設備有關,不同的設備端口號不同。
2.安裝Minim庫
本案例中,Processing要用到Minim庫。3.3.6版本已內置了Minim庫,我們可以從庫管理器中安裝它。通過“速寫本”—“引用庫文件”—“添加庫文件”打開管理器的Libraries選項卡,在Filter框中鍵入Minim,從列表中選擇庫,然后單擊Install(如圖5)。
安裝完成后,便可通過“文件”—“范例程序”看到添加的Minim庫(如圖6)。
1.修改Processign范例程序
范例中用Minim庫中的BeatDetect實時讀取Buffer中的數據并采集音頻頻率識別Kick(底鼓)、Snare(軍鼓)和Hi-Hat(小擦)三種鼓點。本案例的音樂互動作品便是在此范例程序的基礎上完成的。將代碼另存后開始修改范例程序,主要增加了定義串口語句、接收信息語句以及發送信息語句(加下畫線部分),以下是修改過的Processing代碼(限于篇幅,僅僅提供部分代碼,如果有需要請發郵件索取)。
Processing代碼說明:運行程序,開始播放音樂,并且Processing窗口中的矩形會隨著節拍的變化而變化,窗口上的文字KICK、SNARE、HAT也會隨著各自的鼓點大小發生變化。當檢測到Kick時,則向micro:bit發送信息K;當接收到信息為48(即數字0)時,則停止播放音樂;當接收到信息為49(即數字1)時,則繼續播放音樂(如下頁表1)。
2.編寫micro:bit代碼
當micro:bit接收到信息K時,則LED顯示圖像;當按下A鍵時,則向Processing發送信息0;當按下B鍵時,則向Processing發送信息1。下頁表2為micro:bit代碼。
運行程序,其測試效果如下頁圖8所示。隨著音樂的律動,電腦的畫面和micro:bit的LED屏幕也跟著閃爍,感覺很酷。因為手頭的micro:bit不夠,筆者沒有測試多塊micro:bit一起無線互動的效果,但理論上是沒有問題的。實現無線也很簡單,只要在代碼中加一句發送,其他的板子接收并且判斷這一信息即可。
和音樂互動的方式很多,這個互動媒體作品還有很多地方可以改良:①micro:bit的A、B鍵控制背景切換;②micro:bit的LED陣列屏朝上控制音樂播放,LED陣列屏朝下暫停播放;③用micro:bit的A鍵控制下一首音樂的播放,用micro:bit的B鍵控制上一首音樂的播放等。Processing是一款很不錯的互動編程軟件,很多看起來很難的問題,如音樂識別、視頻識別、語音識別等,都可以借助各種擴展庫來完成。讓學生們玩玩有趣的新技術從而愛上技術,這正是創客教育的核心工作之一。