熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> C編程 >> 正文

利用Visual Basic6.0實現五線譜作曲工具

2022-06-13   來源: C編程 

  摘 要

  針對數字化音樂教學的需要提出了基於VB環境開發五線譜作曲工具的可行性並對其中技術原理關鍵問題給出了具體的解決方法實現了一個基本的可視化作曲工具對一般音樂教育工作者具有很好的啟發性

  關鍵詞

  數字化音樂;五線譜;音樂軟件

  目前在數字化音樂教學過程中需要用到許多編輯軟件和作曲軟件許多音樂教育工作者對如何開發自己的數字音樂工具很感興趣而一般的計算機類書刊對此類問題探討和介紹的比較少本文試圖從這一領域做些原理性的研究工作以供音樂教育工作者和其他相關愛好者發揮擴展起到拋磚引玉的作用因此本文以業余程序員最熟悉的開發工具VB為平台開發設計了一個基本的五線譜編輯工具並實現了數字音樂的合成播放保存和讀寫

  可視化圖形界面的設計

  首先在VB環境中建立一個新的窗體並保存然後在窗體中建立菜單和工具條為簡便起見工具條用Option控件組來實現(需要把風格設為 Graphical模式)並把事先做好的圖標加載到控件上是五線譜作曲工具的主界面其中Picture控件作為可視化編輯工具的客戶操作區 Picture控件中所加載的位圖包含了作曲過程中需要的基本音符在操作過程中通過位圖提取的方式來獲得相應的音符然後插入到所需的位置

利用Visual Basic6.0實現五線譜作曲工具

VB環境中的設計界面

  五線譜作曲功能的實現

  在工具條上的五個Option控件構成一個控件組根據Option控件本身的特性其中一個選中時其它的自動設為非選擇項因此操作起來很方便當選中其中的一個音符圖標後自動觸發相應的事件事件處理代碼如下

Private Sub Option_Click(Index As Integer)

 PictureSetFocus 焦點集中到客戶區

 Yinfu = Index 獲得音符序號

End Sub

  其中整型數Yinfu是一個全局變量通過控件組中的索引Index可以知道哪個音符按鈕被選中為了記錄作曲過程中的操作定義一個二維數組 Music用來存放數據光標點取在Picture客戶區中的坐標經過圓整後作為數組的行列序號數組元素記錄所選的音符整個處理過程放在 Picture控件的MouseDown事件中進行代碼如下

Private Sub Picture_MouseDown(Button As Integer Shift As Integer X As Single Y As Single)

 Dim LineY& ColoumX&

 LineY& = Round((Y ) / ) 行圓整

 ColoumX& = Round((X ) / ) 列圓整

 If Not (ColoumX& > And LineY& > ) Then

  Exit Sub

 End If

 If Music(LineY& ColoumX& + HScrollValue) = Then

  Music(LineY& ColoumX&

  + HScrollValue) = Selection 記錄音符

 End If

 DisplayNotes 在客戶區顯示當前音符

End Sub

  當程序運行時首先通過主窗體的Form Load事件在Picture的客戶區繪出五線譜的五條平行的水平線作曲者便可以根據不同的音高在相應位置插入音符插入音符的過程是通過上面的 DisplayNotes函數來實現的利用Windows系統的API(應用程序接口)函數Bitblt所具有的內存數據傳送的功能將Picture 中位圖的一部分提取出來並按照一定的變換後插入到Picture的客戶區制定位置主要代碼如下

Select Case ID

 Case

  BitBlt Picturehdc X& Y& Picturehdc SRCAND

 Case

  BitBlt Picturehdc X& Y& Picturehdc SRCAND

  …

利用Visual Basic6.0實現五線譜作曲工具

五線譜作曲工具的運行效果


From:http://tw.wingwit.com/Article/program/c/201404/30448.html
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.