使用查表法用在解譯簡譜算是滿方便的,因為可以把別人的簡譜直接拿來使用,由程式來進行翻譯就好了。不過,如果只有1~7個音階時還算是好用,但是如果把音階再擴展至高音以及低音的部份,很顯然地,只使用數字是不夠的。
在這個例子中,我們打算加上所有在Scratch上可以演奏的音符,在低音的部份以cdefgab來代表7個低音的音階,原來的1234567則是負責中音的部份,再加上一個w做為高音Do,全部總共15個音符,為了讓這15個音符可以轉成相對應的音階,需要再定義一個叫做letter2number的清單,並且另外製作了一個自訂積木來做初始化的動作,這個自訂積木我們把它筿為initLetterList,其定義的內容如下所示:
然後定義一個用來查每一個音符記號(以letter傳遞進去)在這張表格的第幾個位置,這個自訂積木我們把它稱為L2N,定義如下:
然後播放音符的時候就可以使用一個叫做note的自訂積木如下:
程式一開始的初始化積木如下:
init程序積木的定義內容如下:
最後,當角色被點擊的時候,就可以透過以下的方式來播放每一個音符。在這個例子中,我們的播放對象是song3,因此需要利用一個積木把song3放到song變數中,接著再播放song清單中的所有音符,如下:
(636)
近期留言