c# - 如何使用流体合成从 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);
解决方案
NAudio 的 SoundFont 支持将简单地告诉您 SF2 文件中的内容。它没有实现软件采样器,FluidSynth 就是这样。因此,您需要为 FluidSynth 使用 .NET 包装器,或者,您可以创建单音符 MIDI 文件,然后生成命令行以通过 FluidSynth 将整个 MIDI 文件渲染为 WAV,并加载所需的 SoundFont。我认为这可能是实现您想要的最简单的途径。
推荐阅读
- hive - hive-warehouse-connector_2.11 + 必填字段“client_protocol”未设置
- javascript - 动态 - 触发检查必填字段而不保存
- python - 旧 python 脚本的问题
- c# - 在 Teams 机器人中发送打字活动失败 - BadGateway
- python-3.x - Pandas 将 csv 数据转换为浮点数
- python - 在 Python 3 中解压 pandas/numpy 时出现内存泄漏
- r - 在 R 中使用类似 dplyr 的命令来组织栅格数据
- r - ggplot 订购一个聚集的条形图
- android-studio - RxJava 中@CheckReturnValue 的正确用法是什么?
- gradle - ML Gradle task.Server.Eval.Task 使用 xquery 设置变量