曲谱的保存和读取
在可视化编辑工具中所作的曲目应当能够保存为数据文件。保存和读取的操作是通过通用对话框CommonDialog来实现的,设计程序界面时在窗体上加载一个通用对话框控件。当点取程序菜单上的“保存”时,弹出文件保存对话框,然后设置文件路径对音乐数据进行保存,其代码如下:
CommonDialog1.FileName = App.Path & "/*.txt" CommonDialog1.ShowOpen ‘显示保存对话框 If CommonDialog1.FileName = App.Path & "/*.txt" Then Exit Sub Me.MousePointer = 11 For LineY& = 1 To 40 OutputS = "Tone" & LeadingZeros$(LineY&, 2) & ": " For ColoumX = 1 To 150 A = Chr(Music(LineY&, ColoumX) + Asc("0")) OutputS = OutputS & A ‘写入文件 Next ColoumX Whole$ = Whole$ & OutputS & vbCrLf Next LineY Open CommonDialog1.FileName For Output As #1 Print #1, Whole$ Close #1 ‘关闭文件 |
文件的读取过程与保存过程类似,只要通过Input语句将文件中的数据加载到二维数组Music中去就可以了。
曲谱的合成与播放
曲谱的合成是通过Windows自带的多媒体API函数来实现的,这些API函数在winmm.dll文件中,因此需要把该文件引用到程序中。该动态链接库中包含了多个数字音乐(Midi)输入、输出、合成等方面的库函数。在对曲谱进行Midi合成播放时,首先将二维数组Music中的数据转化为数字音频信号,然后通过计算机的声卡播放出来,其中的关键代码如下:
For LineY& = 1 To 30 If Music(LineY&, X) <> 0 And Not ISAgainFlag Then midimsg = &H90 + ((46 + LineY&) * &H100) + (volume * &H10000) + TempChannel ‘定义音高 midiOutShortMsg hmidi, midimsg ‘输出音频 End If Next LineY |
结束语
本文介绍了一种利用VB环境实现五线谱作曲的可视化编辑工具,目的在于探讨数字音乐技术的基本原理。从功能上说这还是一个原型系统,在此基础上还可进一步扩展功能,如多行编辑、音色选择、乐器选择等。 
2/2 首页 上一页 1 2 |