2

我需要在 ARM Cortex-M3 内核中实现波表合成器。我正在寻找任何代码或工具来帮助我入门。

我知道这个 AVR implementation。实际上,我不久前将其转换为图片。现在我正在寻找类似的东西,但听起来更好一些。

ANSI C 代码会很棒。任何代码片段(C 或 C++)、示例、工具或一般信息都将不胜感激。

谢谢。

4

3 回答 3

5

Synthesis Toolkit (STK) 非常出色,但它仅支持 C++:

http://ccrma.stanford.edu/software/stk/

不过,您也许可以从 STK 中提取波表合成器代码。

于 2008-08-27T15:31:08.967 回答
4

两个开源波表合成器是FluidSynthTiMidity

于 2008-09-17T08:47:29.013 回答
0

任何 ARM 合成器,最好的合成器,都可以在不到一天的时间内转换为 wavescanner。从文件中扫描波形或以数学方式生成它们在音频方面几乎是相同的,WT 以零处理成本提供大量波形,您需要波形,WT 振荡器代码本身是 20 行。因此,将波形旋钮从 3 更改为 100 以指示您正在读取的 WAV,使用斜坡/计数器读取 WAV 文件(作为数组)。WT 固定。

从 7 年的合成器经验来看,我建议更改您最喜欢的合成器的 20 行振荡器功能,以使其适应读取波阵列。WT 只用了 20 行逻辑,合成器的其余部分更重要:LFO、滤波器、输入参数、预设内存……用你喜欢的合成器代替,找到一个 WT 波库作为 WAV 文件和文件夹,并替换你的fav 带有 WT 功能的合成振荡器,听起来几乎一样,只是处理成本更低。

合成器通常使用 Sin, Sqr, Saw, Antialiased OSC 函数来生成波形...

波表合成器在其基础上使用大约 20 行代码,以及 10/20/100ds 的波形,理想情况下,每个波形都以每个八度音程采样。如果您可以获得波表声音库,则合成器只是循环,音高变化,声音和专业合成器也可以有多个八度音阶来混合八度音阶。

WT函数=

  • 将 WAV 文件加载到 N 个数组中
  • 更改波形 = 从 WAV 列表中选择波形数组
  • 以所需的 Hz 读取波形阵列

波扫描仪功能 =

  • 在 2 个波之间进行交叉渐变并将 xfade 分配给 LFO,即正弦波和 xfade。

包络、滤波器、振幅和所有其他函数都独立于所有合成器中的波生成函数。

记住合成器最强大的心理声学工具是偏离音符的数字音调,它被称为同音失谐,合成器的声音特性主要来自合唱和同音失谐。

在更高级的合成器中,WT 是较长部分的单周期波。单周期的东西非常容易写入代码。高级 WT 每八度采样一次,波形持续 N 个周期,甚至 2-3 秒,即钢琴,这意味着它们通过八度改变音质,因此复杂的 WT 在每个八度交叉淡化,并带有多个八度录音。

于 2018-01-14T06:30:54.867 回答