1

適切な波形パターンをうまく生成できると思われる式を書きました。これをJavaサウンドライブラリと統合して、それぞれのテストトーンを作成するにはどうすればよいですか?

import java.lang.Math;

public class SoundWaves 
{
    int WAV_MULTI = 25;
    int amplitude;
    double frequency;
    int time;
    double sineWave;
    double sawWave;
    double squareWave;

    SoundWave ( int a, int f, int t)
    {
    }

    double makeSineWave ( int a,  int f, int t)
    {
        sineWave = a * Math.sin(2*PI*f*t); //passing amplitude frequency and time
        return sineWave;
    }

    double makeSawTooth (int a, int f, int t)
    {
        for ( int i = 1; i < WAV_MULTI; i++)
        {
            sawWave = sawWave + (Math.sin((2*PI*f*(i*t)/i); 
        }   
        return sawWave;
    }

    double makeSquareWave (int a, int f, int t)
        {
            for ( int i = 1; i < WAV_MULTI; i++)
            {
            if ( i%2 != 0 )
            squareWave = squareWave + (Math.sin((2*PI*f* (i*t)/i);  
            }   
            return squareWave;
        }
}
4

1 に答える 1

1

TargetDataLineを実装するクラスを作成することでそれを行いました。オーバーライドされるメソッドのほとんどは無視できます。データは、TargetDataLine.read()メソッドからSourceDataLineに送られます。SDLに渡されるデータバッファーを埋めるために、TargetDataLineから数式が参照されます。

オーディオ値を適切なバイト形式でPCMデータに変換する方法についてはすでにご存知だと思います。

私はウェーブテーブルを使用し、数式を使用してウェーブテーブルのデータを生成しましたが、数式は問題ないはずです。ビット数の解像度(16ビット?)とfpsレート(44100 Hz?)にマッピングする必要があります。

于 2012-12-04T07:35:46.907 に答える