基于LabVIEW的便攜式按鍵鋼琴_第1頁
基于LabVIEW的便攜式按鍵鋼琴_第2頁
基于LabVIEW的便攜式按鍵鋼琴_第3頁
基于LabVIEW的便攜式按鍵鋼琴_第4頁
基于LabVIEW的便攜式按鍵鋼琴_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

1、 虛擬儀器技術(shù)及應用-基于LabVIEW的便攜式按鍵鋼琴班 級: 姓 名: 學 號: 成 績: 一、 設計要求: 基本功能要求:便攜式按鍵鋼琴思路: 利用myDAQ的8個數(shù)字I/O通道作為琴鍵輸入,通過LabVIEW編程合成出所需頻率的聲音,經(jīng)過D/A變換后通過Audio Out端口放大輸出。程序中通過設置不同的諧波組合可以最終混合出不同樂器的音色。 說明:除了數(shù)字I/O的信號采集和模擬信號輸出之外,這個題目的主要工作在軟件方面的數(shù)字信號處理與合成(比如,如果同時按下兩個按鍵,出來的效果應該是兩個音的疊加;同時還要考慮針對不同樂器不同音色所對應增加的諧波比例)。軟件上還可以增加其他功能,例如可

2、以選擇將PC音頻輸出的音樂通過myDAQ的Audio In端采集后增加混音或重低音效果等然后再通過Audio Out端播放出來。在硬件方面,可以擴展的一些工作包括琴鍵輸入開關的毛刺濾除電路設計、音頻輸出后再做一級放大電路等。由于myDAQ只有8個數(shù)字I/O端口,因此只能做一個八音階。 衍生功能要求: 便攜式曲目練習器 思路:播放一首歌曲的同時,在PC界面上顯示樂譜(或者當前的音階和拍長),練習者需要按下對應的按鍵,這些按鍵連接到myDAQ的數(shù)字I/O端口,從而計算機可以判斷是否正確,樂曲結(jié)束后根據(jù)按鍵的正確性和節(jié)奏的正確性給于相應評分。 說明:本題目硬件與上一題目基本相同,在練習時可以播放原有

3、旋律,同時記錄練習者的按鍵順序和時長,合成成樂聲在練習結(jié)束后播放,并與原旋律比較。相比上一題目,需要在軟件中記錄數(shù)字鍵輸入的順序和時長。此外,可以設置不同的難度級別。 本程序功能規(guī)劃: 根據(jù)已有的功能要求,我們需要制定一下我們電子琴程序的方向,究竟要做到什么地步,要做哪些功能,經(jīng)過小組內(nèi)的討論,以及與指導老師的交流,再就是根據(jù)我們目前對MyDaq以及LabView的掌握情況,我們制定了如下的具體要求:1.圖形界面模塊:一個非常形似電子琴的圖形界面,做到界面整潔美觀,有區(qū)分度,交互通俗易懂2.發(fā)聲模塊:電子琴的基本發(fā)聲功能,做到不同音調(diào),音色,音量3.控制方式模塊:做到能用鼠標,鍵盤和基于MYD

4、AQ的機械按鍵控制4.擴展模塊:曲目練習器模塊:考慮到現(xiàn)有設備的局限性以及知識的局限性,我們現(xiàn)在把曲目練習模塊簡化為:通過文件IO讀取歌曲TXT曲譜,根據(jù)曲譜控制鋼琴的按鍵的變色從而作為演奏提示,最后不考慮節(jié)奏只考慮曲譜聲調(diào)的正確率做打分。自動播放模塊:該模塊做到根據(jù)TXT曲譜來自動演奏鋼琴樂。除此之外,由于涉及曲目練習,我們還要做歌曲的曲譜以及聲音文件。二、 模塊實現(xiàn): 在做本次程序之前,我們進行了充分的調(diào)研工作,包括:l LabVIEW圖形界面系列-色彩搭配;l 八度音階頻率關系對應表;l 樂器音色的原理;l 鋼琴音色的制作;l 曲目曲譜的設計及制作;l LabVIEW文件IO及屬性節(jié)點的

