廣告贊助

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

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

20140122-01  


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

20140122-02  


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

20140122-03  


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

20140122-04  


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

20140122-05  


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

20140122-06  

文章標籤
創作者介紹
創作者 未出師的小工程師 的頭像
未出師的小工程師

LabVIEW & PLC還未出師的小工程師部落格

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


留言列表 (9)

發表留言
  • 張毛利
  • 您好!請問可以跟你索取這個鋼琴的VI嘛?

    因為我目前正在撰寫一個vi是利用壓電材料,在受力之後電流產生變化進而產生不同

    Do、Re...之類的,目前卡關在轉成音檔上
  • 索取程式請留mail

    未出師的小工程師 於 2018/06/07 20:40 回覆

  • 張毛利
  • 您好!我的e-mail是willie211313gmail .com
    再麻煩您了
    感謝

  • 你的mail不正確檔案寄不出去

    未出師的小工程師 於 2018/06/09 13:27 回覆

  • 張毛利
  • 抱歉我留沒留好!是willie211313gmail .com

    再麻煩您了
  • 張毛利
  • 抱歉我剛剛發文!發現小老鼠會消失,有點奇怪我的e-mail是willie211313(小老鼠)gmail.com
  • 檔案已寄到你信箱

    未出師的小工程師 於 2018/06/09 22:10 回覆

  • 張毛利
  • 您好!可以請教一開始您的設定區『44100』『2』『16』的意義是什麼?
    抱歉一子麻煩您
  • 這是設定音效卡參數:44100是採樣率,現在電腦音效卡的標準都是44100。2是音效卡通道數量,設成2是立體聲雙聲道,1是單聲道。16是採樣質量,現在的音效卡都已支援到16位元,8位元的應該也看不到了

    未出師的小工程師 於 2018/06/11 22:31 回覆

  • 張毛利
  • 您好!我目前是一個壓電材料,再施加力的時候電阻變小導致電流變大,所以想做8個材料塊,每一個對應一個音階,且電流改變30%後會傳出T的訊號,導致音效產生。如果照您的vi是不是我只要把數據處理(分析是否超過30%)傳出的訊號(T/F)連接到您1D矩陣尋找那部分的
  • 你的用途和我給你的程式好像搭不上,應該是使用DAQ偵測電壓變化的應用

    未出師的小工程師 於 2018/06/12 22:17 回覆

  • 張毛利
  • 您好!我的確有用一個DAQ(USB-6210)收取訊號變化,但我用位移暫存器將每個數據(I)扣除第一個數據點(Io)得到變化量,並設定多少變化量會傳出T/F訊號,再產生音效,但我之前一子沒頭緒該怎麼寫出像您那樣鋼琴的架構,所以才向您請教
  • 如果你材料塊對應的輸出是喇叭或蜂鳴器之類的元件,我給你的程式中輸出聲音的部分就可以用,基本上只要是特定頻率的正弦波就可以發出特定音高

    未出師的小工程師 於 2018/06/13 22:28 回覆

  • 訪客
  • 您好!我材料對應的只是電流變化,所以用USB類比方式連續性接受電流訊號。我是想說利用按壓材料->電流變化的方式取代您原本寫入的案鋼琴鍵不知這樣可否
  • 理論上是可行的

    未出師的小工程師 於 2018/06/15 23:32 回覆

  • 張毛利
  • 您好!抱歉要請教一下您。我將您提供的VI鋼琴部分移除,取代我寫入的收取連續性的電壓訊號,並將後一個訊號扣除前一個,觀察其,若其變化大過20%則傳出T去觸動您寫入的聲音檔(因為有八個按鍵,每個按鍵只負責一個音效,所以將您提供的音頻檔改為單一音頻,就取消了矩陣尋找,跟音頻矩陣部分)但目前卡關在如何將兩者串連,因為我的變化判定結果好像是陣列,沒辦法和您的上部連接,不知道能否求救您?

    目前vi我有附上網址截圖,感謝您
  • 變化判定結果是陣列,若確定訊號在陣列中的確實位置,可以使用陣列索引元件單獨取出那個訊號再處理

    未出師的小工程師 於 2018/06/20 16:41 回覆

您尚未登入,將以訪客身份留言。亦可以上方服務帳號登入留言

請輸入暱稱 ( 最多顯示 6 個中文字元 )

請輸入標題 ( 最多顯示 9 個中文字元 )

請輸入內容 ( 最多 140 個中文字元 )

請輸入左方認證碼:

看不懂,換張圖

請輸入驗證碼