私の目的は、Android のAudioTrackクラスを使用して、 sine、square、triangle、sawtooth信号を生成することです。
私はチュートリアルに基づいて試みました。生成された周波数が目的の周波数にどれだけ正確に対応するかは常にわかりませんが、比較的うまく機能します。
四角、三角などの関数を作りたいです。チュートリアルでは正弦波のみを実装しています。したがって、私の質問は次のとおりです。
サンプルはどのように機能しますか
new Thread( new Runnable( )
{
public void run( )
{
final float frequency = 440;
float increment = (float)(2*Math.PI) * frequency / 44100; // angular increment for each sample
float angle = 0;
AudioDevice device = new AndroidAudioDevice( );
float samples[] = new float[1024];
while( true )
{
for( int i = 0; i < samples.length; i++ )
{
samples[i] = (float)Math.sin( angle );
angle += increment;
}
device.writeSamples( samples );
}
}
} ).start();
次のように正弦を正方形にすることはできますか (signum 関数を使用)。
samples[i] = (float)Math.signum(Math.sin( angle ));
基本的には、書かれているサンプルを根本的に理解したいので、さまざまな信号を生成し、最終的にそれらを重ねることもできます。
お時間をいただきありがとうございます!