假设有一段字串内容是"1234567",如何让MIDI播放出这7个音呢?
解决方案 »
- 为什么我不实现IEnumerable接口一样可以用foreach
- WPF开发小问题
- 如何实现关闭一个窗体时,会出现一个询问对话框(询问是否关闭),同时执行一段清理程序?
- 关于局部变量赋给全局变量的问题...
- 关于xml实体化的问题
- 请问Crystal Report是否支持动态插入图片
- 电脑里有多块网卡,只有一块连接了网线,需要对该网卡做配置,怎么判断出是哪块网卡?
- 请问16进制和2进制互转的程序要怎么写?
- 使用StreamReader读取.txt文件怎么得不到汉字?
- 想把一个Delphi项目用C#来重新写一下,请问有没有把Delphi代码转换为C#的工具?
- VS08进行编译时的错误。。求解
- C#控制台如何改变指定字符颜色 其他字符颜色还是默认的
查看其中midi相关的api,midiOutShortMsg是向声卡发送指定高低半全音音量声道等消息的api
http://baike.baidu.com/view/2089748.html?fromTaglist
找到这个资料你看看吧,未测试,不知能否解决你的问题
我下载测试了,亲测好用,就是功能有点太强,你把它的简谱功能部分分离出来应该就能用了还有,直接运行程序有错误,需要将目标框架改为.NET 3.5以上版本才能运行(需要Linq)
{
[DllImport("winmm.dll")]
static extern int midiOutOpen(ref IntPtr lphmo, uint uDeviceID, IntPtr dwCallback, IntPtr dwCallbackInstance, uint dwFlags);
[DllImport("winmm.dll")]
static extern uint midiOutShortMsg(IntPtr hMidiOut, uint dwMsg);
[DllImport("winmm.dll")]
static extern uint midiOutClose(IntPtr hMidiOut);
static IntPtr hwnd = IntPtr.Zero;
static void Main(string[] args)
{
midiOutOpen(ref hwnd, 0, IntPtr.Zero, IntPtr.Zero, 0);
Console.ReadLine();
for (int i = 0; i < 7; i++)//从1到7
{
midiOutShortMsg(hwnd, (uint)(0x007F0000 + (0x30 + i) * 256 + 0x95));
Thread.Sleep(1000);
}
Console.ReadLine();
midiOutClose(hwnd);
}
}