amc*_*oud 9 iphone signal-processing objective-c core-audio piano
我需要产生一种可以操纵频率和波动的音调.总体目标是创建一个基本的钢琴.有谁知道我怎么能做到这一点?
我的开发平台是iPhone 2.x.
你总是可以从sin波浪开始.:-)
#include <cmath>
typedef double Sample;
typedef double Time;
class MonoNote {
protected:
Time start, duration;
virtual void internalRender(double now, Sample *mono) = 0;
public:
MonoNote(Time s, Time d) : start(s), duration(d) {}
virtual ~MonoNote() {}
void render(double now, Sample *mono) {
if (start <= now && now < start + duration) {
internalRender(now, mono);
}
}
};
class MonoSinNote : public MonoNote {
Time freq;
Sample amplitude;
protected:
void internalRender(double now, Sample *mono) {
const double v = sin(2*M_PI*(now - start) * freq);
*mono += amplitude*v;
}
public:
MonoSinNote(Time s, Time d, Time f, Sample a) : MonoNote(s, d), freq(f), amplitude(a) {}
~MonoSinNote() {}
};
Run Code Online (Sandbox Code Playgroud)
钢琴很奇怪.罗伯特穆格于1980年3月在键盘杂志上写过它.基本(最低频率部分)是合理的,但每个高次谐波都比它应该更亮(或"更尖锐"或更高音调),并且增加量.
第二到第九次谐波比基波更响亮.第十到第二十的声音大致相同.
基本体积膨胀然后潜水,然后它又回来了.其他部分具有特有的上下形状.部分交换能量,因此总体积可以按预期运行.但这是一大堆部分交易能量.我想如果你得到最低的几个正确和奇怪的不和谐传播你就行了.
您可以在软件频谱分析仪中观察动作并了解您需要了解的内容.添加剂合成可能就是我如何处理这个问题.
| 归档时间: |
|
| 查看次数: |
6245 次 |
| 最近记录: |