用Micro:bit的Java Script玩音樂

在Micro:bit的程式積木中預設就有演奏音樂的功能,不過如果要自己透過積木來編寫樂譜演奏音樂的話,積木得拉得非常長一串,實在難以編寫。於是我轉向利用Java Script開發,希望把樂曲的簡譜以陣列方式書寫,再以程式讀取簡譜的陣列來播放。 而在實作的過程中,我又遇到音高和頻率的問題,實在不想直接指定哪個音名需播放什麼頻率,於是我也轉向用程式直接計算頻率,這麼一來編寫出來的程式居然有了新功能,我能夠指定要以什麼調性來演奏。例如同樣一篇簡譜的歌曲,我可以任意指定以C大調演奏,或是以D大調、C小調演奏,完全不須更動簡譜。 而且除了演奏簡譜之外,你也可以輸入一串如圓周率的數字,這樣也能演奏出歌曲。或是DNA或蛋白質的序列都可以演奏的。 我在十幾年前寫過的兩篇序列產生音樂的介紹文【 聽蛋白質唱歌 】、【 你也可以讓DNA唱歌 】,現在你也可以用這方式自己寫程式產生音樂了。 以下就以頻率計算的部分來說明,詳細的專案我都已經錄製成影片,另外影片中使用的簡報也在最後,同時程式碼也附在簡報當中。 javaScript玩音樂01用變數產生頻率 javaScript玩音樂02從簡譜數字產生頻率 javaScript玩音樂03用pi來演奏歌曲 javaScript玩音樂04用文字序列來演奏歌曲 javaScript玩音樂05輸入簡譜來演奏歌曲 javaScript玩音樂06改變調性來演奏 javaScript玩音樂07全部改寫成函式 簡報 https://docs.google.com/presentation/d/1oiTV2FZl3g6xoEAYOyrB-N58UG8BzBNby9efYuhM-Qc/edit?usp=sharing 以下幾張簡報要說明的是下面這串程式是怎麼寫出來的,這是最基本的程式,細節都可以看影片的說明 let scale = [ 0 , 2 , 4 , 5 , 7 , 9 , 11 ] let start = 60 input . onButtonPressed (Button.A, function () { let sound = 1 let playtime = 150 let midiNumber = start + scale[