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