大家都知道在Scratch中有一組很有趣的音效積木,透過這些積木可以演奏出各式各樣樂器不同音階的聲音,不過在設計演奏音符的時候都要透過數字和節拍一個一個積木地去放置,有一些不方便。在這篇文章中就來教同學,如何使用簡譜放在一個字串變數中,然後讓程式根據簡譜的內容轉換之後直接播放出樂曲。

首先,先定義一個變數song1,它的內容是一段小蜜蜂樂曲的簡譜,在程式一開始的時候就把此簡譜放在song1變數: ,如下所示:

接著我們要把這些字串的每一個字元逐一找出,根據字元的內容轉換成對應的音階。在程式介面中,我們是以貓咪這個角色被點擊之後才開始演奏音樂,因此使用的是當角色被點擊的事件。在此事件中,第一件事就是如同前一篇教學的內容。把字串進行拆解,成為個別的字元,如下所示:

上述的程式積木中,其中的變數i是等一會兒要用控制目前是使用的是哪一個字元用的變數,一開始設定其值為1,表示第一次要拿的是1,接下來要逐次遞增,同學們可以看到在迴圈的中間有一個把變數i改變1的積木,其作用就是把i的內容加1。

在確定能夠取出每一個字元之後,接下來就要根據字元的內容來演奏相對應的音符。在我們的設計中,使用「-」代表暫停,其它的數字則是直接依據簡譜記號發出相對應的音階。所以使用一個條件式判斷積木如下:

在程式中,只要遇到的是「-」,就休息0.5拍,如果不是「-」的話,就使用我們設計的程序積木進行播放音符的操作。把這段程式積木放入剛剛的字串拆解迴圈中,如下所示:

最後,只要設計新增的擴充積木就可以了。添加積木的方法如下:

添加積木時別忘了要新增一個參數,並改成你要的參數變數名稱,如下所示:

在這個例子中,我們把number1改為note,然後就可以開始設計這個積木的內容,如下所示:

最直接的方法就是根據傳進來的note變數之內容(也就是簡譜記號中的數字),演奏出相對應的音階,所有的音階都完成之後,程式也就大功告成了。不過,使用一大堆的條件式判斷看起來有一點笨重,還有更好的方法,請看下一篇的說明。

 

(618)