Ayo lihat. Saya tidak tahu tentang kelas Java atau jenis dukungan apa yang dimilikinya untuk pemrosesan sinyal, tetapi saya akan memberikan Anda beberapa panduan. Rincian khusus dari implementasi dalam bahasa, Anda harus mencari tahu.
Untuk melakukan segala jenis pemrosesan pada file audio Anda memerlukan data "mentah", artinya file audio yang memiliki sampel audio yang tidak terkompresi. Untuk exmaple, format WAV, yang biasanya memiliki sampel dalam pelengkap 2bit bertanda 2
Jika Anda akan menggunakan komputer dan melakukan pemrosesan offline, mungkin ide yang bagus untuk memberikan nilai tersebut menjadi dua kali lipat (yang dalam kebanyakan prosesor saat ini berarti angka floating point 64bit).
Oleh karena itu Anda akan memiliki aliran nomor ganda yang berkelanjutan dari file. Maka Anda perlu menentukan cara untuk menangani data kontinu. Cara standar yang sangat banyak digunakan adalah dengan menggunakan buffer bundar (walaupun offline, saya berasumsi Anda ingin kode Anda menjadi efisien, dan memuat seluruh file ke memori sebagai array bukan solusi terbaik). Entah itu atau hanya penyangga biasa, adalah pilihan Anda. Panjang buffer harus menjadi kekuatan 2 (Lakukan untuk efisiensi algoritma Cooley-Tukey radix-2).
Sekarang Anda perlu melakukan FFT yang sebenarnya. Ini hanyalah sebuah multiplicacion dari buffer (yang secara matematis adalah vektor) oleh matriks FFT. Bagaimana operasi ini sebenarnya dilakukan di Jawa, tidak tahu. Dalam C itu hanya akan melewatkan pointer ke array dan panjang ke rutin FFT yang, baik mengembalikan pointer ke memori yang dialokasikan secara dinamis, atau meninggalkan hasilnya dalam array yang Anda lewati.
akhirnya, Anda sampai pada array bilangan kompleks M (Asumsikan panjang array / buffer / vektor dengan sinyal M). Dan kemudian Anda melakukan apa pun yang Anda inginkan dengannya.
Sebagai contoh, Anda dapat mengambil besarnya masing-masing bilangan kompleks, dan menemukan maksimum, untuk mendeteksi di mana frekuensi dasar dapat (meskipun sangat perkiraan).
Ekstra: Teknik yang lebih maju untuk diproses akan mencakup pra windowing untuk menghindari kebocoran, melakukan zero-padding untuk mendapatkan lebih banyak resolusi pada spektrum windowed, dll.
Semoga Membantu.