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

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

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

谢谢。

有帮助吗?

解决方案

综合工具包 (STK) 非常出色,但它只是 C++:

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

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

其他提示

两个开源波表合成器是 流体合成器胆怯.

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

根据 7 年的合成器经验,我建议更改您最喜欢的合成器的振荡器功能的 20 行,以使其适应读取波形阵列。WT只使用了20行逻辑,合成器的其余部分更重要:LFO、滤波器、输入参数、预设存储器...使用您最喜欢的合成器代替,找到一个 WT 波库作为 WAV 文件和文件夹,并将您最喜欢的合成器振荡器替换为 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 会在每个八度音阶与多个八度音阶录音进行交叉淡入淡出。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top