使用C#播放MIDI声音的最佳方法
时间:2020-03-05 18:39:10 来源:igfitidea点击:
我正在尝试重建一个旧的节拍器应用程序,该应用程序最初是使用C ++中的MFC编写的,而后是使用C#在.NET中编写的。我遇到的问题之一是播放用来代表节拍器"点击"的midi文件。
我在网上找到了一些有关在.NET中播放MIDI
的文章,但是其中大多数似乎都依赖于有人拼凑而成的自定义库。我并不反对使用这些功能,但是我宁愿自己了解如何完成这些操作,因为这似乎应该是一件很琐碎的练习。
所以,我有什么想念的吗?还是在.NET应用程序中使用MIDI很难?
解决方案
回答
我不能声称对此了解很多,但是我不认为这是DotNetRocks的成名卡尔·富兰克林所做的相当多的事情,我们是否看过他的DNRTV?
回答
我认为我们需要P /调用Windows api才能播放.net中的midi文件。
这篇代码项目文章在解释如何做到这一点方面做得很好:
vb.net文章播放midi文件
要重写此代码,我们需要为mciSendString使用以下import语句:
[DllImport("winmm.dll")] static extern Int32 mciSendString(String command, StringBuilder buffer, Int32 bufferSize, IntPtr hwndCallback);
希望这有帮助,祝你好运!
回答
目前,我正在开发CMIDI应用程序,其他的用户则需要为此使用p / invoke。我正在自己动手制作,因为这似乎更适合该应用程序(我只需要一小部分MIDI功能),但是出于目的,CMIDI Toolkit可能更合适。它至少是我发现的最好的.NET MIDI库,在开始该项目之前,我进行了广泛的搜索。
回答
System.Media.SoundPlayer是播放WAV文件的一种很好的简单方法。 WAV文件比MIDI有一些优势,其中之一是我们可以精确控制每种乐器的声音(而不是依靠计算机的内置合成器)。