5、使用;l MYDAQ設備的基本使用及設備可實現(xiàn)功能;下面將按搭建順序一一介紹每一個模塊的具體實現(xiàn),最后介紹每個模塊之間是如何聯(lián)系起來的。n 發(fā)聲模塊u 播放正弦波要做電子琴,理所當然我們第一步想的就是如何發(fā)聲,想到以前在數(shù)字信號處理課程中做過語音信號的處理相關編程,知道播放固定頻率的正弦波可以發(fā)出聲音,再查看LabVIEW所支持的函數(shù),定下了初步的思路,即:首先產(chǎn)生一定頻率的正弦波,設置好采樣頻率以及時長,送播放波形函數(shù),如下圖1.1: 圖1.1 播放正弦波 圖1.2 播放三角波于是,我們馬上做了一個布爾按鈕做測試,利用條件結(jié)構(gòu)(布爾變量為真送一個數(shù)字,如266,到正弦波產(chǎn)生函數(shù)的輸入?yún)?shù)-頻

6、率中)實現(xiàn)了發(fā)聲,但有兩個問題: 音質(zhì)很差(主要因為音色) 有很強的尾音(聲音突然停止產(chǎn)生的刺耳噪聲)但無論如何我們成功實現(xiàn)了發(fā)聲。u 播放三角波為了解決第一個問題,之后查閱了相關內(nèi)容,知道:不同音色是由某一基頻的正弦波疊加上一定比例的諧波成分實現(xiàn);于是我們做了如下處理:如圖1.2,先同樣方法產(chǎn)生一定頻率的三角波,再通過低通濾波器,我們知道周期的三角波一定可以分解為基波和諧波相加,經(jīng)過低通濾波器濾除高頻后,出來的聲音與正弦波是不同的音色結(jié)果正如我們所想,出來的音色不同,音色更像電子音,但尾聲仍存在。u 播放公式波形為了解決尾聲的問題,我們想如果能讓音的尾部音量變小就好了,于是找到了公式波形,將

7、正弦波的幅度隨時間改變,開始和末尾的幅度偏小,中間幅度最大,用了如下的公式:sin(w*t)*sin(m*t);幅度A(t)= sin(m*t),使/m = 采樣數(shù) / 采樣頻率我們設計的采樣數(shù)為5000,采樣率為11025,那么差不多 m = 2;于是設計的第三種音色如圖1.3: 圖1.3 播放公式波形 圖1.4 播放WAV文件效果比之前兩個都好,音色像管弦樂器,尾音更小。u 播放文件公式波形仍然不能滿足我們對完美音色的要求,于是我們決定用另外一種發(fā)聲機制-播放文件,在網(wǎng)上找了很久沒有發(fā)現(xiàn)好的八度音階音色后,我們開始了自己制作相關的音色,還好本組同學中之前有對音樂軟件的了解,用 + + =

