Android
Audio bestand
Zoeken…
Genereer toon van een specifieke frequentie
Om een geluid met een specifieke toon te spelen, moeten we eerst een sinusgolfgeluid maken. Dit gebeurt op de volgende manier.
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 moeten we AudioTrack configureren om te spelen in overeenstemming met de gegenereerde buffer. Dit gebeurt op de volgende manier
AudioTrack audioTrack = new AudioTrack(AudioManager.STREAM_MUSIC,
sampleRate, AudioFormat.CHANNEL_OUT_MONO,
AudioFormat.ENCODING_PCM_16BIT, buffer.length,
AudioTrack.MODE_STATIC);
Schrijf de gegenereerde buffer en speel het nummer
audioTrack.write(buffer, 0, buffer.length);
audioTrack.play();
Ik hoop dat dit helpt :)
Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow