Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save niphadkarneha/a674b1b100e3f8250851622940a6c793 to your computer and use it in GitHub Desktop.
Save niphadkarneha/a674b1b100e3f8250851622940a6c793 to your computer and use it in GitHub Desktop.
Android Tone Generator
// Usage:
// AudioTrack tone = generateTone(440, 250);
// tone.play();
//
private AudioTrack generateTone(double freqHz, int durationMs)
{
int count = (int)(44100.0 * 2.0 * (durationMs / 1000.0)) & ~1;
short[] samples = new short[count];
for(int i = 0; i < count; i += 2){
short sample = (short)(Math.sin(2 * Math.PI * i / (44100.0 / freqHz)) * 0x7FFF);
samples[i + 0] = sample;
samples[i + 1] = sample;
}
AudioTrack track = new AudioTrack(AudioManager.STREAM_MUSIC, 44100,
AudioFormat.CHANNEL_OUT_STEREO, AudioFormat.ENCODING_PCM_16BIT,
count * (Short.SIZE / 8), AudioTrack.MODE_STATIC);
track.write(samples, 0, count);
return track;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment