Android
Traccia audio
Ricerca…
Genera tono di una frequenza specifica
Per riprodurre un suono con un tono specifico, dobbiamo prima creare un suono sinusoidale. Questo viene fatto nel modo seguente.
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
}
Ora dobbiamo configurare AudioTrack per giocare secondo il buffer generato. È fatto nel modo seguente
AudioTrack audioTrack = new AudioTrack(AudioManager.STREAM_MUSIC,
sampleRate, AudioFormat.CHANNEL_OUT_MONO,
AudioFormat.ENCODING_PCM_16BIT, buffer.length,
AudioTrack.MODE_STATIC);
Scrivi il buffer generato e riproduci la traccia
audioTrack.write(buffer, 0, buffer.length);
audioTrack.play();
Spero che questo ti aiuti :)
Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow