我需要产生一种可以操纵频率和波动的音调.总体目标是创建一个基本的钢琴.有谁知道我怎么能做到这一点?
我的开发平台是iPhone 2.x.
你总是可以从sin
波浪开始.:-)
#includetypedef 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() {} };
钢琴很奇怪.罗伯特穆格于1980年3月在键盘杂志上写过它.基本(最低频率部分)是合理的,但每个高次谐波都比它应该更亮(或"更尖锐"或更高音调),并且增加量.
第二到第九次谐波比基波更响亮.第十到第二十的声音大致相同.
基本体积膨胀然后潜水,然后它又回来了.其他部分具有特有的上下形状.部分交换能量,因此总体积可以按预期运行.但这是一大堆部分交易能量.我想如果你得到最低的几个正确和奇怪的不和谐传播你就行了.
您可以在软件频谱分析仪中观察动作并了解您需要了解的内容.添加剂合成可能就是我如何处理这个问题.