使用随机生成的合成器进行MIDI到MP3的自动转换

Cha*_*lie 5 midi mp3

我有400,000个MIDI,我需要自动转换为MP3.我知道MIDI没有定义波形.我也知道我可以将MIDI导入DAW并将合成器映射到单个轨道,所以显然可以自动执行此操作.我一直在寻找一种方法来做到这一点.每个MIDI应该有一个随机生成的合成器映射到每个轨道.

我看过SoundFonts,但我不知道如何创建它们或自动生成它们或自动将它们应用到MIDI.

有没有人知道用于创建可以映射到MIDI轨道的合成器的工具或SDK,还是以编程方式生成和应用SoundFonts的方法?如果没有,是否有人理解允许我这样做的工具中涉及的低级步骤?我找了工具来做到这一点但没有成功.也许如果我理解了所涉及的部分,我可以写一些东西来做这件事,但我甚至不知道该怎么查.

任何帮助将不胜感激,谢谢.

j b*_*j b 5

好的,这里有几个不同的问题,每个都有自己的困难.

MIDI转MP3转换

假设您想要MIDI - > SF2 - > MP3,那么Timidity ++源代码将是一个很好的起点.Timidity ++"可以通过将MIDI文件转换为PCM波形数据来播放MIDI文件".可以在Github上找到最近的Timidity ++分支.

要转换为MP3,您需要一个额外的工具.LAME将是一个很好的起点.将Timidity和LAME拼接在一起,你可以通过SF2从MIDI转到MP3.此脚本说明了如何在不编写自己的应用程序的情况下实现此目

for file in *.mid do
    timidity $file -Ow -o - | lame - $file.mp3
done
Run Code Online (Sandbox Code Playgroud)

随机合成

您的问题的另一个元素,涉及随机生成的合成器,无法通过上述方法轻松解决.如果我正确理解了这个问题,您需要执行以下操作:

  • 合成一些声音,其中合成的某些方面是随机的
  • 随机选择要分配给每个MIDI通道的声音进行播放

SF2是一种主要基于样本的格式,如果您基本上想通过MIDI播放随机合成器并将输出保存到音频文件,则会带来不必要的复杂性.

为了解决您的问题,我建议跳过SF2步骤,并查看像Synthesis ToolKit(STK)这样的音频处理框架.STK能够读取MIDI文件和声音合成.然后,您可以使用LAME将音频缓冲区转换为MP3.