Использование AudioTrack для эквалайзера.WAV файла?

Мне нужно сделать некоторые эквалайзеры и применить цифровой эффект для WAV-файла. Есть ли какой-либо способ извлечения значений отдельных выборок ИКМ из "буфера" ниже для выполнения некоторого эквалайзера / обработки? AudioTrack - верный способ сделать это?

private void playSound() {


audioTrack.play();
double input = 0;
int bufferSize = 512;
byte[] buffer = new byte[bufferSize];
InputStream inputStream = getResources().openRawResource(R.raw.wave);

    try {
        while((input = inputStream.read(buffer)) != -1)
        audioTrack.write(buffer, 0, input);
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

1 ответ

Решение

Вы можете прикрепить эквалайзер AudioEffect к аудио сеансу вашего AudioTrack, начиная с уровня API 9 (Gingerbread).

Другой альтернативой будет обработка данных PCM в вашем приложении перед записью их на аудиодорожку. Вероятно, это было бы чем-то, что вы хотели бы сделать в нативном коде, а не в Java для повышения производительности.
Теория реализации вашего собственного эквалайзерного эффекта немного шире, чтобы подходить для формата вопросов и ответов здесь, в Stackru, поэтому вам придется искать информацию об этом в другом месте, если вы хотите выбрать тот путь.

Другие вопросы по тегам