下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、摘 要 針對(duì)數(shù)字化音樂(lè)教學(xué)的需要,提出了基于vb環(huán)境開(kāi)發(fā)五線譜作曲工具的可行性,并對(duì)其中技術(shù)原理、關(guān)鍵問(wèn)題給出了具體的解決方法,實(shí)現(xiàn)了一個(gè)基本的可視化作曲工具,對(duì)一般音樂(lè)教育工作者具有很好的啟發(fā)性。關(guān)鍵詞 數(shù)字化音樂(lè);五線譜;音樂(lè)軟件目前在數(shù)字化音樂(lè)教學(xué)過(guò)程中需要用到許多編輯軟件和作曲軟件。許多音樂(lè)教育工作者對(duì)如何開(kāi)發(fā)自己的數(shù)字音樂(lè)工具很感興趣,而一般的計(jì)算機(jī)類書(shū)刊對(duì)此類問(wèn)題探討和介紹的比較少,本文試圖從這一領(lǐng)域做些原理性的研究工作,以供音樂(lè)教育工作者和其他相關(guān)愛(ài)好者發(fā)揮、擴(kuò)展,起到拋磚引玉的作用。因此本文以業(yè)余程序員最熟悉的開(kāi)發(fā)工具vb為平臺(tái),開(kāi)發(fā)設(shè)計(jì)了一個(gè)基本的五線譜編輯工具,并實(shí)現(xiàn)了數(shù)字
2、音樂(lè)的合成、播放、保存和讀寫(xiě)。可視化圖形界面的設(shè)計(jì)首先在vb環(huán)境中建立一個(gè)新的窗體并保存,然后在窗體中建立菜單和工具條,為簡(jiǎn)便起見(jiàn),工具條用option控件組來(lái)實(shí)現(xiàn)(需要把風(fēng)格設(shè)為 graphical模式),并把事先做好的圖標(biāo)加載到控件上。圖1是五線譜作曲工具的主界面,其中picture1控件作為可視化編輯工具的客戶操作區(qū), picture2控件中所加載的位圖包含了作曲過(guò)程中需要的基本音符,在操作過(guò)程中通過(guò)位圖提取的方式來(lái)獲得相應(yīng)的音符,然后插入到所需的位置。圖1 vb環(huán)境中的設(shè)計(jì)界面五線譜作曲功能的實(shí)現(xiàn)在工具條上的五個(gè)option控件構(gòu)成一個(gè)控件組,根據(jù)option控件本身的特性,其中一個(gè)選
3、中時(shí)其它的自動(dòng)設(shè)為非選擇項(xiàng),因此操作起來(lái)很方便。當(dāng)選中其中的一個(gè)音符圖標(biāo)后,自動(dòng)觸發(fā)相應(yīng)的事件。事件處理代碼如下:private sub option1_click(index as integer)picture1.setfocus 焦點(diǎn)集中到客戶區(qū)yinfu = index 獲得音符序號(hào)end sub其中整型數(shù)yinfu是一個(gè)全局變量,通過(guò)控件組中的索引index可以知道哪個(gè)音符按鈕被選中。為了記錄作曲過(guò)程中的操作,定義一個(gè)二維數(shù)組 music用來(lái)存放數(shù)據(jù),光標(biāo)點(diǎn)取在picture1客戶區(qū)中的坐標(biāo)經(jīng)過(guò)圓整后作為數(shù)組的行、列序號(hào),數(shù)組元素記錄所選的音符。整個(gè)處理過(guò)程放在 picture1控件
4、的mousedown事件中進(jìn)行,代碼如下:private sub picture1_mousedown(button as integer, shift as integer, x as single, y as single)dim liney&, coloumx&liney& = round(y - 13) / 5) 行圓整coloumx& = round(x - 30) / 16) 列圓整if not (coloumx& 0 and liney& 0) thenexit subend ifif music(liney&, coloumx& + hscroll1.value) = 0 th
5、enmusic(liney&, coloumx&+ hscroll1.value) = selection 記錄音符end ifdisplaynotes 在客戶區(qū)顯示當(dāng)前音符end sub當(dāng)程序運(yùn)行時(shí),首先通過(guò)主窗體的form load事件在picture1的客戶區(qū)繪出五線譜的五條平行的水平線,作曲者便可以根據(jù)不同的音高在相應(yīng)位置插入音符。插入音符的過(guò)程是通過(guò)上面的 displaynotes函數(shù)來(lái)實(shí)現(xiàn)的,利用windows系統(tǒng)的api(應(yīng)用程序接口)函數(shù)bitblt所具有的內(nèi)存數(shù)據(jù)傳送的功能將picture2 中位圖的一部分提取出來(lái)并按照一定的變換后插入到picture1的客戶區(qū)制定位置,主要
6、代碼如下:select case idcase 1bitblt picture1.hdc, x& - 7, y& - 18, 20, 30, picture2.hdc, 66, 0, srcandcase 2bitblt picture1.hdc, x& - 5, y& - 18, 20, 30, picture2.hdc, 0, 0, srcand圖2 五線譜作曲工具的運(yùn)行效果曲譜的保存和讀取在可視化編輯工具中所作的曲目應(yīng)當(dāng)能夠保存為數(shù)據(jù)文件。保存和讀取的操作是通過(guò)通用對(duì)話框commondialog來(lái)實(shí)現(xiàn)的,設(shè)計(jì)程序界面時(shí)在窗體上加載一個(gè)通用對(duì)話框控件。當(dāng)點(diǎn)取程序菜單上的“保存”時(shí),彈出文件
7、保存對(duì)話框,然后設(shè)置文件路徑對(duì)音樂(lè)數(shù)據(jù)進(jìn)行保存,其代碼如下:commondialog1.filename = app.path & *.txtcommondialog1.showopen 顯示保存對(duì)話框if commondialog1.filename = app.path & *.txt then exit subme.mousepointer = 11for liney& = 1 to 40outputs = tone & leadingzeros$(liney&, 2) & : for coloumx = 1 to 150a = chr(music(liney&, coloumx) +
8、asc(0)outputs = outputs & a 寫(xiě)入文件next coloumxwhole$ = whole$ & outputs & vbcrlfnext lineyopen commondialog1.filename for output as #1print #1, whole$close #1 關(guān)閉文件文件的讀取過(guò)程與保存過(guò)程類似,只要通過(guò)input語(yǔ)句將文件中的數(shù)據(jù)加載到二維數(shù)組music中去就可以了。曲譜的合成與播放曲譜的合成是通過(guò)windows自帶的多媒體api函數(shù)來(lái)實(shí)現(xiàn)的,這些api函數(shù)在winmm.dll文件中,因此需要把該文件引用到程序中。該動(dòng)態(tài)鏈接庫(kù)中包含了多個(gè)數(shù)字音樂(lè)(midi)輸入、輸出、合成等方面的庫(kù)函數(shù)。在對(duì)曲譜進(jìn)行midi合成播放時(shí),首先將二維數(shù)組music中的數(shù)據(jù)轉(zhuǎn)化為數(shù)字音頻信號(hào),然后通過(guò)計(jì)算機(jī)的聲卡播放出來(lái),其中的關(guān)鍵代碼如下:for liney& = 1 to 30if music(liney&, x) 0 and not isagainflag thenmidimsg = &h90 + (46 + liney&) * &h100) + (volume * &h10000) + tempchannel 定義音高midioutsh
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度外聘保安人員安全教育與培訓(xùn)合同
- 2025年科技園區(qū)建設(shè)尾款支付及設(shè)施移交合同3篇
- 2025年度貼磚勞務(wù)分包合同風(fēng)險(xiǎn)評(píng)估與管理
- 2025年個(gè)人教育設(shè)備租賃服務(wù)合同4篇
- 2025年度智能門(mén)禁系統(tǒng)租賃及維護(hù)服務(wù)合同3篇
- 二零二五年度倉(cāng)儲(chǔ)設(shè)施租賃與倉(cāng)儲(chǔ)信息化服務(wù)合同3篇
- 2025年度高速公路養(yǎng)護(hù)管理服務(wù)合同范本4篇
- 2025年度大型空飄球活動(dòng)租賃及現(xiàn)場(chǎng)布置合同2篇
- 二零二五年度挖機(jī)設(shè)備租賃合同售后服務(wù)追加協(xié)議
- 2025版空運(yùn)出口貨物運(yùn)輸代理服務(wù)合同范本3篇
- 《電力用直流電源系統(tǒng)蓄電池組遠(yuǎn)程充放電技術(shù)規(guī)范》
- 《哪吒之魔童降世》中的哪吒形象分析
- 信息化運(yùn)維服務(wù)信息化運(yùn)維方案
- 汽車修理廠員工守則
- 六年級(jí)上冊(cè)數(shù)學(xué)應(yīng)用題100題
- 個(gè)人代賣協(xié)議
- 公安交通管理行政處罰決定書(shū)式樣
- 10.《運(yùn)動(dòng)技能學(xué)習(xí)與控制》李強(qiáng)
- 冀教版數(shù)學(xué)七年級(jí)下冊(cè)綜合訓(xùn)練100題含答案
- 1神經(jīng)外科分級(jí)護(hù)理制度
- 場(chǎng)館惡劣天氣處置應(yīng)急預(yù)案
評(píng)論
0/150
提交評(píng)論