你的位置:首页 > 软件开发 > ASP.net > C# WinForm使用乐器数字接口

C# WinForm使用乐器数字接口

发布时间:2016-02-29 21:00:24
继续,前面已经实现了C#调用Windows API实现了弹出对话框功能。使用了User32.dll文件,主要代码如下:[DllImport("User32.dll")]public static extern int MessageBox(int h, str ...

C# WinForm使用乐器数字接口

继续,前面已经实现了C#调用Windows API实现了弹出对话框功能。使用了User32.dll文件,主要代码如下:[DllImport("User32.dll")]效果如下:详情参考:http://hovertree.com/h/bjaf/jeg0ytf5.htm效果图:MIDI(Musical Instrument Digital Interface)乐器数字接口 ,是20 世纪80 年代初为解决电声乐器之间的通信问题而提出的。MIDI是编曲界最广泛的音乐标准格式,可称为“计算机能理解的乐谱”。它用音符的数字控制信号来记录音乐。一首完整的MIDI音乐只有几十KB大,而能包含数十条音乐轨道。几乎所有的现代音乐都是用MIDI加上音色库来制作合成的。MIDI 传输的不是声音信号, 而是音符、控制参数等指令, 它指示MIDI 设备要做什么,怎么做, 如演奏哪个音符、多大音量等。它们被统一表示成MIDI 消息(MIDI Message) 。传输时采用异步串行通信, 标准通信波特率为31.25×( 1±0.01) KBaud。所以调用API播放midi也是按照格式指定播放指令。接下来就测试实现midi功能。首先是打开midi输出设备的API:在C#中调用该API:其中lphMidiOut 为设备的句柄 ,在后面播放声音会用到。然后是向设备发送播放指令API:在C#中调用:这里hMidiOut就是midiOutOpen方法的lphMidiOutMidi输出设备,之后打开后才能播放声音,在封装的类HewenqiMidi中加一个状态,表示设备是否打开,代码为:private bool _isOpened; 因为是调用API,所以设备有一个句柄,也就是上面提到的lphMidiOut ,所以类中加一个设备句柄字段,句柄的类型为32位无符号整形UNIT,参考:http://hovertree.com/h/bjaf/exee7473.htm,代码为:private uint _deviceHandle; 用来存储midiOutOpen获得的句柄lphMidiOut,这两个字段可以封装为属性,只读的属性。接下来,实现设备的打开功能,主要代码:播放声音的方法:参数msg表示要播放的声音,这个参数可以包含音量和音高等信息,详情请参考:/// <summary>打开MIDI设备后,要怎么关闭呢?也是调用API:在C#中调用:接着,使用HewenqiMidi 类,建立一个WinForm 窗体,测试播放功能。如下图所示:演示下载地址:http://hovertree.com/h/bjaf/xy6rbg5m.htm

源码发布到这个网址:http://hovertree.net/

转自:http://hovertree.com/h/bjaf/dg7nbe4t.htm

 


原标题:C# WinForm使用乐器数字接口

关键词:C#

C#
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录