AutoCAD 3DMAX C语言 Pro/E UG JAVA编程 PHP编程 Maya动画 Matlab应用 Android
Photoshop Word Excel flash VB编程 VC编程 Coreldraw SolidWorks A Designer Unity3D
 首页 > VB编程

利用VB6.0实现五线谱作曲工具

51自学网 http://www.wanshiok.com

  曲谱的保存和读取

  在可视化编辑工具中所作的曲目应当能够保存为数据文件。保存和读取的操作是通过通用对话框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环境实现五线谱作曲的可视化编辑工具,目的在于探讨数字音乐技术的基本原理。从功能上说这还是一个原型系统,在此基础上还可进一步扩展功能,如多行编辑、音色选择、乐器选择等。

 
 

上一篇:用VB建立字符界面的控制台程序  下一篇:教你如何用Visual&nbsp;Basic编写病毒