首页 > 解决方案 > Android AudioTrack 生成缓冲区,其中一只耳朵有一个频率,另一只耳朵有第二个频率

问题描述

我在 android 上生成音调

public void toneer(){
    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 / 440)); // Sine wave
        buffer[i] = (short) (samples[i] * Short.MAX_VALUE);  // Higher amplitude increases volume
    }


    AudioTrack audioTrack = new AudioTrack(AudioManager.STREAM_MUSIC,
            sampleRate, AudioFormat.CHANNEL_OUT_MONO,
            AudioFormat.ENCODING_PCM_16BIT, buffer.length,
            AudioTrack.MODE_STATIC);
    audioTrack.write(buffer,  0, buffer.length);
    audioTrack.play();
}

我已经看到一些地方在讨论是否可以让缓冲区在右侧的左侧发出声音?

我的问题是:如何产生“双耳”节拍,一只耳朵一个频率,而另一只耳朵播放另一个音调?

标签: androidaudiotrack

解决方案


推荐阅读