首页 > 解决方案 > 如何使用流体合成从 C# 中的声音字体生成声音

问题描述

我有一个变量列表 [bank number, patch number, note number, length and velocity] 用于预先从 MIDI 中提取的每个音符,我想使用 SoundFont 根据这些变量从每个音符生成正确的样本,所以SoundFont + 变量吐出一个样本。我只需要波形数据,我有 NAudio 库。我可以使用 FluidSynth 为我生成样本吗?我看到有 FluidSynth 的 .net 包装器,但我不知道如何实现它。

我尝试自己编写代码来读取 SoundFont,但它没有得到正确的样本,并且它缺少许多调制器和效果。这真的很糟糕,我几乎没有让它工作。

SoundFont sf2 = new SoundFont(path);
WaveStream wave = ImportFromSoundFont(args, sf2);

标签: c#midinaudiosoundfontfluidsynth

解决方案


NAudio 的 SoundFont 支持将简单地告诉您 SF2 文件中的内容。它没有实现软件采样器,FluidSynth 就是这样。因此,您需要为 FluidSynth 使用 .NET 包装器,或者,您可以创建单音符 MIDI 文件,然后生成命令行以通过 FluidSynth 将整个 MIDI 文件渲染为 WAV,并加载所需的 SoundFont。我认为这可能是实现您想要的最简单的途径。


推荐阅读