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.

Tags: , , ,

7 Responses to “MATLAB: Akuisisi Data melalui Kartu Suara”

  1. pakai matlab 2008 atau 2009 pak ngak perlu pake soun card

  2. pak saya mau buat mikrokontroller untuk hidup mati peralatan listrik di perintah dengan suara manusia. bagaimana caranya,,,
    ada sumber yang bisa saya baca tentang masalah ini?
    makasih atas jawabannya.

  3. salam pak, ini saya sedang melakukan percobaan mikrofon kondenser untuk mencari satu yang terbaik, kemudian dicari frekuensinya melalui FFT (utk desain filter), nah pertanyaan saya gmn rumusan dalam matlab untuk menampilkan FFTnya….??? sebagai inputannya adalah data angka sinyal yang panjangnya 500 data dalam format *.csv atau excel.

    thank’s before and after…..

  4. Salam pak…saya orang awam yang kurang mengerti bagaimana matlab bekerja…saya mau tanya tentang pembacaan frekuensi suara manusia hasil dari pemrosesan menggunakan matlab..gambar hasil matlab berupa grafik spektigram dengan sumbu x frekuensi, sumbu y daya (ternormalisasi)

    Bagaimana ya pak? trimakasih atas bantuannya

  5. pak…bisa minta materi atau bahan ajar untuk pengolhan citra digital menggunakan matlab….

    http://bocah-cakil.blogspot.com

  6. Asslkm,,
    pak,saya mau tanya… jika kita mempunyai sebuah data yg dihasilkan dari suatu percobaan. trus data tersebut mau saya analisa FFT atau DFT di matlab.. bgmn caranya pak??
    mohon penjelasannya
    trimakasih

  7. Selamat malam, pak

    saya mau bertanya, cara bapak menampilkan plot tersebut apakah dengan syntax : plot(xfft,mag); ? Saya menggunakan syntax seperti ini dan terdapat error :

    ??? error using ==> plot
    Vectors must be the same lengths.

    Bisa dijelaskan pak? Jika bisa, tolong dikoreksi dan diberikan syntax yang tepat :)

    Terima kasih pak.. :)

Leave a Reply

You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>