i
TUGAS AKHIR
PENGENALAN NADA SULING RECORDER
MENGGUNAKAN FUNGSI JARAK CHEBYSHEV
DiajukanUntukMemenuhi Salah SatuSyarat MemperolehGelarSarjanaTeknik
Program StudiTeknikElektro
Oleh:
MARIANUS HENDRA WIJAYA NIM: 075114008
PROGRAM STUDI TEKNIK ELEKTRO FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS SANATA DHARMA YOGYAKARTA
ii
FINAL PROJECT
TONE RECOGNITION OF FLUTE RECORDER
USING CHEBYSHEV’S DISTANCE FUNCTION
Presented as Partial Fullfillment of Requirements To Obtain the SarjanaTeknik Degree In Electrical Engineering Study Program
MARIANUS HENDRA WIJAYA NIM: 075114008
ELECTRICAL ENGINEERING STUDY PROGRAM SCIENCE AND TECHNOLOGY FACULTY
SANATA DHARMA UNIVERSITY YOGYAKARTA
iii
HALAMAN PERSETUJUAN
TUGAS AKHIR
PENGENALAN NADA SULING
RECORDER
MENGGUNAKAN FUNGSI JARAK CHEBYSHEV
(TONE RECOGNITION OF FLUTE RECORDER
USING CHEBYSHEV’S DISTANCE FUNCTION)
Oleh:
NIM: 075114008
MARIANUS HENDRA WIJAYA
telah disetujui oleh:
iv
HALAMAN PENGESAHAN
TUGAS AKHIR
PENGENALAN NADA SULING
RECORDER
MENGGUNAKAN FUNGSI JARAK CHEBYSHEV
v
PERNYATAAN KEASLIAN KARYA
vi
HALAMAN PERSEMBAHAN DAN MOTTO HIDUP
MOTTO:
Tak Ada yang Mustahil Selama Kita Mencoba
Dengan ini kupersembahkan karyaku ini untuk...
Yesus Kristus Pembimbingku yang setia,
Keluargaku tercinta,
Teman-teman seperjuanganku,
Dan semua orang yang mengasihiku
vii
LEMBAR PERNYATAAN PERSETUJUAN
PUBLIKASI KARYA ILMIAH UNTUK
KEPENTINGAN AKADEMIS
Yang bertanda tangan di bawah ini, saya mahasiswa Universitas Sanata Dharma :
Nama : Marianus Hendra Wijaya
Nomor Mahasiswa : 075114008
Demi pengembangan ilmu pengetahuan, saya memberikan kepada Perpustakaan Universitas Sanata Dharma karya ilmiah saya yang berjudul :
PENGENALAN NADA ALAT MUSIK SULING RECORDER MENGGUNAKAN FUNGSI JARAK CHEBYSHEV
beserta perangkat yang diperlukan (bila ada). Dengan demikian saya memberikan kepada kepada Perpustakaan Universitas Sanata Dharma hak untuk menyimpannya, mengalihkan dalam bentuk media lain, mengelolanya dalam bentuk pangkalan data, mendistribusikan secara terbatas, dan mempublikasikannya di Internet atau media lain untuk kepentingan akademis tanpa perlu meminta ijin dari saya maupun memberikan royalty kepada saya selama tetap mencantumkan nama saya sebagai penulis.
viii
INTISARI
Sebagian orang hanya mendengarkan suatu nada alat musik tanpa mengetahui nada apa yang sedang dimainkan, karena kurangnya ketajaman indera pendengaran dan pengetahuan tentang musik. Suling adalah salah satu alat musik yang banyak digunakan untuk pemula atau orang yang akan belajar tentang musik, karena penggunaannya yang mudah dan haga yang relatif terjangkau. Sistem pengenalan sangat diperlukan untuk membantu dalam mengenali nada alat musik, khususnya nada dasar(C’, D’, E’, F’, G’, A’, B’, dan C”) pada alat musik suling recorder.
Sistem pengenalan nada alat musik suling recorder pada tugas akhir ini menggunakan mikrofon dan komputer untuk mengoperasikannya. Mikrofon berfungsi untuk merekam gelombang suara nada alat musik suling recorder. komputer berfungsi untuk memproses data hasil rekaman, menampilkan gelombang hasil rekaman, menampilkan spektrum frekuensi hasil subproses perhitungan FFT, mengenali nada terekam, dan menampilkan hasil nada yang dikenali.
Sistem pengenalan nada alat musik suling recorder menggunakan fungsi jarak Chebyshev sudah berhasil dibuat dan dapat bekerja dengan baik. Penampil hasil rekaman, spektrum frekuensi hasil FFT, jarak setiap nada, dan STATUS mampu menampilkan data-data sesuai dengan perancangan. Program pengenalan nada alat musik suling recorder hanya mengenali nada-nada dasar, sehingga masih dapat dikembangkan untuk pengenalan nada yang lebih kompleks.
ix
ABSTRACT
Some people just listen to a musical tone without knowing what tone is being played, because they lack of accuracy from hearing senses and knowledge of music. Flute is one of the many instruments used for beginners or people who will learn about the music, because of its use easy and relatively affordable prices. Recognition system is needed to assist in recognizing musical tones, especially basic tones(C’, D’, E’, F’, G’, A’, B’, and C”) of the musical instrument the flute recorder.
Tone recognition system of flute recorder at the end of this task using a microphone and a computer to operate. Functioning microphone to record sound waves recorder flute tones of musical instruments. computer functions to process data recording, featuring a wave of record results, showing the frequency spectrum of the FFT calculation subprocesses, recognize the tone, and displays the results of a recognizable tone.
Musical tone recognition system of flute recorder using Chebyshev’s distance function has been created and can work well. Viewer recorded, the frequency spectrum of the FFT, the distance to each one, and STATUS able to display data in accordance with the design. Musical tone recognition programs of flute recorder only recognize the basic tones, so it still can be developed for the introduction of other tones.
x
KATA PENGANTAR
Puji dan Syukur penulis panjatkan kepada Tuhan Yesus Kristus karena telah memberikan rahmad-Nya sehingga penulis dapat menyelesaikan laporan akhir ini dengan baik. Laporan akhir ini disusun untuk memenuhi syarat memperoleh gelar sarjana.
Penulis mengucapkan terima kasih kepada :
1. Rm. Wiryono Priyotamtama SJ, Rektor Universitas Sanata Dharma.
2. Paulina Heruningsih Prima Rosa, M.Sc., Dekan Fakultas Sains dan Teknologi Universitas Sanata Dharma Yogyakarta.
3. B. Wuri Handayani, S.T., M.T., Ketua Program Studi Teknik Elektro Universitas Sanata Dharma Yogyakarta.
4. Wiwien Widyastuti, S.T., M.T., dosen pembimbing akademik yang telah
mendampingi dan membimbing penulis selama studi.
5. Dr. Linggo Sumarno, dosen pembimbing yang dengan penuh pengertian dan ketulusan hati memberi bimbingan, kritik, saran, serta motivasi dalam penulisan skripsi ini.
6. Ir. Theresia Prima Ari Setiyani, M.T. dan Wiwien Widyastuti, S.T., M.T., dosen penguji yang telah memberikan masukan, bimbingan, saran dalam merevisi skripsi ini.
7. Bapak/ Ibu dosen yang telah mengajarkan banyak hal selama penulis menempuh pendidikan di Program Studi Teknik Elektro, Fakultas Sains dan Teknologi, Universitas Sanata Dharma.
8. Staff sekretariat Teknik Elektro, atas bantuan dalam melayani mahasiswa.
9. Kedua orang tuaku atas dukungan, doa, cinta, perhatian, kasih sayang yang tiada henti.
10.Propinsialat SCJ, yang telah memberikan bantuan, perhatian, dan doa sehingga studi berjalan dengan lancar.
11.Rm. Ignatius Nugroho SJ, Rm. Alexander Sapta Dwihandaka SJ, Rm. Darno OSC, yang telah memberikan motivasi.
xi
13.Rekan-rekan seperjuanganku angkatan 2007 Teknik Elektro, teman-teman Basecamp, keluarga besar Perkap Insadha, dan teman-teman Reptil Forum Kaskus yang memberikan dukungan dalam penyelesaian skripsi ini.
14.Semua pihak yang tidak dapat disebutkan satu persatu atas semua dukungan yang telah diberikan dalam penyelesaian skripsi ini.
xii
DAFTAR ISI
HALAMAN JUDUL
... iHALAMAN PERSETUJUAN
... iiiHALAMAN PENGESAHAN
... ivPERNYATAAN KEASLIAN KARYA
... vHALAMAN PERSEMBAHAN DAN MOTTO HIDUP
... viLEMBAR PERNYATAAN PERSETUJUAN PUBLIKASI KARYA
ILMIAH UNTUK KEPENTINGAN AKADEMIS
... viiINTISARI
... viiiABSTRACT
... ixKATA PENGANTAR
... xDAFTAR ISI
... xiiDAFTAR GAMBAR
... xvDAFTAR TABEL
... xviiDAFTAR LAMPIRAN
... xviiiBAB I PENDAHULUAN
1.1. Latar Belakang ... 11.2. Tujuan dan Manfaat ... 2
1.3. Batasan Masalah ... 2
1.4. Metodologi Penelitian... 2
1.4.1. Variabel Penelitian ... 2
1.4.2. Prosedur Penelitian ... 3
BAB II DASAR TEORI
2.1. Alat Musik Suling (Recorder) ... 52.2. Sampling ... 6
2.3. Frame Blocking ... 7
2.4. Windowing ... 7
xiii
2.5. Discrete Fourier Transform(DFT) ... 9
2.6. Fast Fourier Transform(FFT) ... 9
2.7. Fungsi Jarak Chebyshev(Chebyshev Distance Function) ... 10
2.8. Kartu Suara(Sound Card) ... 11
2.9. Mikrofon(Microphone) ... 12
2.10. Visual C++ ... 12
2.11. MFC ... 14
2.12. Wave I/O pada Windows ... 16
BAB III PERANCANGAN
3.1. Sistem Pengenalan Nada Alat Musik Suling Recorder ... 183.2. Perancangan Nada Referensi ... 22
3.3. Nada Uji ... 23
3.4. Perancangan Tampilan Program Visual C++ ... 23
3.5. Perancangan Alur Program ... 26
3.6. Perancangan Subsistem Program ... 32
3.6.1. Subsistem Sampling ... 32
3.6.2. Subsistem Pengenalan Nada ... 32
BAB IV HASIL DAN PEMBAHASAN
4.1. Pengujian Program Pengenalan Nada Alat Musik Suling Menggunakan Fungsi Jarak Chebyshev ... 344.1.1. Tombol Pengenalan ... 36
4.1.2. Tombol RESET ... 47
4.1.3. Tampilan Grafik Hasil Sampling Nada Suara Uji dan FFT Nada Suara Uji ... 48
4.1.4. Menu Help ... 49
4.1.5. Menu About ... 50
4.1.6. Menu Profil ... 50
4.2. Hasil Pengujian Program Pengenalan Terhadap Tingkat Pengenalan Nada Alat Musik Suling Recorder ... 51
4.2.1. Pengujian Parameter Pengaturan Pengenalan Nada ... 51
4.2.2. Pengujian Sistem Terhadap Nada Selain Nada Dasar Alat Musik Suling Recorder ... 56
xiv
BAB IV KESIMPULAN DAN SARAN
5.1. Kesimpulan ... 59
5.2. Saran ... 60
DAFTAR PUSTAKA
... 61xv
DAFTAR GAMBAR
1.1. Blok Model Perancangan ... 4
2.1. Suling Recorder Jenis Soprano ... 5
2.2. Frame Blocking ... 7
2.3. Kaiser Window dengan Nilai πα atau β yang berbeda-beda ... 8
2.4. Plotting Hasil FFT ... 10
2.5. Plotting Hasil FFT Radix 2 ... 10
2.6. Contoh Kartu Suara ... 11
2.7. Diagram Kerja Managed Code dan Native Code C++ ... 13
2.8. Struktur dan Pengeksekusian Program C++ ... 13
2.9. Class Hirarki pada MFC ... 14
2.10. Message Box ... 16
3.1. Blok Diagram Keseluruhan Sistem ... 18
3.2. Suling Recorder... 19
3.3. Mini Multimedia Microphone Genius MIC-01A ... 19
3.4. Blok Diagram Proses Pengenalan Nada ... 21
3.5. Blok Diagram Proses Pengenalan Nada Referensi ... 22
3.6. Tampilan Utama Program ... 23
3.7. Tampilan Jendela Help ... 25
3.8. Tampilan Jendela Profil ... 25
3.9. Tampilan Kotak Dialog About ... 26
3.10. Alur Program Keseluruhan ... 28
3.11. Alur Program Proses Rekam ... 28
3.12. Alur Program Frame Blocking ... 29
3.13. Alur Program Windowing ... 29
3.14. Alur Program Normalisasi 1 ... 30
3.15. Alur Program FFT ... 30
3.16. Alur Program Normalisasi 2 ... 30
3.17. Alur Program Fungsi Jarak ... 31
3.18. Alur Program Penentuan Hasil Pengenalan ... 31
xvi
4.2. Tampilan Splash Screen ... 35
4.3. Tampilan PENGATURAN PENGENALAN NADA ... 35
4.4. Tampilan Utama Program Pengenalan Nada Alat Musik Suling Recorder ... 36
4.5. Pesan Bila Pengaturan Alpha Tidak Terisi ... 37
4.6. Pesan Bila Pengaturan FFT Tidak Terisi ... 37
4.7. Tampilan STATUS Menunggu Perekaman ... 38
4.8. Tampilan STATUS Mulai Perekaman ... 38
4.9. Tampilan STATUS Perekaman Selesai ... 40
4.10. Tampilan Setelah Penekanan Tombol PENGENALAN ... 47
4.11. Tampilan Awal Grafik ... 48
4.12. Tampilan Menu Help ... 49
4.13. Tampilan Menu About ... 49
4.14. Tampilan Menu Profil ... 50
4.15. Pengaruh Nilai Alpha Terhadap Tingkat Pengenalan (Recognition Rate) ... 52
4.16. Grafik Hasil FFT 32 Point Nada Uji Re(D’) dengan Nilai Alpha (a) 0, (b) 40, (c) 100, (d) 1000 ... 53
xvii
DAFTAR TABEL
2.1. Cara Memainkan Recorder Soprano ... 6
2.2. Hongarian Notation ... 15
2.3. Fungsi Penanganan Recording ... 17
3.1. Spesifikasi Mini Multimedia Microphone Genius MIC-01 A ... 20
3.2. Keterangan Tampilan Utama Program ... 24
3.3. Nada Referensi C... 33
4.1. Tampilan STATUS Nada Yang Dikenali ... 46
xviii
DAFTAR LAMPIRAN
L.1. Percobaan Mencari Spektrum Frekuensi dari Nada Alat Musik Suling Recorder dengan MATLAB V.7 ... L 1 L.2. Percobaan Mencari Durasi Nada Alat Musik Suling Recorder dengan
MALTAB V.7 ... L 8 L.3. Percobaan Pengaruh Frame Blocking pada Sistem Pengenalan Nada Alat Musik
1
BAB I
PENDAHULUAN
1.1
Latar Belakang
Di masa yang serba modern dan praktis saat ini, kebutuhan akan software pengenalan cenderung meningkat. Salah satunya sebagai sarana pengidentifikasian suatu nada lagu. Sebagian orang hanya mendengarkan suatu nada tanpa mengetahui nada apa yang sedang dimainkan karena kurangnya ketajaman indera pendengaran dan pengetahuan tentang alat musik. Suling adalah salah satu alat musik yang banyak digunakan untuk pemula atau orang yang akan belajar musik karena penggunaannya yang mudah dan harga yang relatif terjangkau.
Berdasarkan hal di atas, penulis ingin membuat suatu sistem yang dapat mengenali nada alat musik, khususnya suling. Penulis menemukan penelitian-penelitian sebelumnya yang berkaitan dengan pengenalan nada alat musik suling, diantaranya “Musical Instruments Sound Recognition”[1]. Sistem ini meniru kemampuan manusia
1.2
Tujuan dan Manfaat
Tujuan dari penulisan tugas akhir ini adalah menghasilkan sistem pengenalan nada suara pada alat musik suling atau recorder.
Manfaat dari penelitian ini adalah :
a. Sebagai alat bantu bagi masyarakat untuk mengenali nada suara C’, D’, E’, F’, G’, A’, B’, dan C” pada alat musik suling recorder.
b. Sebagai alat bantu bagi industri alat musik dalam melakukan standarisasi alat musik suling.
1.3
Batasan Masalah
Sistem otomatisasi pengenalan nada suara pada alat musik suling terdiri dari hardware dan software (komputer). Hardware berfungsi untuk memasukkan nada suara yang dimainkan pada alat musik suling, sedangkan software pada komputer berfungsi untuk mengatur semua proses pengenalan nada suara yang dimainkan pada alat musik suling.
Pada perancangan sistem ini, penulis fokus pada pembuatan software komputer untuk memproses pengenalan nada suara, sedangkan untuk hardware berupa microphone yang sudah tersedia di pasaran. Penulis menetapkan beberapa batasan masalah yang dianggap perlu pada perancangan ini, yaitu sebagai berikut:
a. Nada suling yang dikenali nada C’, D’, E’, F’, G’, A’, B’, dan C”.
b. Menggunakan Microsoft Visual C++ 2008 dalam pembuatan program pada komputer.
c. Pengambilan suara melalui line in microphone pada komputer. d. Sistem bersifat realtime.
e. Nada diluar C’, D’, E’, F’, G’, A’, B’, dan C” tidak dikenali.
1.4
Metodologi Penelitian
1.4.1 Variabel Penelitian
a. Variabel Terikat
Variabel terikat pada penelitian ini ialah frekuensi sampling, durasi perekaman, frame blocking dan nada referensi yang digunakan. Nada yang digunakan ialah
b. Variabel Bebas
Variabel bebas pada penelitian ini ialah nada suling yang dimainkan, point of FFT, alpha pada windowing, dan jarak yang dihasilkan pada proses perbandingan suara terekam dengan kedelapan suara nada referensi.
1.4.2 Prosedur Penelitian
Langkah-langkah dalam pengerjaan tugas akhir:
a. Pengumpulan bahan–bahan referensi berupa buku–buku dan jurnal–jurnal.
b. Perancangan subsistem software. Tahap ini bertujuan untuk mencari bentuk model yang optimal dari sistem yang akan dibuat dengan mempertimbangkan dari berbagai faktor–faktor permasalahan dan kebutuhan yang telah ditentukan. gambar 1.1 memperlihatkan blok model yang akan dirancang.
c. Pembuatan subsistem software. Berdasarkan Gambar 1.1, sistem akan bekerja apabila user memberikan interupsi melalui PC dengan media push button yang sudah disediakan dalam software. Sistem akan mengolah interupsi yang diterima dan memulai proses recording sampai user memberikan interupsi kembali untuk menghentikan proses recording. Setelah itu, user memberikan interupsi untuk memulai proses pengenalan nada. Komputer akan mengolah nada dan menyajikannya sebagai sebuah informasi.
d. Analisa dan penyimpulan hasil percobaan. Analisa data dilakukan dengan mengecek keakuratan data terhadap hasil proses pengenalan nada, dengan cara membandingkan antara data di komputer dengan lapangan dan perancangan. Penyimpulan hasil percobaan dapat dilakukan dengan menghitung jarak yang terjadi.
Gambar 1.1. Blok Model Perancangan
Microphone SoundCard
Komputer
Pengenalan Nada Suling
5
BAB II
DASAR TEORI
2.1
Alat Musik Suling (
Recorder
)
Recorder termasuk alat musik tiup yang nadanya dihasilkan dengan membuka
tutup lubang-lubangnya. Ada 8 lubang yang bisa dibuka tutup seperti pada Gambar 2.1, 7 lubang diatas dan 1 lubang dibawah.
(a)
(b)
Gambar 2.1 Suling Recorder jenis Soprano tampak atas (a) tampak bawah (b) Posisi jari sebagai berikut:
a. lubang di bawah untuk jari jempol tangan kiri.
b. lubang pertama dekat mulut (bulat) untuk jari telunjuk tangan kiri. c. lubang kedua untuk jari tengah tangan kiri.
d. lubang ketiga untuk jari manis tangan kiri.
e. lubang keempat untuk jari telunjuk tangan kanan. f. lubang kelima untuk jari tengah tangan kanan. g. lubang keenam untuk jari manis tangan kanan. h. lubang ketujuh untuk jari kelingking tangan kanan.
Recorder umumnya dipakai adalah recorder soprano. Selain soprano ada juga
recorder sopranino, alto, tenor, dan bas. Masing-masing recorder memiliki ambitus
(rentang nada) yang berbeda-beda. Recorder soprano berbasis nada C, dengan nada terendah C’. Sedangkan sopranino dan alto berbasis nada F. hanya saja antara sopranino dan alto tone-nya berbeda 1 oktaf.
Masing-masing recorder memiliki rentang nada rata-rata 2 oktaf. Recorder soprano memiliki nada terendah C’ jadi recorder ini tidak bisa memainkan melodi lagu
Tabel 2.1. Cara Memainkan Recorder Soprano
Lubang Atas (dari mulut) Bawah
1 2 3 4 5 6 7
Nada C’ Nada D’ Nada E’ Nada F’ Nada G’ Nada A’ Nada B’ Nada C”
Keterangan ditutup dibuka
Tabel 2.1 menjelaskan cara memainkan alat musik suling recorder soprano dari nada C’, D’, E’, F’, G’, A’, B’, C”. Cara meniup recorder juga mempengaruhi terjadinya harmonisa frekuensi karena jika terlalu kencang suara akan terdengar tidak baik.
2.2
Sampling
Sampling merupakan proses pencuplikan gelombang suara yang akan
menghasilkan gelombang diskret termodulasi pulsa. Dalam proses sampling ada yang disebut dengan laju pencuplikan (sampling rate). Sampling rate menandakan berapa banyak pencuplikan gelombang analog dalam 1 detik. Satuan dari sampling rate ialah Hertz (Hz). Pada proses sampling, sebaiknya sampling rate memenuhi kriteria Nyquist. Kriteria Nyquist menyebutkan bahwa sampling rate harus lebih besar dari 2 kali frekuensi tertinggi sinyal suara analog [2]. Secara matematis dapat dituliskan:
𝑟𝑟𝐴𝐴 ≥2𝑟𝑟𝑆𝑆 (2.1)
dengan: 𝑟𝑟𝐴𝐴 = frekuensi sampling (sampling rate)
2.3
Frame Blocking
Frame blocking merupakan pembagian sinyal suara menjadi beberapa frame dan
satu frame terdiri dari beberapa data sampel[3]. Pengambilan sampel tersebut tergantung dari tiap detik suara akan disampel dan berapa besar frekuensi samplingnya.
Gambar 2.2. Frame Blocking
Gambar 2.2 menjelaskan contoh dari frame blocking dimana keseluruhan dibagi menjadi 5 M (frame). Setiap M tersebut memiliki jumlah data yang sama yaitu 2N
Frame blocking berfungsi untuk memilih data yang akan diproses dalam sistem
pengenalan. Frame blocking juga dapat mempercepat proses perhitungan pada FFT (Fast Fourier Transform) radix 2 dengan jumlah data pada setiap frame memiliki 2
data pada Gambar 2.2. Pada implementasinya jumlah frame blocking tidak ada ketentuannya, tergantung dari kebutuhan suatu sistem.
N
data sampel yang diambil dari keseluruhan data sampel.
2.4
Windowing
Sinyal suara yang dipotong-potong menjadi beberapa frame akan dapat menyebabkan kesalahan data pada proses fourier transform. Windowing diperlukan untuk mengurangi efek diskontinuitas dari potongan-potongan sinyal[4].
2.4.1
Kaiser
Window
Kaiser window adalah salah satu jenis window. Dalam Kaiser window, parameter
β menentukan ketinggian dari sidelobe seperti yang terlihat pada Gambar 2.3. Untuk
pemberian nilai β, ketinggian sidelobe tergantung dengan panjang window[5].
Gambar 2.3. Kaiser window dengan nilai 𝜋𝜋𝜋𝜋atau β yang berbeda-beda
Kaiser window dirumuskan dengan[6]:
𝑤𝑤[𝐵𝐵]≜ �𝐼𝐼0�𝛽𝛽 �1− �𝐵𝐵 − 𝜋𝜋𝜋𝜋 � 2
�
1 2
�, 0≤ 𝐵𝐵 ≤ 𝑀𝑀 0, 𝐴𝐴𝑆𝑆𝐴𝐴𝐴𝐴
(2.2)
Dimana 𝐼𝐼0 adalah orde 0 dari fungsi Bessel:
𝐼𝐼0(𝑥𝑥)≜ � �
�𝑥𝑥2𝐵𝐵� 𝐵𝐵! �
2
∞ 𝐵𝐵=0
(2.3)
Biasanya Kaiser window diparameterkan dengan:
𝜋𝜋= 𝑀𝑀/2 (2.4)
Kaiser window juga dapat didefinisikan dari 𝛿𝛿, 𝜔𝜔𝐴𝐴, 𝜔𝜔𝑆𝑆, 𝑀𝑀, dan 𝛽𝛽:
∆𝜔𝜔 = 𝜔𝜔𝐴𝐴− 𝜔𝜔𝑆𝑆 (2.5)
𝜋𝜋 = −20 log10𝛿𝛿 (2.6)
𝛽𝛽= �
0.1102 (𝜋𝜋 −8.7), 𝜋𝜋> 50 0.5842 (𝜋𝜋 −21)0.4+ 0.07886 (𝜋𝜋 −21), 21≤ 𝜋𝜋 ≤ 50 0.0, 𝜋𝜋< 21
(2.7)
dan
𝑀𝑀= 𝜋𝜋 −8
2.5
Discrete Fourier Transform
(DFT)
Discrete Fourier Transform (DFT) adalah transformasi yang mengubah domain
waktu ke domain frekuensi. Rumus DFT dapat didefinisikan sebagai[7]:
𝑋𝑋(𝐵𝐵) = � 𝑥𝑥(𝐵𝐵)𝐴𝐴−𝑗𝑗2𝑁𝑁 𝐵𝐵𝐵𝐵𝜋𝜋 𝑁𝑁−1
𝐵𝐵=0
𝐵𝐵= 0, … . . ,𝑁𝑁 −1 (2.9)
dengan: 𝑁𝑁 = jumlah sempel.
𝑥𝑥(𝐵𝐵) = runtun masukan (time domain). X(k) = runtun keluaran (frekuensi domain).
2.6
Fast Fourier Transform
(FFT)
FFT merupakan cara cepat menghitung DFT. Faktor eksponensial dalam persamaan(2.9) dinamakan twiddle factor yang bersifat periodik dengan periode N dan dilambangkan dengan 𝑊𝑊𝑁𝑁𝐵𝐵𝐵𝐵, sehingga DFT dari sinyal waktu diskret x(n) dapat dituliskan sebagai:
𝑋𝑋(𝐵𝐵) = � 𝑥𝑥(𝐵𝐵)𝑊𝑊𝑁𝑁𝐵𝐵𝐵𝐵
𝑁𝑁−1
𝐵𝐵=0
𝐵𝐵= 0, … . . ,𝑁𝑁 −1 (2.10)
dengan: 𝑊𝑊𝑁𝑁𝐵𝐵𝐵𝐵 = twiddle factor yang besifat periodik dengan periode N.
Gambar 2.4. Ploting Hasil FFT
Gambar 2.5 Ploting Hasil FFT Radix 2
Kemudian hasil perhitungan tersebut dibagi menjadi dua bagian yang merupakan DFT dengan N/2 titik dan dihitung dengan cara serupa. Proses tersebut diulangi sampai didapatkan stage yang merupakan kumpulan DFT dengan 2 titik dimana pangkat dari twiddle factor merupakan harga tunggal yaitu nol[7].
2.7
Fungsi Jarak Chebyshev (
Chebyshev Distance Function
)
Fungsi Jarak Chebyshev juga disebut nilai jarak maksimum, menghitung besarnya absolut perbedaan koordinat dari sepasang obyek. Fungsi Jarak ini dapat digunakan untuk variabel baik ordinal maupun kuantitatif. Fungsi jarak Chebyshev dapat dilihat pada persamaan(2.14) merupakan pengembangan dari fungsi jarak Minkowski dapat dilihat pada persamaan(2.13)[8].
𝑛𝑛𝑏𝑏𝑗𝑗 = �∑ �𝑥𝑥𝐵𝐵𝐵𝐵=1 𝑏𝑏𝐵𝐵 − 𝑥𝑥𝑗𝑗𝐵𝐵�𝜆𝜆
𝜆𝜆
(2.12)
Jika lambda (λ) bernilai tak terhingga (∞), maka
dengan: 𝑥𝑥𝑏𝑏 = obyek pertama. 𝑛𝑛𝑏𝑏𝑗𝑗 = jarak antara obyek 𝑥𝑥𝑏𝑏 dan 𝑥𝑥𝑗𝑗.
𝑥𝑥𝑗𝑗 = obyek kedua. 𝜆𝜆 = orde.
𝐵𝐵 = jumlah data.
2.8
Kartu Suara (
Sound Card
)
Kartu suara merupakan sebuah periperal pada komputer sebagai I/O suara yang menyediakan komputer kemampuan untuk menghasilkan suara yang dapat didengar oleh pengguna baik melalui speaker atau headphone. Pada dasarnya setiap kartu suara memiliki:
a. Digital Signal Processor (DSP) yang akan menangani semua jenis komputasi. b. Digital to Analog Converter (DAC) sebagai keluaran suara ke speaker.
c. Analog to Digital Converter (ADC) sebagai masukan suara. d. Read Only Memory (ROM) atau Flash sebagai penyimpanan data.
e. Musical Instrument Digital Interface (MIDI) untuk menyambungkan beberapa peralatan musik eksternal.
f. Jack untuk menyambungkan kartu suara dengan speaker pada jalur line out atau microphone pada jalur line in.
Beberapa kartu suara sudah terpasang secara pabrikan (on board) pada motherboard komputer, tetapi bisa juga ditambahkan untuk keperluan yang lebih lanjut pada slot PCI motherboard[9]. Gambar 2.6 adalah contoh dari sound card dengan 1 line in dan 3 line out.
Gambar 2.6. Contoh Kartu Suara [10]
Dalam proses perekaman suara dengan menggunakan kartu suara ada beberapa pengaturan awal, yaitu:
a. Sampling Rate, telah dijelaskan pada poin 2.2 b. Channel yang digunakan, yaitu mono atau stereo.
2.9
Mikrofon
(Microphone)
Mikrofon digunakan pada beberapa alat seperti telepon, alat perekam, alat bantu dengar, pengudaraan radio serta televisi, dan sebagainya. Pada dasarnya mikrofon berguna untuk merubah suara menjadi getaran listrik sinyal Analog untuk selanjutnya diperkuat dan diolah sesuai dengan kebutuhan, pengolahan berikutnya dengan power amplifier dari suara yang berintensitas rendah menjadi lebih keras terakhir diumpan ke-speaker.
Pemilihan mikrofon harus dilakukan dengan lebih hati-hati. Hal ini dilakukan untuk mencegah berkurangnya kemampuan mikrofon dari performa yang optimal. Karakteristik mikrofon yang harus diperhatikan ketika akan memilih sebuah mikrofon adalah:
a. Prinsip cara kerja mikrofon dari jenis mikrofon itu sendiri
b. Daerah respon frekuensi suara yang mampu dicuplik oleh mikrofon c. Sudut atau arah pencuplikan mikrofon
d. Output sinyal listrik yang dihasilkan mikrofon e. Bentuk fisik mikrofon
Agar lebih efektif, mikrofon yang digunakan haruslah sesuai kebutuhan dan seimbang antara sumber suara yang ingin dicuplik, misalnya suara manusia, alat musik, suara kendaraan, atau yang lainnya dengan sistem tata suara yang digunakan seperti sound sistem untuk live music, alat perekaman, dan sebagainya[11].
2.10
Visual C++
Pemrograman C++ mengenal 2 istilah yaitu managed dan unmanaged code. Managed code adalah kode yang dieksekusi didalam CLR karena data dan code dikontrol
oleh CLR. Sedangkan unmanaged code adalah kode program yang dieksekusi di luar CLR atau tidak menggunakan CLR, program ini dibuat menggunakan template MFC dan dijalankan langsung dari Console Windows atau dibawah kendali sistem operasi. Unmanaged C++ juga dapat disebut native C++ karena program ini ditujukan untuk secara
native dikompilasi dalam bahasa mesin[12]. Diagram kerja unmanaged code dan managed
code dapat dilihat pada Gambar 2.7.
fungsi tersebut program akan berpindah ke proses yang ada pada fungsi tersebut. Bila telah selesai mengeksekusi fungsi tersebut, jalannya program akan kembali lagi pada fungsi utama[13].
Gambar 2.7. Diagram Kerja (A)Managed Code dan (B)Native Code C++
2.11
MFC
Pada Visual C++, salah satu format aplikasi yang dapat dibuat untuk membangun aplikasi Windows ialah MFC (Microsoft Foundation Class). Pada MFC sudah terdapat berbagai fungsi Windows API, sehingga mempermudah dalam memanfaatkan semua fasilitas dari C++ dalam menuliskan program Windows. Pada pembuatan MFC, ada berbagai tipe aplikasi yang dapat digunakan [14], yaitu:
a. SDI (Single Document Interface), tipe aplikasi ini seperti aplikasi Paintyang ada pada Windows. Aplikasi ini memiliki satu area client dan beberapa pull- down menu dan toolbar. Tipe ini digunakan apabila ingin membuat aplikasi dengan beberapa contoh dari aplikasi yang berinteraksi dengan satu file atau data dan menampilkannya pada satu area client.
b. MDI (Multi Document Interface), tipe aplikasi ini seperti aplikasi Microsoft Word. Aplikasi ini digunakan jika user ingin menggunakan multiple document
untuk dibuka dalam satu aplikasi yang sama.
c. Dialog based, aplikasi ini seperti AppWizard dalam Visual Studio. Aplikasi ini terdiri satu tampilan utama dengan beberapa variasi Windows control, seperti pushbutton, listboxes, dan entryfields. Aplikasi ini terdiri dari satu bentuk jendela
dasar dengan bermacam-macam pengaturan Windows, seperti pushbutton, list boxes, dan entry field. Aplikasi ini digunakan ketika aplikasi yang ingin dibuat
tidak membutuhkan area client yang digunakan untuk menggambar atau ketika aplikasi yang dibuat membutuhkan bermacam-macam pengaturan Windows untuk berinteraksi dengan pengguna (user).
Class hierarki pada MFC diperlihatkan pada Gambar 2.9. Seluruh class dalam
MFC tergabung dari class dasar yang disebut CObject. Class ini terdiri dari data members dan member functions yang terdapat pada MFC class. Class CwinApp digunakan saat membuat suatu aplikasi dan hanya digunakan sekali pada setiap program. Class CWnd berfungsi untuk menggabungkan seluruh fasilitas yang disediakan untuk aplikasi windows, membuat kotak dialog, dan pengontrolan.
Pada Microsoft Visual C++, dalam penulisan listing program menggunakan standar penulisan yang disebut dengan “Hungarian Notation” pada awal nama variable. Notasi tersebut digunakan untuk menandakan tipe dari variable. Beberapa Hungarian Notation diperlihatkan pada Tabel 2.2.
Tabel 2.2. Hungarian Notation [14] Notasi Tipe
B BOOL
c Character
h Handle
i Integer
l Long
m_ Member
p Pointer
sz Null terminated String
w UINT
Visual C++ berisi beberapa pengaturan dasar untuk mengedit resource files. Resource files merupakan objek program yang dikategorikan sebagai berikut icon, menu,
dialog, accelerator, bitmap, cursor, toolbar, string table, dan version yang ditentukan
diluar dari kode program C++. Semua resource files memiliki properties. Pada properties, salah satunya dapat terlihat ID atau nama dari resource tersebut. Secara umum, property dialog dapat mempermudah dalam pemodifikasian dan pengaturan sebuah resource.
Sebagai aplikasi yang bersifat user interface, aplikasi dengan dialog boxes menyediakan fasilitas message box (Gambar 2.10). Fasilitas ini digunakan untuk menampilkan beberapa psesan kesalahan atau pertanyaan dan user diminta merespon message box tersebut dengan menekan salah satu tombol sebelum melanjutkan aplikasi.
Ada tiga parameter yang harus diatur, yang pertama ialah jenis message box yang ingin ditampilkan, yang kedua ialah judul dari message box, dan yang ketiga ialah pengaturan dari perilaku message box. Pada Gambar 2.10 memperlihatkan jenis message box tersebut ialah message box pertanyaan, judulnya ialah “Message Box” dan perilakunya
ialah Yes atau No.
Gambar 2.10. Message Box
Sebagian besar aplikasi pasti menampilkan tampilan yang dinamakan splash screen pada saat program dijalankan. Beberapa aplikasi menampilkan splash screen yang
berisi gambar icon dari program dan pesan hak cipta pembuat program. Tujuan dari splash screen ialah menunjukan kepada user tentang hak cipta dan informasi registrasi.
2.12
Wave I/O pada Windows
Fungsi Windows Multimedia API (Application Programming Interface) adalah untuk mempermuda h perekaman suara ataupun memutar sebuah file suara menggunakan kartu suara pada komputer. Win32 API merupakan kelompok dari Multimedia Control Interface (MCI) yang berfungsi sebagai antarmuka pemrograman multimedia untuk API.
WaveInOpen merupakan sebuah fungsi untuk membuka perangkat masukan suara
audio. Ketika buffer sudah terisi untuk proses perekaman audio, aplikasi akan memberitahu dengan sebuah window message, callback message, thread message, atau event, bergantung pada flag yang telah ditentukan saat perangkat dibuka. Sebelum
memulai perekaman dengan fungsi waveInStart, sebuah buffer harus dikirimkan ke driver perangkat, sehingga data audio yang masuk tidak hilang. Sebelum menutup perangkat audio dengan fungsi waveInClose, pemanggilan fungsi waveInReset harus dilakukan untuk menandai beberapa data blocks yang belum selesai[15].
Tabel 2.3. Fungsi Penanganan Recording[15] Fungsi Deskripsi Fungsi
waveInAddBuffer Mengirimkan sejumlah buffer ke driver perangkat sehingga perangkat dapat menyimpan data rekaman audio
waveInReset Menghentikan proses perekaman dengan menandai semua buffer yang masih tersisa untuk dihapus
18
BAB III
PERANCANGAN
3.1
Sistem Pengenalan Nada Alat Musik Suling
Recorder
Blok sistem pengenalan nada alat musik suling recorder secara keseluruhan diperlihatkan pada gambar 3.1.
Gambar 3.1. Blok diagram keseluruhan sistem
Sistem pengenalan nada alat musik suling recorder terdiri dari software pada laptop yang berfungsi sebagai user interface dalam proses pengenalan. Software laptop yang dibuat dalam bentuk user interface dengan bahasa C++ berperan sebagai pusat pengaturan semua proses pengenalan nada alat musik suling recorder, seperti merekam suara nada suling dan mengenali suara nada yang terekam. Perekaman suara dilakukan oleh laptop melalui mikrofon (microphone) dan jalur line in pada kartu suara(SoundCard).
1. Suling Recorder
Gambar 3.2. Suling Recorder Tampak Atas(kiri), Tampak Bawah(kanan)
Cara memainkan alat musik recorder dapat dilihat pada tabel 2.1. Alat musik ini akan direkam dengan jarak ±30cm dari mikrofon.
2. Mikrofon
Mikrofon yang digunakan adalah mini multimedia microphone Genius MIC-01A dapat dilihat pada gambar 3.3. Mini mikrofon sangat mudah digunakan dan dibawa karena bentuknya yang sangat ringan. Mini mikrofon hanya dapat mendengar suara dari jarak dekat (±1 meter dari sumber suara). Spesifikasi dari mini multimedia microphone Genius MIC-01A dapat dilihat pada Tabel 3.1.
Tabel 3.1. Spesifikasi Mini Multimedia Microphone Genius MIC-01A[17]
Frequency Response 100Hz ~ 10KHz
Sensitivity -62dB
Output Impedance 2.2KΩ @1KHz
Cable length 3.0 Meters
Audio Output Connector 3.5mm Stereo Audio Plug
Weight 107 gram
Mikrofon berfungsi untuk menangkap sinyal analog dan kemudian menyalurkannya ke sound card pada leptop melewati line in yang ada pada sound card.
3. Sound Card
Sound card berfungsi mengubah sinyal analog dari mikrofon menjadi sinyal
digital. Sound card yang digunakan adalah sound card yang sudah terpasang pada motherboard. Dalam konversi sinyal analog menjadi sinyal digital dan kemudian
disimpan diperlukan pengaturan yang meliputi pengaturan sampling rate (frekuensi sampling) dan channel. Pengaturan tersebut dilakukan pada proses perekaman oleh program yang akan dibuat.
4. Proses Perekaman
Proses perekaman adalah proses masuknya data nada terekam berupa sinyal digital. Saat proses perekaman berlangsung sinyal analog dikonversi menjadi sinyal digital dengan frekuensi sampling dan tipe data berupa channel yang sudah ditentukan. Sinyal digital kemudian disimpan dan digambarkan dalam sebuah plot. Data nada yang telah disimpan disebut nada terekam dan kemudian dapat
diproses untuk dikenali lewat proses pengenalan nada.
5. Proses Pengenalan Nada
Gambar 3.4. Blok Diagram Proses Pengenalan Nada a. Frame blocking
Proses ini memilih data dari data nada terekam, sehingga data yang dipilih dapat mewakili semua data pada nada terekam.
b. Normalisasi
Proses ini bertujuan untuk menyetarakan amplitudo maksimum baik nada terekam dengan nada referensi, sehingga efek dari kuat lemahnya suara yang dikeluarkan alat musik suling recorder tidak terlalu mempengaruhi proses pengenalan.
c. Windowing
Windowing berfungsi untuk mengurangi efek diskontinuitas dari sinyal digital hasil rekaman. Dalam perancangan ini penulis menggunakan window kaiser dari jenis-jenis windowing yang ada.
d. FFT
FFT cara cepat menghitung DFT. DFT berfungsi untuk mengkonversi domain waktu ke domain frekuensi. Domain frekuensi digunakan untuk melihat ciri dari suatu nada. Penulis menggunakan FFT radix 2 dalam sistem pengenalan alat musik recorder ini.
e. Fungsi Jarak
Proses ini membandingkan nada terekam dengan 8 nada referensi. Hasil dari perbandingan adalah jarak yang kemudian akan digunakan dalam proses selanjutnya. Dalam proses ini penulis menggunakan fungsi jarak Chebyshev. f. Penentuan
3.2
Perancangan Nada Referensi
Sebagai penentuan pengenalan nada alat musik suling recorder dibutuhkan nada acuan yang disebut nada referensi. Nada referensi hendaknya memiliki ciri yang sudah diketahui oleh sistem. Untuk memperoleh nada referensi pada setiap nada yang akan dikenali pada sistem pengenalan nada alat musik suling recorder, penulis mengambil 10 sampel pada setiap nada yang akan dikenali tersebut (nada C’, D’, E’, F’, G’, A’, B’, dan C”). Proses Pengambilan dapat dilihat pada Gambar 3.5. Pengambilan nada yang akan dijadikan nada referensi harus melalui proses sampling, frame blocking, normalisasi, windowing, dan FFT. Pengambilan dilakukan dengan menggunakan program Visual C++
yang akan dibuat.
Gambar 3.5. Blok Diagram Proses Pengambilan Nada Referensi
Proses Pengambilan Nada disesuaikan dengan variabel bebas pada pembuatan sistem pengenalan nada alat musik suling recorder, tetapi dengan durasi dan frekuensi sampling yang sudah ditetapkan. Setelah 10 nada sampel pada setiap nada diperoleh, maka dilakukan perhitungan (3.1) untuk mendapatkan nada referensi. Digunakan hasil FFT yang telah dinormalisasi sebagai nada sampelnya, sehingga sistem pengenalan nada alat musik suling recorder tidak melakukan perhitungan kembali dalam mendapatkan nada referensi dan proses pada sistem pengenalan nada alat musik suling recorder dapat berjalan lebih cepat.
𝐵𝐵𝑆𝑆𝑛𝑛𝑆𝑆𝐴𝐴𝐴𝐴𝑟𝑟𝐴𝐴𝐴𝐴𝐴𝐴𝐵𝐵𝐴𝐴𝑏𝑏 = 𝐵𝐵𝑆𝑆𝑛𝑛𝑆𝑆𝐴𝐴𝑆𝑆𝑆𝑆𝑆𝑆𝐴𝐴𝑆𝑆1+𝐵𝐵𝑆𝑆𝑛𝑛𝑆𝑆𝐴𝐴𝑆𝑆𝑆𝑆𝑆𝑆𝐴𝐴𝑆𝑆2+ … +𝐵𝐵𝑆𝑆𝑛𝑛𝑆𝑆𝐴𝐴𝑆𝑆𝑆𝑆𝑆𝑆𝐴𝐴𝑆𝑆10
10 (3.1)
3.3
Nada Uji
Nada Uji diambil setelah user menekan tombol “REKAM”. Hasil rekaman atau sampling diambil dengan frekuensi sampling dan durasi perekaman yang sudah ditentukan.
Sampling kemudian diproses seperti halnya dalam mencari nada referensi (Gambar 3.5). Proses yang berlangsung meliputi sampling, frame blocking, windowing, normalisasi, dan FFT. Hasil proses tersebut disimpan dalam bentuk variabel dengan nama NadUji dan kemudian diproses kembali untuk mendapatkan hasil pengenalan nada alat musik suling recorder.
3.4
Perancangan Tampilan Program Visual C++
1. Tampilan Utama
Tampilan utama program dibuat agar user dapat dengan mudah mengoperasikan program ini serta mengerti hasil dari pengenalan nada alat musik suling recorder. Pembuatan tampilan menggunakan aplikasi MFC dengan tipe Dialog Based. Tampilan utama pada laptop tampak pada Gambar 3.6. Beberapa keterangan dari tampilan utama program dijelaskan pada Tabel 3.2.
Tabel 3.2. Keterangan Tampilan Utama Program Nama Bagian Deskripsi
Tombol Rekam Digunakan untuk mengambil suara nada alat
musik suling recorder yang sedang
dimainkan.
Alpha pada Windowing Untuk memilih nilai alpha yang akan
digunakan pada proses pengenalan nada, pilihan nilai alpha pada windowing seperti 1000, 100, 40, dan 0.
FFT Radix 2 Untuk memilih titik FFT yang digunakan
pada proses pengenalan nada, pilihan berupa 128, 64, 32, dan 16 titik.
Tombol Pengenalan Nada Digunakan untuk memulai proses
pengenalan.
Nada yang dikenal Untuk menampilkan nada yang didapat
setelah proses pengenalan
Jarak Untuk menampilkan jarak yang didapat dari
proses perbandingan 8 nada referensi
Tombol Reset Digunakan bila ingin memulai proses
pengenalan nada yang baru
Tombol Exit Digunakan untuk mengakhiri aplikasi
Plot Hasil Rekaman Tampilan grafik suara hasil rekaman
Plot Data Hasil FFT Tampilan data berupa grafik data hasil FFT baik dari rekaman maupun dari 8 nada referensi
Menu : Help Digunakan untuk membuka jendela bantuan
Menu : Profil Digunakan untuk membuka jendela Profil
Menu : About Digunakan untuk membuka jendela About
2. Tampilan Jendela Help
Tampilan jendela Help akan muncul jika user memilih pilihan Menu > Help. Jendela Help berisi bantuan berupa langkah-langkah dalam pengoperasian program. Jendela Help tampak pada Gambar 3.7.
3. Tampilan Jendela Profil
Tampilan jendela Profil akan muncul jika user memilih opsi Menu > Profil. Jendela Profil berisi data diri pembuat sistem pengujian ketahanan baterai mainan. Jendela About tampak pada Gambar 3.8.
4. Tampilan Jendela About
Tampilan jendela About akan muncul jika user memilih opsi Menu > About. Jendela About berisi keterangan tentang versi dan pembuat program. Jendela About tampak pada Gambar 3.9.
Gambar 3.7. Tampilan jendela Help
Gambar 3.9. Tampilan Kotak Dialog About
3.5
Perancangan Alur Program
Program pengenalan nada alat musik suling recorder akan dieksekusi saat user mulai menjalankan program ini. Setelah tampilan utama terlihat, proses pengujian sudah dapat dilakukan. User pertama kali harus melakukan pengaturan pengenalan nada dengan memilih pilihan yang tersedia di combobox “Alpha pada Windowing” dan “FFT Radix 2”. Saat user menekan tombol “PENGENALAN NADA”, sistem akan mengambil suara nada alat musik suling recorder yang dimainkan. Jika suara nada telah terekam, proses akan berlanjut untuk mengenali nada tersebut. Proses pengenalan akan berhenti ketika nilai jarak antara nada terekam dengan nada referensi telah didapat dan nada terekam dapat dikenali. Alur program keseluruhan ini diperlihatkan pada Gambar 3.10.
Gambar 3.10. Alur Program Keseluruhan
Gambar 3.12. Alur Program Frame Blocking
Gambar 3.14. Alur Program Normalisasi 1
Gambar 3.15. Alur Program FFT
Gambar 3.17. Alur Program Fungsi Jarak
3.6
Perancangan Subsistem Program
Terdapat dua subsistem penting dalam sistem pengenalan nada alat musik suling recorder, diantaranya subsistem sampling dan subsistem pengenalan nada. Dalam
perancangan subsistem tersebut diperlukan variabel terikat sehingga pengenalan dapat berhasil dan dengan waktu proses yang optimal. Percobaan awal untuk mencari variabel tersebut sangat diperlukan. Dalam percobaan awal digunakan program Matlab v.7 karena dalam program tersebut memiliki fungsi–fungsi menunjang subsistem dari sistem program pengenalan nada alat musik suling recorder.
3.6.1
Subsistem
Sampling
Dalam subsistem ini terdapat 2 variabel terikat berupa frekuensi sampling dan durasi perekaman. Setelah melakukan percobaan awal, dapat disimpulkan:
a. frekuensi sampling yang digunakan adalah 2400Hz, karena berdasarkan percobaan awal ditemukan bahwa frekuensi tertinggi yang akan dikenali adalah 1070Hz untuk lebih lengkapnya dapat dilihat pada lampiran halaman L1.
b. durasi perekaman yang digunakan adalah 2 detik, karena dalam waktu 2 detik suara yang dimainkan sudah stabil khususnya pada deretan data tengah yang akan dipilih dalam proses frame blocking untuk lebih lengkapnya dapat dilihat pada lampiran halaman L8.
3.6.2
Subsistem Pengenalan Nada
Dalam subsistem ini terdapat 2 proses menggunakan variabel tetap dan 2 proses menggunakan variabel bebas. Satu proses yang menggunakan variabel tetap adalah proses fungsi jarak dan frame blocking. Tiga proses lainnya yang menggunakan variabel bebas adalah titik FFT dan nilai alpha pada windo wing. Variabel yang akan dievaluasi untuk membangun sistem pengenalan nada yang optimal adalah ketiga variabel bebas tersebut.
a. frame blocking mengambil sampel data dari deretan data suara terekam sebanyak 128 data sampel, karena semakin banyak data akan membuat komputasi dalam sistem meningkat dan memperlambat proses pengenalan nada untuk lebih lengkapnya dapat dilihat pada lampiran halaman L10.
c. Titik FFT yang digunakan untuk mengkonversi data hasil windowing adalah 128 titik, 64 titik, 32 titik, dan 16 titik. Dalam subsistem pengenalan nada, data hasil FFT yang digunakan adalah data riil atau amplitudonya.
d. Fungsi jarak yang digunakan adalah fungsi jarak Chebyshev. Kedelapan nada referensi yang digunakan pada proses ini adalah data yang sudah dikonversi menggunakan FFT terlebih dahulu dan disimpan. Setiap nada referensi memiliki data sesuai dengan titik FFT dan alpha windowing yang digunakan, sehingga banyaknya nada referensi berjumlah 16 data dalam 1 nada (Tabel 3.3).
Tabel 3.3. Nada Referensi C
Nama data referensi Titik FFT Alpha pada windowing
NadaCRef 128 1000
100 40 0
64 1000
100 40 0
32 1000
100 40 0
16 1000
34
BAB IV
HASIL DAN PEMBAHASAN
Pengujian program perlu dilakukan untuk mengetahui apakah suatu program dapat bekerja dengan baik dan sesuai dengan perancangan. Hasil pengujian berupa data-data yang dapat memperlihatkan bahwa program yang telah dirancang dapat berjalan dengan baik. Analisa terhadap proses kerja dapat digunakan untuk menarik kesimpulan dari apa yang disajikan dalam tugas akhir ini.
4.1
Pengujian Program Pengenalan Nada Alat Musik Suling
Menggunakan Fungsi Jarak Chebyshev.
Pengujian program bertujuan untuk memastikan apakah program yang telah dibuat dapat bekerja sesuai dengan yang telah dirancang pada bab sebelumnya. Pengujian program menggunakan komputer dengan spesifikasi:
Processor : Intel® Atom™ CPU N570 @1.66GHz 1.67GHz
RAM : 2.00 GB
Program pengenalan dapat dijalankan dengan langkah-langkah di bawah ini:
1. Meng-click dua kali icon sulingrec.exe dengan Gambar icon seperti Gambar 4.1.
Gambar 4.1. Icon Program Pengenalan
2. Tampilan splash screen yang terlihat pada Gambar 4.2 akan muncul sebelum masuk ke tampilan utama program.
Gambar 4.2. Tampilan Splash Screen
4. Jika alpha pada windowing dan jumlah point FFT telah dipilih oleh user, program pengenalan dapat dimulai dengan menekan tombol “PENGENALAN”.
5. User diberikan waktu maksimal 3 detik untuk mempersiapkan nada yang akan dikenali sebelum nada direkam dan diproses.
6. Selanjutnya hasil pengenalan akan muncul dalam kotak “STATUS”. Jarak yang dihasilkan dari proses pengenalan akan muncul dalam kedelapan text box yang berada pada sebelah kanan. user dapat melihat grafik hasil rekaman dan grafik hasil proses FFT dalam kotak “PLOT” seperti yang terlihat pada Gambar 4.4. 7. Tombol RESET digunakan jika user ingin melakukan pengenalan baru. 8. Tombol EXIT digunakan jika user ingin keluar dari program.
9. Menu > Help dapat digunakan jika user membutuhkan langkah-langkah dalam pengoperasian program pengenalan alat musik suling recorder.
10.Menu > About dapat digunakan untuk membuka jendela About.
11.Menu > Profil dapat digunakan untuk membuka jendela Profil yang berisi profil pembiat sistem pengenalan alat musik suling recorder.
Gambar 4.4. Tampilan Utama Program Pengenalan Nada Alat Musik Suling Recorder
Pada implementasi program, tampilan jarak dan nada yang dikenali mengalami perubahan. Perubahan letak dimaksudkan agar program terlihat lebih simple dan elegan. Perubahan tampilan nada yang dikenali menjadi tampilan STATUS dimaksudkan agar user dapat mengetahui proses yang sedang dijalankan oleh program dari perekaman hingga nada dikenali. Listing program utama secara keseluruhan terlampir pada halaman L33 dengan judul sulingrecDlg.cpp.
4.1.1. Tombol Pengenalan
Tombol Pengenalan hanya dapat ditekan setelah user mengisi pengaturan pengenalan. Untuk mengetahui pengaturan pengenalan sudah diisi atau belum maka dilakukan pengecekan dengan menjalankan metode berikut:
///////////COMBOBOX CHECKER///////////////////////////////// int Alpha=0;
int NoAlpha=0;//for database call if (m_alpha==_T("1000"))
{Alpha=1000; NoAlpha=12;} ....
else
{MessageBox(_T("Pilihlah nilai Alpha yang akan digunakan terlebih dahulu."),_T("Peringatan"),MB_OK|MB_ICONEXCLAMATION);
return;}
Jika pada saat pengecekan berlangsung dan didapatkan pengaturan pengenalan yang belum terisi, maka program akan memberikan pesan seperti pada Gambar 4.5 dan Gambar 4.6. Tetapi jika pengaturan telah terisi, maka program akan melanjutkan ke proses selanjutnya.
Gambar 4.5. Pesan Bila Pengaturan Alpha Tidak Terisi
Gambar 4.6. Pesan Bila Pengaturan FFT Tidak Terisi
Selanjutnya program akan memberikan waktu kepada user untuk bersiap memainkan alat musik suling recordernya selama 3 detik dengan metode:
m_statimag.SetBitmap(stat2); Sleep(1000);
///
//////////////////////////////////////////////////////////// int NpointFFT=0;
int NoFast=0;//for database call if (m_fftpoint==_T("16"))
{NpointFFT=16; NoFast=0;}
else if(m_fftpoint==_T("32")) {NpointFFT=32;
NoFast=1;}
else if(m_fftpoint==_T("64")) {NpointFFT=64;
NoFast=2;}
else if(m_fftpoint==_T("128")) {NpointFFT=128;
NoFast=3;} else
{MessageBox(_T("Pilihlah nilai point of FFT yang akan digunakan terlebih dahulu."),_T("Peringatan"),MB_OK|MB_ICONEXCLAMATION);
return;}
User dapat mengetahui waktu yang tersisa melalui tampilan status yang ada pada tampilan
program seperti pada Gambar 4.7.
Gambar 4.7. Tampilan STATUS Menunggu Perekaman
Proses Perekaman akan dimulai jika tampilan status yang terdapat pada tampilan utama program terlihat seperti Gambar 4.8.
Gambar 4.8. Tampilan STATUS Mulai Perekaman
Persiapan untuk proses perekaman diawali dengan menginisialisasikan parameter perekaman dengan metode berikut:
///////////perekaman//////////////////////////////////////////// UpdateData(true);
unsigned int samplerate = 2400; int bit = 16; const int NUMPTS = 4800; short *waveIn;
int datarekam[4800]; ///4800=2 detik dengan 1 detiknya 2400sample
HWAVEIN hWaveIn; WAVEHDR WaveInHdr; MMRESULT result;
WAVEFORMATEX pFormat;
pFormat.wFormatTag=WAVE_FORMAT_PCM; pFormat.nChannels=1;
pFormat.nSamplesPerSec=samplerate; pFormat.wBitsPerSample=bit;
pFormat.nAvgBytesPerSec=samplerate * pFormat.wBitsPerSample /8; pFormat.nBlockAlign=pFormat.nChannels * pFormat.wBitsPerSample /8; pFormat.cbSize=0;
m_statimag.SetBitmap(stat3); Sleep(1000);
///
Metode diatas digunakan untuk mengkonfigurasi data dari sinyal suara yang akan direkam. Pada metode tersebut, konfigurasi dilakukan dengan menentukan parameter perekaman, seperti sample rate, format suara, channel, bit per sample, AvgBytesPerSec, dan BlockAlign.
AvgBytesPerSec merupakan rata-rata kecepatan transfer data dalam byte untuk tiap
detik. Nilai ini digunakan untuk menentukan ukuran dari buffer. Persamaan 4.1 merupakan rumusan untuk menentukan nilai AvgBytesPerSec.
𝐴𝐴𝐴𝐴𝐴𝐴𝐴𝐴𝐴𝐴𝐴𝐴𝐴𝐴𝐴𝐴𝐴𝐴𝐴𝐴𝐴𝐴𝐴𝐴𝐴𝐴𝐴𝐴 =𝐴𝐴𝑆𝑆𝑆𝑆𝑆𝑆𝑆𝑆𝐴𝐴𝐴𝐴𝑆𝑆𝐴𝐴𝐴𝐴𝑥𝑥𝑏𝑏𝑏𝑏𝐴𝐴𝑆𝑆𝐴𝐴𝐴𝐴𝐴𝐴𝑆𝑆𝑆𝑆𝑆𝑆𝑆𝑆𝐴𝐴/8 (4.1) BlockAlign merupakan nilai dari ukuran data dalam byte untuk tiap sample.
Persamaan 4.2 merupakan rumusan untuk nilai BlockAlign.
𝐴𝐴𝑆𝑆𝐵𝐵𝐴𝐴𝐵𝐵𝐴𝐴𝑆𝑆𝑏𝑏𝐴𝐴𝐵𝐵 =𝐶𝐶ℎ𝑆𝑆𝐵𝐵𝐵𝐵𝐴𝐴𝑆𝑆𝐴𝐴𝑠𝑠𝑆𝑆𝐴𝐴𝑆𝑆𝑥𝑥𝑏𝑏𝑏𝑏𝐴𝐴𝑆𝑆𝐴𝐴𝐴𝐴𝐴𝐴𝑆𝑆𝑆𝑆𝑆𝑆𝑆𝑆𝐴𝐴/8(𝑏𝑏𝐴𝐴𝐴𝐴𝐴𝐴) (4.2)
Metode diatas digunakan untuk menentukan struktur dari buffer. Buffer adalah memori yang disiapkan sebagai tempat penyimpanan sementara data hasil perekaman suara. Pada metode di atas, pengaturan persiapan buffer terdiri atas:
a. Pengalokasian memori penyimpan data hasil perekaman suara berupa pointer dengan menuliskan wavein = new short [NUMPTS].
b. Pendeklarasian variabel pointer dilakukan dengan menuliskan
waveinhdr.lpdata = (LPSTR) wavein.
c. Penentuan panjang buffer dilakukan dengan menuliskan
waveinhdr.dwbufferlength = NUMPTS * pformat.wbitspersample / 8. d. Penginisialisasian awal data yang terdapat pada buffer dilakukan dengan
menuliskan waveinhdr.dwbytesrecorded=0. Nilai 0 mengartikan buffer dalam keadaan kosong pada saat awal perekaman.
e. Penginisialisasian variabel dwuser dilakukan dengan menuliskan
waveinhdr.dwuser=0L. Nilai 0L sama artinya dengan nilai 0.
//pengaturan header buffer perekaman
waveIn = new short [NUMPTS];
WaveInHdr.lpData = (LPSTR) waveIn;
WaveInHdr.dwBufferLength = NUMPTS * pFormat.wBitsPerSample / 8;
WaveInHdr.dwBytesRecorded=0; WaveInHdr.dwUser=0L;
f. Penginisialisasian variabel dwflags dilakukan dengan menuliskan waveinhdr.dwflags=0L. Nilai 0L dimaksudkan bahwa tidak menggunakan flag sebagai informasi tambahan pada buffer.
g. Penginisialisasian variabel dwloops dilakukan dengan menuliskan
waveinhdr.dwloops=0L. Nilai 0L dimaksudkan bahwa pengulangan proses perekaman tidak dilakukan, hanya 1 kali proses perekaman.
Membuka perangkat suara dengan metode berikut:
Mempersiapkan buffer untuk penyimpanan sementara data hasil perekaman dengan metode berikut:
Memulai proses perekaman dengan metode berikut:
dan menunggu sampai perekaman selesai dengan metode seperti dibawah dan tampilan status seperti pada Gambar 4.9.
Gambar 4.9. Tampilan STATUS Perekaman Selesai
Mengambil data pada buffer untuk disimpan pada variabel dengan metode berikut:
Mem-plot data hasil rekaman pada grafik dengan metode berikut:
///////////Ploting rekam////////////////// double SampleDataArray1[4800];
for(int i=0 ; i<2000 ; i++)
SampleDataArray1[ i ] = datarekam[i*2];
Scope.Channels[0].Data.SetYData(SampleDataArray1,2000); //ambil data perekaman
for(long i=0;i<NUMPTS;i++) {datarekam[i]=*waveIn; waveIn++;}
do {} while (waveInUnprepareHeader(hWaveIn, &WaveInHdr, sizeof(WAVEHDR))==WAVERR_STILLPLAYING);
waveInReset(hWaveIn);
waveInStart(hWaveIn);
waveInAddBuffer(hWaveIn,&WaveInHdr,sizeof(WAVEHDR));
Setelah proses perekaman, program akan memproses data hasil perekaman untuk pemilihan data tengah dari deretan data hasil perekaman. Proses yang disebut frame blocking ini menggunakan metode:
Selanjutnya data hasil frame blocking akan melalui proses windowing untuk menghilangkan noise suara yang ikut terekam dalam proses perekaman. Dalam program pengenalan ini alpha yang digunakan untuk mengatur windowing bervariasi dan user dapat menggunakan 4 varian alpha yang terdapat pada combo box. pengecekan hasil pilihan dari user sudah dilakukan sebelum proses perekaman berlangsung. Windowing yang digunakan
adalah Kaiser window dimana menggunakan beta untuk komputasinya. Perolehan nilai beta tergantung dari alpha yang dipilih user. Dalam perhitungan nilai beta menggunakan
metode:
Setelah nilai beta diperoleh maka proses Kaiser dapat dilakukan. Metode yang digunakan dalam proses Kaiser windowing menggunakan metode yang didapat dari koders.com. Metode tersebut dimodifikasi sehingga menjadi:
///////////kaiser window/////////////////////////////////////// // diambil dari ::koders.com /// // filename ::window.cpp /// /////////////////////////////////////////////////////////////// //brief bessel function for kaiser window
const double t=1.e-08; double y=0.5*Beta; double e=1.0; double de=1.0; double xi; double sde;
for (int i=1;i<26;i++){ xi=i;
de *= y/xi; ///pilihan Beta if (Alpha>50)
{Beta=0.1102*(Alpha-8.7);} else if (Alpha<21)
{Beta=0;} else
{Beta=0.5842* pow((Alpha-21),0.4)+0.07886*(Alpha-21);} ////////////frame blocking////////////////////////////////////// //pilih data
int LFrame=128;//banyak data yang dipilih
Setelah proses windowing selesai dilakukan maka program akan menjalankan proses normalisasi dengan metode:
Selanjutnya program menjalankan inisialisasi variabel yang akan digunakan dalam proses FFT sebagai berikut:
///////////Normalisasi///////////////////////////////////////// double MaksNadWin=0;
double Norml[128];
for(int i=0 ;i<128;i++){
MaksNadWin=max(MaksNadWin,abs(NadWin[i]));} for(int i=0 ;i<128;i++){
Norml[i]=NadWin[i]/MaksNadWin;}
//brief kaiser window
double KaiserWin[128];//KaiserWin[panjang window atau LFrame] double bes=1.0/bessel1;
long odd=LFrame%2; double xo;
double xind=(LFrame-1)*(LFrame-1); for (int i=0;i<LFrame;i++){
if(odd) xo=i+0.5;
for (int g=1;g<26;g++){ xi=g;
de *= y/xi; sde = de*de; e += sde;
if((e*t-sde)>0)break;} double bessel2=e;
KaiserWin[i]=bessel2*bes; }
double window[128]; //left side window int cp=LFrame/2;
for (int i=0;i<cp;i++){
window[i]=KaiserWin[cp-i-1];} for (int i=0;i<cp;i++){
window[cp+i]=KaiserWin[i];} //end of kaiser window
double NadWin[128];
for(int i=0;i<LFrame;i++){
Proses FFT dibutuhkan data complex untuk perhitungannya, sedangkan data yang dihasilkan proses normalisasi 1 adalah data real. Program menjalankan proses untuk mengonversi data real menjadi data complex sehingga dapat dilakukan proses perhitungan FFT dengan metode:
Selanjutnya data yang sudah dikonversi menjadi data complex diproses dengan metode FFT yang didapat dari metode Danielson Lanzcos routine sebagai berikut:
//////////////////////////FFT//////////////////////////// // diambil dari ::codeprojects.com // // thread name ::how to make fft // // di posting oleh ::Joao Martins // ///////////////////////////////////////////////////////// //binary inversion (note that the indexes
//start from 0 witch means that the
//real part of the complex is on the even-indexes
//and the complex part is on the odd-indexes)
n=sample_rate << 1; j=0;
for (i=0;i<n/2;i+=2) { if (j > i) {
SWAP(vector[j],vector[i]); SWAP(vector[j+1],vector[i+1]); if((j/2)<(n/4)){
SWAP(vector[(n-(i+2))],vector[(n-(j+2))]);
SWAP(vector[(n-(i+2))+1],vector[(n-(j+2))+1]); }} m=n >> 1;
while (m >= 2 && j >= m) { j -= m;
m >>= 1;} j += m;}
//new complex array of size n=2*sample_rate
//if(vector!=NULL) // delete [] vector;
vector=new double [2*sample_rate]; nadFFT=new double [sample_rate];
//put the real array in a complex array
//the complex part is filled with 0's
//the remaining vector with no data is filled with 0's if (NpointFFT==16)
{MessageBox(_T("tidak dapat mengonvert ke bilangan
complex"),_T("Peringatan"),MB_OK|MB_ICONEXCLAMATION);
Data hasil perhitungan proses FFT merupakan data yang masih complex dan tidak dapat digunakan untuk proses fungsi jarak. data complex harus dikonversi menjadi data real sehingga dapat diproses dalam proses fungsi jarak. program menjalankan metode konversi yang dimodifikasi dengan penambahan fungsi normalisasi sebagai berikut:
Setelah data real diperoleh maka program menjalankan metode dibawah ini untuk menampilkan grafik hasil FFT nada suara uji.
/////////////////////PLOTING FFT/////////////////////
MessageBox(_T("Tidak dapat memplotting hasil FFT") ,_T("Gagal") ,MB OK|MB ICONEXCLAMATION);}
double MaksNadFFT=0; double *Norml2; if (NpointFFT==16) {
for(i=0; i<=(32); i+=2)
nadFFT[i/2]=sqrt((pow(vector[i],2)+pow(vector[i+1],2))); Norml2=new double[16];
for(int i=0 ;i<16;i++){ ///////Normalisasi 2//////// MaksNadFFT=max(MaksNadFFT,abs(nadFFT[i]));} for(int i=0 ;i<16;i++){
Norml2[i]=nadFFT[i]/MaksNadFFT;}} ....
//Danielson-Lanzcos routine mmax=2;
while (n > mmax) { istep=mmax << 1; theta=(2*pi/mmax); wtemp=sin(0.5*theta); wpr = -2.0*wtemp*wtemp; wpi=sin(theta);
wr=1.0; wi=0.0;
for (m=1;m<mmax;m+=2) {
for (i=m;i<=n;i+=istep) { j=i+mmax;
tempr=wr*vector[j-1]-wi*vector[j]; tempi=wr*vector[j]+wi*vector[j-1]; vector[j-1]=vector[i-1]-tempr; vector[j]=vector[i]-tempi; vector[i-1] += tempr;
vector[i] += tempi; } wr=(wtemp=wr)*wpr-wi*wpi+wr;
wi=wi*wpr+wtemp*wpi+wi; } mmax=istep; }
Selanjutnya program menjalankan proses menghitung jarak menggunakan metode:
Variabel ref2 merupakan pointer variabel yang akan dibandingkan didapat melalui pemanggilan data referensi melalui metode:
Dalam proses penentuan nada hasil jarak terpendek dibandingkan dengan perolehan jarak dari masing-masing nada referensi. Jika jarak terpendek sama nilainya dengan salah satu jarak pada nada referensi, maka nada dikenali adalah salah satu nada sesuai dengan nada referensi. Penentuan nada ini menggunakan metode:
Hasil penentuan akan muncul pada tampilan STATUS program pengenalan nada alat musik suling recorder seperti pada Tabel 4.1.
Berdasarkan pengujian, tombol PENGENALAN telah bekerja dengan baik. Saat tombol PENGENALAN ditekan, program telah merekam, menampilkan grafik rekaman, menampilkan grafik hasil FFT, menampilkan hasil jarak masing-masing nada, dan mengenali nada. Gambar 4.10 memperlihatkan contoh tampilan setelah tombol PENGENALAN ditekan, dengan nada yang dimainkan adalah nada Sol/ G’, pengaturan berupa alpha pada windowing sebesar 1000, dan FFT sebesar 128 point. Grafik pertama adalah hasil sampling nada suara uji, grafik kedua adalah hasil FFT nada suara uji, dan tampilan STATUS sesuai dengan nilai jarak minimum yang berada pada text box jarak Sol(G’).
////////////////////PENENTUAN NADA//////////////////////// double jarakminimum=1;
for(i=0;i<7.2;i++)
{jarakminimum=min(jarakminimum,jarak[i]);} if (jarakminimum>0.70)
{m_statimag.SetBitmap(nadaNN);} else if (jarakminimum==jarak[0]) {m_statimag.SetBitmap(nadaC);} ....
if(d==0)
{ref2=NadaCRef6;} ....
Tabel 4.1. Tampilan STATUS Nada Yang Dikenali
No. STATUS Keterangan
1. Nada yang dikenali dari jarak
minimum yang didapat adalah nada Do/ C’.
2. Nada yang dikenali dari jarak
minimum yang didapat adalah nada Re/ D’.
3. Nada yang dikenali dari jarak
minimum yang didapat adalah nada Mi/ E’.
4. Nada yang dikenali dari jarak
minimum yang didapat adalah nada Fa/ F’.
5. Nada yang dikenali dari jarak
minimum yang didapat adalah nada Sol/ G’.
6. Nada yang dikenali dari jarak
minimum yang didapat adalah nada La/ A’.
7. Nada yang dikenali dari jarak
minimum yang didapat adalah nada Si/ B’.
8. Nada yang dikenali dari jarak
minimum yang didapat adalah nada Do tinggi/ C”.
Gambar 4.10. Tampilan Setelah Penekanan Tombol PENGENALAN.
4.1.2. Tombol
RESET
Tombol RESET digunakan apabila user ingin melakukan proses pengujian kembali. Saat tombol RESET ditekan, semua nilai variabel dikembalikan sama seperti saat inisialisasi program. Jika tombol RESET ditekan, maka program akan menjalankan metode berikut:
Berdasarkan pengujian, tombol RESET berjalan dengan baik. Program dapat mengembalikan semua nilai variabel seperti saat inisialisasi program dan user melakukan pengujian kembali dengan menekan tombol RESET.
m_statimag.SetBitmap(stat1);
Scope.Channels[0].Data.Clear(); SFourier.Channels[0].Data.Clear(); Scope.Hold=false;