Categories
DSP

MATLAB: Akuisisi Data melalui Kartu Suara

Biasanya, ada 4 (empat) proses yang harus dilakukan dalam akusisi data melalui Kartu suara (soundcard) menggunakan MATLAB:

  1. Inisialisasi, membuat objek device;
  2. Konfigurasi, menambahkan kanal serta mengatur cara akuisisi;
  3. Eksekusi, memulai (mengaktifkan) objek device dan akuisisi atau mengirim data;
  4. Terminasi, menghapus objekdevice.

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.

akuisisi data suara menggunakan kartu suara

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);

Untuk mendapatkan semua datanya:

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
Hasil FFT dari garputala

Hasilnya menunjukkan bahwa frekuensi dasar garputala yang bersangkutana sekitar 440Hz dan overtone pertama sekitar 880Hz. Cara sederhana untuk menemukan frekuensi dasar dengan cara:

[ymax,maxindex]=max(mag);

Jawabannya 441 Hz.

Menggunakan Perangkat Keras yang Berbeda

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)

Demikian juga untuk perangkat keras yang lainnya…

Sumber

  • The Mathworks.