可以錄音的鋼琴


之前在上課的時候,做了一個鋼琴的範例,當時只是能彈奏音階,算是按鈕的一個有趣的應用。

因為這個範例的完成度很高,我就想製作一個可以錄音的版本,但是雖然說是錄音,實際上的做法是用陣列去記錄使用者輸入的每個聲音編號,再讓程式去照順序播放對應的聲音,但是後來我發現我想得太天真了,因為這樣完全沒有節奏可言(每個聲音播放的速度都一樣),後來我在網路上看到有人建議可以用一個計時器,連續不斷地填入空的值,只有當使用者輸入時,再填入聲音的編號,可以參考底下的說明:

假設今天使用者輸入了1、2、3這三個音
原本陣列的記錄就是1,2,3
但新的陣列則會變成0,0,1,0,2,0,0,0,3

利用這樣空的值就可以把彈奏時的節奏給記錄下來,不過這樣的理論雖然是可行的,但是播放出來的速度還是偏慢,所以我只好將錄音的速度與播放的速度做出區隔,錄音時每0.5秒會記錄一次,但是播放聲音的速度則是每0.25秒,結果雖然不是完美,但是也可以接受。

真正的問題往往在開始做了之後才會發現。

發表迴響