我需要在ARM Cortex-M3内核中实现wavetable synthesizer。我正在寻找任何代码或工具来帮助我开始。
我知道this AVR implementation。我实际上将它转换为PIC一段时间。现在我正在寻找类似的东西,但听起来更好一点。
ANSI C代码会很棒。任何代码片段(C或C ++),样本,工具或只是一般信息将不胜感激。
感谢。
答案 0 :(得分:4)
答案 1 :(得分:3)
两个开源波表合成器FluidSynth和TiMidity。
答案 2 :(得分:0)
任何ARM合成器,最好的合成器,都可以在不到一天的时间内更换为wavecanner。扫描文件中的波形或以数学方式生成它们几乎是音频方面的事情,WT以零处理成本提供大量波形,你需要波,WT振荡器代码本身就是20行。所以将波形旋钮从3更改为100以指示您正在读取的WAV,使用斜坡/计数器读取WAV文件(作为阵列)。 WT固定。
从7年的Synth经验来看,我建议改变你最喜欢的合成器的20行振荡器功能,使其适应读波阵列。 WT仅使用20行逻辑,合成器的其余部分更重要:LFO,滤波器,输入参数,预设存储器...使用您喜欢的合成器,找到WT波形库作为WAV文件和文件夹,并替换您的具有WT功能的fav synth振荡器,它听起来几乎相同,只是降低了处理成本。
合成器通常使用Sin,Sqr,Saw,Antialiased OSC函数进行波动......
wavetable synth在它的基础上使用大约20行代码,以及10/20 / 100ds波,每个波在理想情况下在每个八度音阶处采样。如果你可以得到一个波表声音库,合成器只是循环,音高变换,声音和专业合成器也可以有多个八度音阶来混合八度音阶。
WTfunction =
wavescanner function =
包络,滤波器,幅度,所有其他函数独立于所有合成器中的波生成函数。
记住合成器最强大的心理声学工具是偏离音符的数字音调,它被称为unison detune,合成器的声音特性大多来自合唱和协调失谐。WT是单个较长部分的波段,在更高级的合成器中。单个周期的东西很容易写入代码。高级WT采用每个八度音阶进行采样,波长持续N个周期,甚至2-3秒,即钢琴,这意味着它们通过八度音程改变声音质量,因此复杂的WT在每个八度音程中交叉渐变,具有多个八度音阶录音。