Zakres częstotliwości filtra Android AudioRecord

Korzystam z platformy Android, z poniższego pytania referencyjnego dowiedziałem się, że użycie klasy AudioRecord, która zwraca surowe dane, mogę filtrować zakres częstotliwości audio, zależy od mojej potrzeby, ale do tego będę potrzebował algorytmu, czy ktoś może mi pomóc znaleźć algorytm do filtrowania zakresu b / w 14 400 bph i 16 200 bph.

Próbowałem „JTransform”, ale nie wiem, czy mogę to osiągnąć za pomocą JTransform czy nie? Obecnie używam „jfftpack”, aby wyświetlać efekty wizualne, które działają bardzo dobrze, ale nie mogę osiągnąć tego filtra audio.

Odnośnik tutaj

pomoc z góry dziękuję. Poniżej znajduje się mój kod, o którym wspomniałem powyżej, używam biblioteki „jfftpack” do wyświetlenia, możesz znaleźć to odniesienie do biblioteki w kodzie, nie myl się z tym

private class RecordAudio extends AsyncTask<Void, double[], Void> {
        @Override
        protected Void doInBackground(Void... params) {
try {
    final AudioRecord audioRecord = findAudioRecord();
                    if(audioRecord == null){
                        return null;
                    }

                    final short[] buffer = new short[blockSize];
                    final double[] toTransform = new double[blockSize];

                    audioRecord.startRecording();


    while (started) {
                        final int bufferReadResult = audioRecord.read(buffer, 0, blockSize);

                        for (int i = 0; i < blockSize && i < bufferReadResult; i++) {
                            toTransform[i] = (double) buffer[i] / 32768.0; // signed 16 bit
                        }

                        transformer.ft(toTransform);
                        publishProgress(toTransform);

                    }
audioRecord.stop();
                audioRecord.release();
} catch (Throwable t) {
                Log.e("AudioRecord", "Recording Failed");
            }
            return null;

/**
         * @param toTransform
         */
        protected void onProgressUpdate(double[]... toTransform) {
            canvas.drawColor(Color.BLACK);
            for (int i = 0; i < toTransform[0].length; i++) {
                int x = i;
                int downy = (int) (100 - (toTransform[0][i] * 10));
                int upy = 100;
                canvas.drawLine(x, downy, x, upy, paint);
            }
            imageView.invalidate();
        }

questionAnswers(1)

yourAnswerToTheQuestion