AudioTrack нет звука с генерацией тона - PullRequest
2 голосов
/ 17 сентября 2011

Я пытаюсь заставить Android AudioTrack воспроизводить прямоугольную волну со следующим кодом

public Synthesizer() {
    bufferSize = android.media.AudioTrack.getMinBufferSize(44100, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT);
    player = new AudioTrack(AudioManager.STREAM_MUSIC, 44100, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT, bufferSize,
            AudioTrack.MODE_STREAM);

}

public void writeSamples(byte[] samples) {
    fillBuffer(samples);
    player.write(buffer, 0, samples.length);
}

private void putBuffer(byte[] samples) {
    if (buffer.length < samples.length)
        buffer = new byte[samples.length];

    for (int i = 0; i < samples.length; i++)
        buffer[i] = samples[i];  

Даже сэмплы будут отрицательными, остальные будут положительными, чтобы получить прямоугольную волну:

btnPlay.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            int frequency = 44100;
            byte[] sample = new byte[frequency];
            for (int i = 0; i < frequency; i++) {
                if (i % 2 == 0) {
                    sample[i] = Byte.MAX_VALUE;
                }

                else {
                    sample[i] = Byte.MIN_VALUE;

                }
            }
            squareSynth.writeSamples(sample);  

К сожалению, у меня вообще нет звука, я проверил свою громкость, но не смог даже получить статический звук или треск.Я нахожу это очень странным.Кто-нибудь знает, как это исправить?

...