這個問題可以寫程式使畫面上的按鍵對應到相對的音高頻率,然後透過音效卡發音

  
首先要有對應音高的頻率表,從維基百科查音高可以找到音高頻率表

20140122-01  


再來是把音高頻率建立成陣列,這次範例只取用中央Do(C4)到高音Mi(E5)範圍的頻率

20140122-02  


程式面板就直接仿鋼琴鍵盤排列黑白鍵,黑白鍵分別組成群組排列,再把黑鍵疊在白鍵上方,最後把黑白鍵按鍵放到叢集內

20140122-03  


因為需要在按鍵按下時發音,放開時停止發音。每個按鍵要設定成按下立刻動作,放開立刻回復的狀態

20140122-04  


每個按鍵在叢集內的順序要從新排列,由低音順序排到高音,對應音高頻率的陣列,如下圖

20140122-05  


程式的部分比較簡單,發音使用正弦波輸出,只要注意實際控制發音的程式一定要在迴圈內即可。若音量不需在程式執行中調整,也可以把那段程式放到迴圈外。另外迴圈控制時間設定的Wait Until Next ms Multiple元件時間不要設定太長,否則按鍵按住不放時,發出的不會是連續音,而是斷斷續續的聲音

20140122-06  

,

未出師的小工程師 發表在 痞客邦 PIXNET 留言(0) 人氣()