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