Android
Ljudspår
Sök…
Generera ton för en specifik frekvens
För att spela ett ljud med en specifik ton måste vi först skapa en sinusvågsljud. Detta görs på följande sätt.
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
}
Nu måste vi konfigurera AudioTrack att spela i enlighet med den genererade bufferten. Det görs på följande sätt
AudioTrack audioTrack = new AudioTrack(AudioManager.STREAM_MUSIC,
sampleRate, AudioFormat.CHANNEL_OUT_MONO,
AudioFormat.ENCODING_PCM_16BIT, buffer.length,
AudioTrack.MODE_STATIC);
Skriv den genererade bufferten och spela spåret
audioTrack.write(buffer, 0, buffer.length);
audioTrack.play();
Hoppas det här hjälper :)
Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow