サーチ…


特定の周波数のトーンを生成する

特定の音色の音を再生するには、まず正弦波のサウンドを作成する必要があります。これは次のようにして行われます。

final int duration = 10; // duration of sound
final int sampleRate = 22050; // Hz (maximum frequency is 7902.13Hz (B8))
final int numSamples = duration * sampleRate;
final double samples[] = new double[numSamples];
final short buffer[] = new short[numSamples];
for (int i = 0; i < numSamples; ++i) 
{
 samples[i] = Math.sin(2 * Math.PI * i / (sampleRate / note[0])); // Sine wave
 buffer[i] = (short) (samples[i] * Short.MAX_VALUE);  // Higher amplitude increases volume
}

これで、生成されたバッファに合わせて再生するようにAudioTrackを設定する必要があります。これは次のようにして行われる

AudioTrack audioTrack = new AudioTrack(AudioManager.STREAM_MUSIC,
                    sampleRate, AudioFormat.CHANNEL_OUT_MONO,
                    AudioFormat.ENCODING_PCM_16BIT, buffer.length,
                    AudioTrack.MODE_STATIC);

生成されたバッファを書き込み、トラックを再生する

audioTrack.write(buffer, 0, buffer.length);
audioTrack.play();

お役に立てれば :)



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow