当前位置:  开发笔记 > IOS > 正文

Cocoa Touch中的音调生成

如何解决《CocoaTouch中的音调生成》经验,为你挑选了2个好方法。

我需要产生一种可以操纵频率和波动的音调.总体目标是创建一个基本的钢琴.有谁知道我怎么能做到这一点?

我的开发平台是iPhone 2.x.



1> Frank Kruege..:

你总是可以从sin波浪开始.:-)

#include 

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() {}
};



2> Nosredna..:

钢琴很奇怪.罗伯特穆格于1980年3月在键盘杂志上写过它.基本(最低频率部分)是合理的,但每个高次谐波都比它应该更亮(或"更尖锐"或更高音调),并且增加量.

第二到第九次谐波比基波更响亮.第十到第二十的声音大致相同.

基本体积膨胀然后潜水,然后它又回来了.其他部分具有特有的上下形状.部分交换能量,因此总体积可以按预期运行.但这是一大堆部分交易能量.我想如果你得到最低的几个正确和奇怪的不和谐传播你就行了.

您可以在软件频谱分析仪中观察动作并了解您需要了解的内容.添加剂合成可能就是我如何处理这个问题.

推荐阅读
wurtjq
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有