0

コースワークの課題として、サウンドのエコーを再生する際の遅延時間を変更するサイン オシレーター (フランジャー) を作成する必要があります。この発振器は、調整可能な周波数を持つ必要があります。

関数によって返される値は、この関数で達成した 1 から -1 の間である必要があります。

public void oscillateNumber(){
    for (int i = 0; i < 200; i++){
            oscResult = Math.sin((Number1* Math.PI)/180.0);
        updateNumber();
    }
}

そして、Number1 を -180 から 180 の間で変化させることによって (この解決策はこちら: How to use a Sine / Cosine wave to return an oscillating number )

この発振器に周波数を組み込むにはどうすればよいですか? 周波数は 0 ~ 5Hz の間で調整できる必要があります。

私はこの資料にまったく慣れていないので、このメカニズムを完全に把握しているわけではありません。私が見つけた別の機能は

public void oscillateNumber3(){
    for (int i = 0; i < 400; i++){
        oscResult = (float)Math.sin( angle ); 
        angle += (float)(2*Math.PI) * frequency / 44100f;
        java.lang.System.out.println(oscResult);
    }
}

この値を遅延に追加すると、効果が少し似てきますが、実際に正しいかどうかはわかりません...

これへのポインタは本当に高く評価されます。

アップデート

わかりましたので、Oli のポインターに従って、オシレーターによって生成された数値で遅延を連続的に変調するためのこの関数を思いつきましたが、ループについてはよくわかりません。

public void oscillatorNumber(int frequency, int sampleRate){
    for (int t = 0; t < (sampleRate * frequency); t++){
        oscResult = (float)Math.sin( angle ); 
        angle += (float)(2*Math.PI) * 2 * (t / 44100); // sin(2*pi* f  *(t/Fs))
        java.lang.System.out.println(oscResult);
    }
}

これは正しいように見えますか?

4

1 に答える 1

1

正弦波発振器の一般式は次のとおりです。

y(t) = sin(2*pi*f*t)

ここfで、 は Hz 単位の周波数、tは秒単位の時間です。

于 2012-02-26T18:02:22.267 に答える