免费波表合成器?
我需要在 ARM Cortex-M3 内核中实现 波表合成器。 我正在寻找任何代码或工具来帮助我入门。
我知道此 AVR 实现。 我实际上不久前将其转换为 PIC。 现在我正在寻找类似的东西,但听起来更好一点。
ANSI C 代码会很棒。 任何代码片段(C 或 C++)、示例、工具或只是一般信息将不胜感激。
谢谢。
I need to implement a wavetable synthesizer in an ARM Cortex-M3 core. I'm looking for any code or tools to help me get started.
I'm aware of this AVR implementation. I actually converted it to a PIC a while back. Now I am looking for something similar, but a little better sounding.
ANSI C code would be great. Any code snippets (C or C++), samples, tools, or just general information would be greatly appreciated.
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
综合工具包 (STK) 非常出色,但它只是 C++:
http://ccrma.stanford.edu /software/stk/
不过,您也许可以从 STK 中提取波表合成器代码。
The Synthesis Toolkit (STK) is excellent, but it is C++ only:
http://ccrma.stanford.edu/software/stk/
You may be able to extract the wavetable synthesizer code from the STK though.
两个开源波表合成器是 FluidSynth 和 TiMidity。
Two open-source wavetable synthesizers are FluidSynth and TiMidity.
任何 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 的波形,理想情况下每个波形在每个八度音阶采样。 如果你能得到一个波表声音库,合成器只是循环,音调变化,声音,专业合成器也可以有多个八度来混合八度。
WTfunction =
wavescanner 功能=
包络、滤波器、幅度和所有其他功能都独立于所有合成器中的波形生成功能。
请记住,合成器最强大的心理声学工具是与音符的数字音调的偏差,这称为齐声失谐,合成器的声音特征主要来自合唱和齐声失谐。
WT 是更高级合成器中较长部分的单周期波。 单句点的东西非常容易写入代码。 先进的 WT 每八度采样一次,波持续 N 个周期,甚至 2-3 秒,即钢琴,这意味着它们通过八度音程改变音质,因此复杂的 WT 会在多个八度音阶录音的每个八度音阶交叉淡化。
Any ARM synth, the best ones, can be changed to wavescanner in less than a day. Scanning the wave from files or generating them mathematically is nearly the same thing audio wise, WT provides massive banks of waveforms at zero processing cost, you need the waves, the WT oscillator code itself is 20 lines. so change your waveform knob from 3 to 100 to indicate which WAV you are reading, use a ramp/counter to read the WAV files(as arrays). WT fixed.
From 7 years of Synth experience, i'd recommend to change 20 lines of the oscillator function of your favorite synth to adapt it to read wave arrays. The WT only uses 20 lines of logic, the rest of the synthesizer is more important: LFO's, Filters, input parameters, preset memory... Use your favorite synth instead and find a WT wave library as WAV files and folders, and replace your fav synth oscillators with WT functions, it will sound almost the same, only lower processing costs.
A synth normally uses Sin, Sqr, Saw, Antialiased OSC functions for the wave...
A wavetable synth uses about 20 lines of code at it's base, and 10/20/100ds of waves, each wave sampled at every octave ideally. If you can get a wavetable sound library, the synth just loops, pitch shifts, the sounds, and pro synths can also have multiple octave to mix the octaves.
WTfunction =
wavescanner function =
The envelope, filter, amplitude, all other functions are independent from the wave generation function in all synths.
remember the the most powerful psychoacoustic tool for synthesizers is deviation from the digital tone of the notes, it's called unison detune, sonic character of synthesizers mostly comes from chorus and unison detune.
WT's are either single periods of waves of longer sections, in more advanced synths. the single period stuff is super easy to write into code. the advanced WT's are sampled per octave with waves lasting N periods, even 2-3 seconds, i.e. piano, and that means that they change sound quality through the octaves, so the complex WT's are crossfaded every octave with multiple octave recordings.