Android
Piste audio
Recherche…
Générer le ton d'une fréquence spécifique
Pour jouer un son avec une sonorité spécifique, il faut d'abord créer un son sinusoïdal. Ceci se fait de la manière suivante.
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
}
Maintenant, nous devons configurer AudioTrack pour jouer en fonction du tampon généré. Cela se fait de la manière suivante
AudioTrack audioTrack = new AudioTrack(AudioManager.STREAM_MUSIC,
sampleRate, AudioFormat.CHANNEL_OUT_MONO,
AudioFormat.ENCODING_PCM_16BIT, buffer.length,
AudioTrack.MODE_STATIC);
Ecrire le tampon généré et jouer la piste
audioTrack.write(buffer, 0, buffer.length);
audioTrack.play();
J'espère que cela t'aides :)
Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow