【问题标题】:Free Wavetable Synthesizer?免费的波表合成器?
【发布时间】:2010-09-06 23:28:19
【问题描述】:

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

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

ANSI C 代码会很棒。非常感谢任何代码 sn-ps(C 或 C++)、示例、工具或一般信息。

谢谢。

【问题讨论】:

    标签: audio arm microcontroller synthesizer sound-synthesis


    【解决方案1】:

    任何 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 读取波形阵列

    wavescanner 函数 =

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

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

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

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

    【讨论】:

      【解决方案2】:

      两个开源波表合成器是FluidSynthTiMidity

      【讨论】:

        【解决方案3】:

        Synthesis Toolkit (STK) 非常棒,但它只是 C++:

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

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

        【讨论】:

          猜你喜欢
          • 2012-01-01
          • 2019-05-01
          • 1970-01-01
          • 1970-01-01
          • 2012-01-01
          • 2011-02-17
          • 1970-01-01
          • 2011-10-24
          • 1970-01-01
          相关资源
          最近更新 更多