9

周波数と波を操作できるトーンを生成する必要があります。全体的な目標は、基本的なピアノを作成することです。どうすればこれを達成できるか知っている人はいますか?

私の開発プラットフォームは iPhone 2.x です

4

6 に答える 6

7

いつでも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() {}
};
于 2008-12-08T09:56:07.600 に答える
3

Mobilesynth をチェックしてください...アプリ ストアのオープン ソース シンセサイザー: http://code.google.com/p/mobilesynth/

于 2009-09-28T07:03:51.637 に答える
2

正弦波を再生するDefaultOutputUnitサンプルコードを確認してください。

/ Developer / Examples / CoreAudio / SimpleSDK / DefaultOutputUnit

于 2009-08-09T10:54:19.443 に答える
2

Apple Developer Forumsには、これに関するスレッド (" Audio Synthesis ") があり、洞察が得られる可能性があります。

于 2008-12-08T10:22:18.777 に答える
2

http://mda.smartelectronix.com/をチェックしてください。これらは一連のオープン ソース VST プラグインです。Piano、ePiano、またはDX10のソースを見てください。それはあなたが見つけようとしているのと同じくらい簡単です。

于 2008-12-07T15:08:23.333 に答える