8、制作出了所需的WAV文件。我們并用如圖1.4的結(jié)構(gòu)實現(xiàn)了WAV播放,由于是外部音,所以效果很好,只是第一次載入有些慢。至此,我們實現(xiàn)了四種音色,接下來就要討論如何控制發(fā)聲n 控制模塊由于調(diào)試的需要(調(diào)試時基本都用鼠標),以及DAQ設備的搶手,我們最初只做了兩種控制模式,鼠標控制,以及機械按鈕控制。u 鼠標控制原理上很簡單,無論是鼠標控制的8個布爾按鈕,還是MYDAQ采集到的面包板上8個按鍵,輸出的都是一個1D的長度為8的布爾數(shù)組,通過對布爾數(shù)組的每一位做檢索,為1則發(fā)聲,為0則不發(fā)聲。程序框圖如圖2.1圖2.1 鼠標控制發(fā)聲的結(jié)構(gòu)圖中顯示的是把鼠標控制的八個布爾按鈕(實際鼠標可以控制13個按鈕

9、,但因為機械按鍵只有8個,這里只說八個)集中到一個簇中,在轉(zhuǎn)換為布爾數(shù)字,檢索布爾數(shù)組每一位,如果為1則發(fā)出對應頻率的聲,此處我們查詢了音調(diào)和頻率對應表,如圖2.2,得出下面對印關系Duo re mi fa suo na xi dou+261.63 293.66 329.63 349.23 392 440 493.88 523.25 (HZ)圖2.2 八度音階與頻率對應關系那么當我們按下DUO按鈕時,布爾數(shù)組第一個值為真,控制發(fā)出261.63Hz的聲音,同理按下NA按鈕時,布爾數(shù)組第六個值為真,控制發(fā)出440Hz的聲音,如此,實現(xiàn)了鼠標控制;測試鼠標控制發(fā)音正常。Ø 并行結(jié)構(gòu)的好處:

10、為什么我們要按這種并行檢測每一位然后分別播放的結(jié)構(gòu)?實際上是為了解決多個按鈕同時按下的時候,能兩個音同時發(fā)出的需求。u 機械按鍵控制機械按鍵控制與鼠標控制的后面發(fā)聲部分完全一樣,只是前面的簇改為了DAQ助手,DAQ助手選用的是端口采樣PORT0,外圍硬件接線很簡單,用共陽極結(jié)構(gòu),將MYDAQ的PORT的8個端口分別接面包板上八個按鈕的一端,8個按鈕另一端接+5V電壓高電平,此處沒有圖。因此,DAQ助手輸出的是十進制數(shù),將其轉(zhuǎn)換為2進制數(shù)后,后續(xù)操作同上。程序如圖2.3圖2.3 機械按鍵控制發(fā)聲Ø 機械按鍵控制的問題機械按鍵的發(fā)聲測試播放波形時,效果正常;但是播放文件時,由于DAQ助手

11、采樣很快,所以按下按鈕時,WAV文件會播放很多次,導致聲音混疊,我們的解決方法時采用延遲一小段時間的方法,播放文件條件分支里用的是層疊結(jié)構(gòu),在后面的幀里設置延遲0.1秒,如圖2.4圖2.4 播放波形條件分支中的延遲至此不算擴展功能,我們的基本功能已經(jīng)實現(xiàn)。n 圖形界面模塊前面提及了基本發(fā)音及控制,為了實現(xiàn)擴展功能,必須把程序的大體結(jié)構(gòu)和前面板的界面作介紹,前面板如圖3.1圖3.1 前面板前面板結(jié)構(gòu):左邊是曲譜的提示部分;中上是選擇控制部分;右上是提示面板(演奏時才有變化);右下是鼠標控制的布爾按鈕(設置快捷鍵之后可以鍵盤控制)前面板以藍色為背景,黑白為主色,其他顏色為輔色做提示,整個布局提示在

12、左,操作在右,控制在上,鋼琴按鍵的制作只需將布爾按鈕拉長之后用工具選板做變色處理,簡單但美觀。后面板介紹演奏方式控制模塊:對應前面板的演奏方式按鈕,控制是否自動播放,以及鼠標/鍵盤控制,還是機械按鈕控制。如圖3.2圖3.2 演奏方式控制歌曲選擇控制模塊:對應前面板的歌曲選單,決定演奏/自動播放那首歌 如圖3.3圖3.3 歌曲選擇控制曲目演奏主模塊,包括打分主程序,顏色提示主程序,演奏時的變量控制如圖3.4圖3.4 曲目演奏主模塊自動播放模塊,自動播放的實現(xiàn)程序,如圖3.5圖3.5 自動播放模塊以及之前提到的播放聲音模塊,如圖3.6圖3.6 播放聲音模塊曲譜文件的讀取模塊,如圖3.7圖3.7 文

