将MIDI转换为MP3

3

我需要批量从MIDI文件生成MP3文件。是否有一个可以做到这一点的库?最好是开源的,使用.NET编写。


@yodaj007:我认为LAME不能读取MIDI……它必须先转换为波形。 - Mauricio Scheffer
搜索音色库。如果你有音色库,我认为FruitLoops可以将MIDI转换为mp3。 - Spidey
简短的回答是不可能的,但我很想知道你实际上想要完成什么。也许有其他方法可以达到目的。 - cdonner
我有大约80个用MIDI编写的作品,我想将它们转换成MP3格式,这样它们就可以在所有计算机上播放,并且声音相同。 - Amy
http://is.gd/igp4m -- 我看到了很多有关将MIDI转换为音频的问题,我不得不写下这篇文章。如果您考虑编写某些需要执行此操作的软件系统,请花些时间阅读它。 - Nik Reiman
这个主题也在 https://stackoverflow.com/questions/2321881/need-a-library-that-generates-wave-from-midi/ 上讨论过,也许你可以在那里找到一些信息,特别是在我的回答中。生成的波形可以编码为 MP3 或任何你喜欢的格式。关于将 WAVE 编码为 MP3,可以使用 LAME 编码器 dll 的 示例项目 - Aries
3个回答

2
您可以使用批处理文件和VLC将Midi转换为Mp3。
正如VLC wiki中所述,在Windows中播放midi需要1.1.0版本以及声音字体。该版本目前正在测试中,可以从http://download.videolan.org/pub/videolan/testing/下载。
一旦根据wiki设置了midi支持并进行了测试(通过播放midi),您就可以设置批处理文件。
我用于将单个midi转换为mp3的命令是:
C:\Users\Public\Music>"C:\Program Files\VideoLAN\VLC\vlc" -I dummy -vvv "australia.mid" --sout=#transcode{acodec="mp3",ab="512","channels=2"}:standard{access="file",mux="raw",dst="australia.mp3"} vlc://quit

上述命令将两个文件保留在同一个文件夹中。 我从VLC维基-如何批量编码中找到的信息改编了这个命令。

1

你最大的挑战是将 MIDI 转换为任何格式的波形。例如,MIDI 不指定钢琴的声音,因此每个 MIDI 播放器的声音都会不同。


0
这可以通过使用timiditylame来实现:
timidity myMidiFile.midi -Ow -o - | lame - audioOutput.mp3"

针对您的批处理需求,请在批处理脚本中使用这些程序。

如果需要与C相关,请尝试查看Csound

对于.NET,请查看NAudio


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接