Raf*_*ega 7 c++ audio synthesis
我开始编写一个具有特殊特性的软合成器:振荡器将有一个"连续波形"旋钮,允许用户以连续的方式选择正弦波,方波和锯齿波.也就是说,如果旋钮一直向左,输出将是一个正弦波,如果它在中间它将是一个锯齿波,如果它一直向右,它将是一个方波然后中间位置将输出经典波的"插值"版本的波. - 可以改变旋钮位置和波浪类型,但需要连续改变波形的方法 -
我想到了几种实现振荡器的方法:
提出一个功能,它采用旋钮位置并计算实际信号的频谱(幅度和频率阵列),然后使用一串正弦函数和一个和块来实现输出信号.
类似于1.但应用反向傅立叶变换而不是正弦和求和(好的,此时我不确定它们是否实际上是相同的东西.)
为每个可能的旋钮位置生成波形表,并使用波表合成技术生成输出信号.
从2个锯齿波开始(它们包含偶数和奇数谐波),反转一个并求它们,并用旋钮控制每个齿的振幅.波形不会
我有几个问题:
答:我读过1号技术是处理器密集型的,并不是真的可行.这适用于ARM处理器,例如iPad上的处理器吗?
B.无论我最终选择什么技术,只需将低通滤波器连接到振荡器的输出就可以解决混叠问题?
C.关于如何实施这种振荡器的任何其他建议?
D.关于使用哪个C++工具包的任何建议?我一直在看CCRMA的STK,但我不知道是否还有其他更合适的库.
祝我好运!;)
编辑:昨晚有人指我吵闹.贝塞尔曲线是另一个需要考虑的选择.
傅里叶变换是线性的,因此对方波和锯齿波进行 FFT 并对每个谐波进行线性交叉渐变,然后通过 iFFT 或正弦求和将其带回到时域,应该给出与锯齿波和锯齿波交叉渐变完全相同的输出直接方波信号。我不确定这是否是您想要做的,但如果是,则无需进行 FFT 或计算中间表。
当然,还有许多其他方法可以在波形之间平滑“淡入淡出” - 例如,您可以使用相位失真,使用由线性段组成的失真曲线,将其从生成正方形的位置移动到生成锯齿状的位置。以固有带宽限制的方式实现这一点可能非常棘手。
实际上,通常可以使用过采样和过滤或仅过滤来解决混叠问题。使用频带限制技术更好,因为混叠总是会产生一些噪音,但您通常可以将其过滤得足够低,使其听不见,这对于音频合成来说很重要。
| 归档时间: |
|
| 查看次数: |
2161 次 |
| 最近记录: |