问题 如何在c#中将midi转换为wav / mp3?


我开始了一个小项目,包括使用MIDI文件。我一直在想,是否有任何C#或VB.Net代码可以实现MIDI和WAV文件之间的转换?


12402
2017-07-26 19:52


起源



答案:


你可以尝试以某种方式与...接口 胆怯,这是开源的:

TiMidity ++是一个软件合成器。它可以通过将MIDI文件转换为PCM波形数据来播放MIDI文件;给它一个MIDI数据和数字乐器数据文件,然后实时合成它们并播放。它不仅可以播放声音,还可以将生成的波形保存为各种音频文件格式的硬盘。

FluidSynth 是一个类似的最新更新的开源项目:

FluidSynth是基于SoundFont 2规范的实时软件合成器。

您可以从网站上下载一些免费的SoundFonts(这些合成器用来“渲染”MIDI文件的实际PCM数据) 这个清单


8
2017-07-26 20:23



很好的链接,雅各布。 - Robert Harvey♦
谢谢,发现它回来的时候。适用于此列表中的声音字体: en.wikipedia.org/wiki/SoundFont#Free_SoundFont_downloads - Jacob
雅各布,这些链接很棒。我相信他们会有用。我特别喜欢TiMidity ++功能:'通过网络播放远程MIDI文件'你知道我在哪里可以找到.exe文件吗?在配置链接器c ++应用程序时,我总是搞砸了(我不是一个很棒的c ++程序员) - vondip
你可以试试 ocmnet.com/saxguru/Timidity.htm 要么 hitsquad.com/smm/programs/TiMidity_win32。我找不到我最初下载它的网站,我还没有尝试过这些软件包。 - Jacob


答案:


你可以尝试以某种方式与...接口 胆怯,这是开源的:

TiMidity ++是一个软件合成器。它可以通过将MIDI文件转换为PCM波形数据来播放MIDI文件;给它一个MIDI数据和数字乐器数据文件,然后实时合成它们并播放。它不仅可以播放声音,还可以将生成的波形保存为各种音频文件格式的硬盘。

FluidSynth 是一个类似的最新更新的开源项目:

FluidSynth是基于SoundFont 2规范的实时软件合成器。

您可以从网站上下载一些免费的SoundFonts(这些合成器用来“渲染”MIDI文件的实际PCM数据) 这个清单


8
2017-07-26 20:23



很好的链接,雅各布。 - Robert Harvey♦
谢谢,发现它回来的时候。适用于此列表中的声音字体: en.wikipedia.org/wiki/SoundFont#Free_SoundFont_downloads - Jacob
雅各布,这些链接很棒。我相信他们会有用。我特别喜欢TiMidity ++功能:'通过网络播放远程MIDI文件'你知道我在哪里可以找到.exe文件吗?在配置链接器c ++应用程序时,我总是搞砸了(我不是一个很棒的c ++程序员) - vondip
你可以试试 ocmnet.com/saxguru/Timidity.htm 要么 hitsquad.com/smm/programs/TiMidity_win32。我找不到我最初下载它的网站,我还没有尝试过这些软件包。 - Jacob


MIDI文件 仅包含音符和控制器信息,而不包含声音。为了从MIDI文件中获取声音,您必须通过音乐合成器或采样器传递文件,音乐合成器或采样器会将音符和控制器信息转换为实际声音。

实际上,这意味着任何给定的MIDI文件都没有特定的声音。将MIDI文件转换为音频所产生的声音将根据合成器或样本库的质量以及为执行转换而选择的声音而有所不同。

许多声卡都能够从MIDI文件中产生声音。他们可以这样做,因为许多MIDI文件遵循一个名为的标准 通用MIDI规范。通用MIDI规范提供了映射特定仪器分配的标准化方法。如果您的MIDI文件符合此标准,您可以通过通用MIDI声音发生器播放它,并期望小鼓听起来像军鼓,而不是像小号。

如果你有一个复杂的音乐制作包 步态,您可以将MIDI文件加载到其中,它将使用其板载声音库为您渲染声音文件,这实际上可以比实时更快地完成(即它不必播放声音通过声卡并捕获输出)。

我想我想说的是这里有很多活动部分。没有一段代码或类模块可以为您执行此操作。


8
2017-07-26 20:16



我希望能够在silverlight上播放midi文件,我表达的太多了吗? - vondip
我不认为您需要将MIDI转换为WAV才能在Silverlight中播放。如果silverlight无法原生处理MIDI文件,那么您可以使用Windows multimedia API播放MIDI文件。 - MusiGenesis
我怎么做? Silverlight的环境阻止我访问它。如何添加Windows多媒体API的com引用? - vondip
不是Silverlight,但我觉得这很酷...... JQuery Media插件: malsup.com/jquery/media/#overview - Robert Harvey♦
“很多活动部分” - 我只能想到两个。用于渲染的合成器包,以及实际执行渲染的代码。 - andrewrk


你可以购买许多程序来执行此操作(google“将midi转换为WAV”),但我从来没有遇到过这样做的公共可用的.Net代码(我认为其中一些程序是用这些程序编写的)。网,但源代码不可用)。

我有一个在线朋友正在研究商用MIDI-to-WAV转换器,但它不在.Net中,它不会是开源的。正如罗伯特哈维所提到的,这根本不是一项简单的任务,因为它基本上涉及编写自己的软件合成器(我心中的任务)。


0
2017-07-26 20:21