Suara
Biasanya, ada 4 (empat) proses yang harus dilakukan dalam akusisi data melalui Kartu
suara (soundcard) menggunakan MATLAB:
Untukmemverifikasi frekuensi dasar sebuah garputala adalah 440Hz, sebuah nada akan
diakuisisi dan analisis menggunakan MATLAB. Ini adalah contoh proses yang akan
dijelaskan berikut ini.
Dalam contoh ini, kita akan memverifikasi frekuensi dasar (fundamental) sebuah
garputala adalah 440Hz. Untuk melakukan hal ini, akan kita gunakan sebuah mikrofon
dan sebuah kartu suara untuk memperolah data-data suara. Berikutnya, akan dilakukan
proses FFT dari data yang diperoleh untuk menemukan komponen frekuensi sebuah
garputala.
Kita awala dengan mengambil data suara selama 2 detik melalui kanal di kartu suara.
Karena garputala bergetar dengan frekuensi nominal 440Hz, frekuensi pencuplikan kartu
suara bisa diatur paling rendah yaitu 8000Hz.
Setelah kita getarkan garputala dan kita letakkan dengan dengan mikrofon, akan kita
lakukan akusisi data. Berikut penjelasan dari masing-masing langkah yang telah
disebutkan sebelumnya…
Inisialisasi
Langkah pertama adalah membuat objek masukan analog untuk kartu suara:
AI = analoginput('winsound');
Konfigurasi
Selanjutnya, kita tambahkan sebuah kanal tunggal ke AI, dan atur frekuensi cupliknya
8000Hz dengan durasi akuisisi 2 detik:
addchannel(AI, 1);
Fs = 8000; % Frekuensi pencuplikan 8000 Hz
set (AI, 'SampleRate', Fs)
duration = 2; % akuisisi selama 2 detik
set(AI, 'SamplesPerTrigger', duration*Fs);
Eksekusi
Okey! Sekarang kita siap melakukan akuisisi data suara. Pemicuan dilakukan dengan
perintah start(), sistem akan segera melakukan akuisisi data setelah perintah tersebut
diberikan. Sebelum memberikan perintah start(), ada baiknya ada getarkan dulu
garputalanya dan dekatkan dengan mikrofonnya…
start(AI);
data = getdata(AI);
Terminasi
Akuisisi akan berakhir setelah semua data diperoleh. Untuk mengakhiri sesi akuisisi, kita
hapus objek AI dari workspace (tempat penyimpanan variabel dalam MATLAB):
delete(AI)
Hasilnya
Sekarang kita lihat komponen frekuensi dari garputala menggunakan FFT, sekaligus
digambar hasilnya:
xfft = abs(fft(data));
Kemudian kita ubah nilai absolutnya menjadi besaran dB dan ambil komponen frekuensi
real-nya:
mag = 20*log10(xfft);
mag = mag(1:end/2);
Hasil FFT dari garputala
[ymax,maxindex]=max(mag);
Contoh ini juga bisa Anda terapkan untuk perangkat keras yang berbeda hanya dengan
mengubah dua perintah. Misalnya, jika menggunakan kartu serbaguna dari National
Instruments, berikan perintah sebagai berikut:
AI=analoginput('nidaq','Dev1');
addchannel(AI,0)
http://agfi.staff.ugm.ac.id/blog/index.php/2009/09/matlab-akuisisi-data-melalui-kartu-
suara/