13、件讀取模塊這里只對每一個模塊做一個說明,對應到具體的擴展應用時,再將具體的結(jié)構(gòu)加以說明,下面將介紹擴展功能的實現(xiàn)n 曲譜練習(擴展)曲譜練習模塊的基本原理就是選擇完曲目后,程序會從TXT文件里面讀取相應的曲譜,讀取到的內(nèi)容輸出為字符串,每彈奏一次時,把彈奏的按鍵對應的數(shù)與曲譜中即將彈奏的音對應的數(shù)作比較,如果為真,加1分,如果為假,不加分,同時用一個變量記錄剩余曲譜的長度,剩余曲譜長度為0時,把總的得分除以曲譜的長度,得到最終的得分。由于程序太過龐大,無法展示所有的條件分支下面以一個流程說明程序的工作 程序運行后選擇以下控制方式選擇鼠標控制,鋼琴音,歌曲練習,歌曲選“我的歌聲里”那么歌曲譜變量

14、內(nèi)容變?yōu)椤拔业母杪暲铩?,如下圖4.1:圖4.1 歌曲譜的改變此時先從TXT中讀取字符串,歌曲列表為0時(對應下拉框選擇第一個選項“我的歌聲里”),把已經(jīng)讀取的字符串送入歌曲譜,那么界面左邊的歌曲譜發(fā)生了改變,同時做了圖4.2的初始化,包括即將演奏音階的讀取,前面板進度條總長度的自適應,歌曲譜送入剩余歌曲譜,即將演奏的第一個音為“3”,長度為“99”。圖4.2 選擇歌曲后的初始化 按下樂譜的一個音“1”(舉例為“1”也可為其他)那么程序先判斷是否按下按下時,比較的結(jié)果為假,把“1”送入當前演奏音階和演奏記錄接下來把剩余曲譜中的第一個音“3”送入當前樂譜音階剩余樂譜減一建議后的剩余樂譜第一個送入即

15、將演奏音階接著作比較“1”和“3”比較,不相等,于是正確數(shù)目不加1,否則加1圖4.1 加分的判斷 提示按鍵的變色由于之前比較“1”和“3”,沿線演奏錯誤,于是把紅色屬性(代表錯誤)送到“1”對應的前面板中右上角鍵盤“1”對應按鍵的屬性節(jié)點-顏色 中 實現(xiàn)變色,延遲0.5秒后,把白色屬性重新送入該按鍵、 之后,把黃色屬性(代表下一個音)送到即將演奏音階對應的按鈕中,等到下一次按鍵判斷完后,恢復白色如此循環(huán),直到把譜子中所有音階演奏完后,做判斷,彈窗提示你的得分 這就是一個大致的流程。Ø 譜子系統(tǒng),變色系統(tǒng)剛才提到了許多關于“1”“3”變色等內(nèi)容,他們屬于我們定義的規(guī)則,那么接下來把譜子

16、系統(tǒng)變色系統(tǒng)作介紹19:分別代表duo,re,mi,fa,suo,na,xi,duo+,re+;S:suo- ; N:na- ;X:xi-;M:mi+;回車:延遲0.4秒空格:延遲0.15秒“-”:延遲0.05秒變紅色:演奏錯誤變黃色:此音階時下一個要演奏的音階變綠色:演奏正確變白色:默認顏色其實單單一個流程遠沒有把,程序框圖中的每個部分都介紹到,由于要考慮到程序的完整性,細節(jié)處理很多,此處提一個比較重要的細節(jié)處理空格處理:在計算得分的時候,我們用演奏正確的數(shù)目除以總長度,此處的總長度并非為曲譜長度,而是去除了空格回車之后的曲譜長度因此要做如下圖的處理,即將演奏為“默認”時空格個數(shù)加1,“默認”表示非音階字符串。最后除以的是譜子長度與空格個

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論