假设有一段字串内容是"1234567",如何让MIDI播放出这7个音呢?

解决方案 »

  1.   

    http://www.codeproject.com/KB/audio-video/vbnetSoundClass.aspx?msg=1809182
      

  2.   

    这个只是播放MID格式的文件.我的期望是能给出一个数字就播放一个音,而不是通过文件.
      

  3.   

    http://msdn.microsoft.com/en-us/library/dd743586(v=VS.85).aspx
    查看其中midi相关的api,midiOutShortMsg是向声卡发送指定高低半全音音量声道等消息的api
      

  4.   

    不用客气,我不可以写,这不是我的项目,我只提供思路。你可以搜索该API自行来写。C#可以用winmm.dll来录放音,自然也可以使用其他API,win32 api并不是只有C++才可以使用。
    http://baike.baidu.com/view/2089748.html?fromTaglist
      

  5.   

    http://www.codeproject.com/KB/security/steganodotnet20.aspx自己下载吧,希望对你有用。刚毕业的时候跟着项目组做过这个,但那时我是小弟没亲手做过。
    找到这个资料你看看吧,未测试,不知能否解决你的问题
      

  6.   


    我下载测试了,亲测好用,就是功能有点太强,你把它的简谱功能部分分离出来应该就能用了还有,直接运行程序有错误,需要将目标框架改为.NET 3.5以上版本才能运行(需要Linq)
      

  7.   

    我写了一个简单的示例代码,给你发一个    class Program
        {
            [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);
            }
        }