Perancangan Subsistem Pengenalan Nada Saksofon Alto Pengujian Program Pengenalan Nada Saksofon Alto menggunakan

35 BAB IV HASIL DAN PEMBAHASAN Program yang telah dibuat perlu dilakukan sebuah pengujian. Pengujian berguna untuk mengetahui kinerja program tersebut dalam melakukan pengenalan nada. Pada pengujian akan diperoleh hasil pengujian berupa data-data. Data-data hasil pengujian menunjukan program yang telah dirancang dapat berjalan dengan baik atau tidak. Pada bab ini akan dilakukan analisa dan pembahasan pada data hasil pengujian yang telah diperoleh.

4.1. Pengujian Program Pengenalan Nada Saksofon Alto menggunakan

FFT dan Pengklasifikasian K-NN dan Fungsi Jarak Simetrik Probabilitas  2 Perancangan program menggunakan software Matlab 7.6.0 R2008a. Pada pengujian program menggunakan laptop dengan spesifikasi: Prosesor : Intel® Pentium Inside CPU 2.40 GHz RAM : 2 GB Tipe sistem : Sistem operasi 32 bit Proses pengenalan nada saksofon alto dapat dilakukan dengan menjalankan langkah- langkah di bawah ini: 1. Mengklik dua kali ikon Matlab pada layar desktop dengan gambar ikon seperti Gambar 4.1. Gambar 4.1. Ikon Matlab 7.6.0 R2008a 2. Setelah melakukan langkah 1, akan tampil tampilan utama software Matlab seperti Gambar 4.2. Gambar 4.2. Tampilan Matlab 3. Sebelum membuka tampilan program, perlu memastikan terlebih dahulu pada Current Directory sudah sesuai dengan tempat penyimpanan program yang telah dirancang. 4. Mengetikan perintah gui pada Command window untuk memunculkan tampilan program pengenalan nada. Setelah itu akan muncul tampilan program pengenalan nada seperti pada Gambar 4.3. Gambar 4.3. Tampilan Program Pengenalan Nada Saksofon alto 5. User memilih nilai variasi frame blocking, windowing koefisien dan nilai k pada K- NN yang akan digunakan terlebih dahulu sebelum melakukan pengenalan nada. Nilai variasi frame blocking yang disediakan adalah 16, 32, 64 dan 128. Nilai variasi windowing koefisisen yang disediakan adalah 10, 20, 30, 40, 50, 60, 70, 80, 90, 100. Nilai variasi K-NN yang disediakan adalah 1, 3, 5 dan 7. 6. Apabila langkah 5 sudah dilakukan, user dapat memulai pengenalan nada dengan menekan tombol “RECORD”. Hasil pengenalan nada saksofon alto terlihat seperti pada gambar 4.4. Gambar 4.4 Tampilan Hasil Pengenalan 7. User dapat mengulang kembali pengenalan nada dengan menekan tombol “RESET” dan mengulang kembali langkah 5 dan 6. 8. User dapat mengakhiri pengenalan nada dengan menekan tombol “CLOSE”.

4.1.1. Pengenalan Nada

Pengenalan nada dapat dilakukan dengan melakukan berbagai langkah-langkah seperti yang telah dijelaskan di atas. Tampilan program pengenalan nada dapat dilihat pada Gambar 4.3. Pada tampilan pengenalan nada terdapat 3 pop up menu, 2 axes, 3 push button , dan 1 edit text. User dapat memulai pengenalan nada dengan melakukan pengaturan terlebih dahulu pada program pengenalan nada. Pengaturan yang perlu dilakukan adalah dengan memilih nilai nilai variasi frame blocking, windowing koefisien dan nilai k pada k-NN yang terdapat pada pop up menu. Setelah menentukan nilai variasi yang akan digunakan, user dapat memulai pengenalan nada dengan menekan tombol tekan ”RECORD”. Hasil pengenalan yang ditampilkan adalah plot perekaman, plot FFT, dan nada yang berhasil dikenali. User dapat mengulang pengenalan nada dengan menekan tombol “RESET” dan mengakhiri pengenalan dengan menekan tombol “CLOSE” seperti yang telah dijelaskan di atas. a. Pop Up Menu Pada tampilan program pengenalan nada terdapat 3 pop up menu yaitu variasi frame blocking, windowing koefisien dan nilai K-NN. Nilai variasi frame blocking yang ditampilkan pada pop up menu yaitu 16, 32, 64, 128. Nilai variasi windowing koefisien yang ditampilkan pada pop up menu yaitu 10, 20, 30, 40, 50, 60, 70, 80, 90 dan 100. Pada variasi frame blocking menampilkan menjalankan perintah program yang telah dirancang sebagai berikut: indeks=gethandles.popupmenu1,Value; switch indeks case 1 framebl=128; case 2 framebl=64; case 3 framebl=32; case 4 framebl=16; end handles.frame=framebl; guidatahObject,handles; Pada program di atas, nilai frame blocking diinisialisai menggunakan nama frame yang dibagi dalam 4 kondisi sesuai dengan banyaknya variasi. Inisialisasi frame tersebut diproses menggunakan perintah handles. Perintah ini digunakan untuk data atau nilai frame blocking yangtelah diinisialisasi sebagai masukan apabila dilakukan callback. Pada pop up menu variasi windowing koefisien listing program sebagai berikut: indeks=gethandles.popupmenu2,Value; switch indeks case 1 koef=100; case 2 koef=90; case 3 koef=80; case 4 koef=70; case 5 koef=60; case 6 koef=50; case 7 koef=40; case 8 koef=30; case 9 koef=20; case 10 koef=10; end handles.pct=koef; guidatahObject,handles; Proses yang dilalui oleh pop up menu pada variasi windowing koefisien sama dengan proses pada pop up menu variasi frame blocking. Nilai windowing koefisien diinisialisasikan dengan nama pct. Pada pop up menu variasi nilai K-NN listing program sebagai berikut : indeks=gethandles.popupmenu3,Value; switch indeks case 1 knn=7; case 2 knn=5; case 3 knn=3; case 4 knn=1; end handles.varn=knn; guidatahObject,handles; b. Tombol “RECORD” Tombol “RECORD” adalah tombol yang berfungsi untuk melakukan pengenalan nada saksofon alto. User dapat melakukan pengenalan nada saksofon alto dengan menekan tombol tersebut. Tombol “RECORD” memulai pengenalan nada dengan menjalankan beberapa subproses. Subproses yang dijalankan dimulai dari perekaman nada, ekstraksi ciri FFT, penghitungan jarak Simetrik Probabilitas  2 , dan penentuan hasil pengenalan nada berdasarkan kelas yang dipilih oleh user pada nilai k-NN. Program yang digunakan untuk perekaman nada sebagai berikut: sample_length=3; sample_freq=4800; sample_time=sample_lengthsample_freq; x=wavrecordsample_time, sample_freq; wavwritex, sample_freq, s.wav; axeshandles.axes1 plotx; x=wavreads.wav; Perekaman nada pada Matlab menggunakan perintah wavrecord dan wavwrite untuk menyimpan nada yang telah direkam. Nada yang telah terekam tersebut diplot pada tampilan program pengenalan menggunakan perintah plot. Nada terekam diplot pada axes yang telah tersedia di dalam tampilan program perekaman dan ekstraksi ciri FFT Gambar 3.14. Ekstraksi ciri FFT x5=absfftx4; x6=x51:fb2; Ambil sesuai persen koefisien jumkoef=floorpctkoef100fb2; x7=x61:jumkoef; x7=x7: axeshandles.axes2 bar x7; Nada terekam dan yang telah disimpan dipanggil kembali menggunakan perintah wavread . Dilakukan penginisialisasian nilai frame blocking, batas potong, dan windowing koefisien untuk memudahkan menjalankan proses ekstraksi ciri. Proses ekstraksi ciri memilki 3 masukan yaitu variabel b0, fb, dan pctkoef. bo adalah nilai batas potong. Fb dan pctkoef merupakan nilai masukan yang telah dipilih oleh user. Hasil dari ekstrasi ciri ditampilkan pada tampilan program seperti halnya hasil perekaman. if b0==0.3 fb==128 pctkoef==100 load db1128100; elseif b0==0.3 fb==128 pctkoef==90 load db112890; elseif b0==0.3 fb==128 pctkoef==80 load db112880; elseif b0==0.3 fb==128 pctkoef==70 load db112870; elseif b0==0.3 fb==128 pctkoef==60 load db112860; elseif b0==0.3 fb==128 pctkoef==50 load db112850; elseif b0==0.3 fb==128 pctkoef==40 load db112840; elseif b0==0.3 fb==128 pctkoef==30 load db112830; elseif b0==0.3 fb==128 pctkoef==20 load db112820; elseif b0==0.3 fb==128 pctkoef==10 load db112810; elseif b0==0.3 fb==64 pctkoef==100 load db164100; elseif b0==0.3 fb==64 pctkoef==90 load db16490; elseif b0==0.3 fb==64 pctkoef==80 load db16480; elseif b0==0.3 fb==64 pctkoef==70 load db16470; elseif b0==0.3 fb==64 pctkoef==60 load db16460; elseif b0==0.3 fb==64 pctkoef==50 load db16450; elseif b0==0.3 fb==64 pctkoef==40 load db16440; elseif b0==0.3 fb==64 pctkoef==30 load db16430; elseif b0==0.3 fb==64 pctkoef==20 load db16420; elseif b0==0.3 fb==64 pctkoef==10 load db16410; elseif b0==0.3 fb==32 pctkoef==100 load db132100; elseif b0==0.3 fb==32 pctkoef==90 load db13290; elseif b0==0.3 fb==32 pctkoef==80 load db13280; elseif b0==0.3 fb==32 pctkoef==70 load db13270; elseif b0==0.3 fb==32 pctkoef==60 load db13260; elseif b0==0.3 fb==32 pctkoef==50 load db13250; elseif b0==0.3 fb==32 pctkoef==40 load db13240; elseif b0==0.3 fb==32 pctkoef==30 load db13230; elseif b0==0.3 fb==32 pctkoef==20 load db13220; elseif b0==0.3 fb==32 pctkoef==10 load db13210; elseif b0==0.3 fb==16 pctkoef==100 load db116100; elseif b0==0.3 fb==16 pctkoef==90 load db11690; elseif b0==0.3 fb==16 pctkoef==80 load db11680; elseif b0==0.3 fb==16 pctkoef==70 load db11670; elseif b0==0.3 fb==16 pctkoef==60 load db11660; elseif b0==0.3 fb==16 pctkoef==50 load db11650; elseif b0==0.3 fb==16 pctkoef==40 load db11640; elseif b0==0.3 fb==16 pctkoef==30 load db11630; elseif b0==0.3 fb==16 pctkoef==20 load db11620; elseif b0==0.3 fb==16 pctkoef==10 load db11610; end Ekstraksi database diperoleh dari proses dengan menggunakan program sebagai berikut: function coba1 b0 = 0.3; fb=128; variasi frameblocking yang digunakan 16,32,64 dan 128 pctkoef=50; variasi windowing koefisien yang digunakan 10-100 z1=zciri Do,b0,fb,pctkoef; z2=zciri Re,b0,fb,pctkoef; z3=zciri Mi,b0,fb,pctkoef; z4=zciri Fa,b0,fb,pctkoef; z5=zciri Sol,b0,fb,pctkoef; z6=zciri La,b0,fb,pctkoef; z7=zciri Si,b0,fb,pctkoef; z8=zciri Do_,b0,fb,pctkoef; z=[z1 z2 z3 z4 z5 z6 z7 z8]; save db112850 z Program di atas untuk memanggil database yang akan dibandingankan dengan nada yang telah terekam menggunakan perhitungan jarak. Database yang dipanggil sesuai dengan pilihan variasi frame blocking dan windowing koefisien yang telah dipilih user. Proses yang dilakukan selanjutnya adalah membandingkan database dengan nada terekam menggunakan perhitungan jarak. Nilai perhitungan jarak tersebut dimasukkan ke dalam metode penentuan keluaran yaitu k-Nearest Neighbor k-NN, dimana k-Nearest Neighbor k-NN akan mengurutkan dari kecil sampai besar nilai dari hasil perhitungan jarak. Setelah mendapatkan nilai yang paling minimum dari pengurutan nilai hasil penghitungan jarak akan diambil nilai minimum sebanyak k nilai yang dipilih oleh user pada k-Nearest Neighbor k-NN, sesuai dengan urutan sampel dari database. Nilai kelas yang paling banyak muncul akan menjadi penentuan keluaran nada saksofon alto yang dikenal. Perintah program perhitungan jarak Gambar 3.15 sebagai berikut: for k=1:8 z2k=jarakx7,z:,k; end Setelah didapatkan proses perhitungan jarak selanjutnya masuk dalam penentuan pengeluan kelauran nada dalam tahap ini menggunakan metode k-NN. Kelas yang digunakan k-Nearest Neighbor k-NN adalah bilangan ganjil seperti 1, 3, 5, dan 7. Kelas k =1 sama dengan tidak menggunakan k-Nearest Neighbor k-NN karena nilai minimumnya hanya mencari satu nilai sampel dari database dan juga kelasnya hanya ada satu. k=1 tidak bisa mencari nilai yang paling minimum dari nada lain, sedangkan kelas k =3, 5, 7 menggunakan k-Nearest Neighbor k-NN karena mencari nilai minimum dari sampel database disetiap variasi sesuai dengan nilai k nya. k-Nearest Neighbor k-NN yang diambil sebagai keluaran adalah kelas yang paling banyak muncul. Perhitungan pengurutan nilai minimum ini menggunakan jarak simetrik probabilisitik  2 yang digunakan sebagai perhitungan nilai jarak minimum yang didapatkan dari perbandingan nada masukan dengan database. Karena keterbatasan Matlab 7.6.0 perintah program ditambah modus mode yang digunakan untuk mencari nilai yang paling sering muncul, di dalam modus terdapat sampel sesuai dengan variasi dari database. Berikut perintah program k-NN Gambar 3.16: Cari n tertangga terdekat k=vark k pada knn m=1; jumlah sampel per kelas [s1,s2]=sortz2,ascend; urut dari kecil terbesar jarakc=sortz2,ascend kj=s11:k k jarak tekecilatausimilaritas terbesar kn=s21:k k kelas terdekat hk=ceilknm penentuan kelas-kelas yang terpilih zout=modehk pilih kelas yang paling sering muncul idxkout=findhk==zout; jpilih=kjidxkout; fjpilih=fliplrjpilih; jmaks=fjpilih1 Penentuan keluaran nada nadaout=kelzout sethandles.edit2,String,nadaout; if zout == 1jmaks55.0487 korout = {Do}; elseif zout == 1 jmaks=55.0487 korout = {ERROR}; end if zout == 2 jmaks81.5725 korout = {Re}; elseif zout == 2 jmaks=81.5725 korout = {ERROR}; end if zout == 3 jmaks42.4711 korout = {Mi}; elseif zout == 3 jmaks=42.4711 korout = {ERROR}; end if zout == 4 jmaks54.8266 korout = {Fa}; elseif zout == 4 jmaks=54.8266 korout = {ERROR}; end if zout == 5 jmaks57.4214 korout = {Sol}; elseif zout == 5 jmaks=57.4214 korout = {ERROR}; end if zout == 6 jmaks105.5574 korout = {La}; elseif zout == 6 jmaks=105.5574 korout = {ERROR}; end if zout == 7 jmaks36.6529 korout = {Si}; elseif zout == 7 jmaks=36.6529 korout = {ERROR}; end if zout == 8 jmaks62.7467 korout = {Do_T}; elseif zout == 8 jmaks=62.7467 korout = {ERROR}; end hasilout=korout sethandles.edit2,string,hasilout Perintah program di atas adalah untuk menjalankan hasil penentuan keluaran nada apa yang dihasilkan dari penamaan keluaran teks dari 8 nada. Pada program tersebut penentuan keluaran metode k-Nearest Neighbour dan menentukan bukan nada yang dihasilkan menggunakan metode thresholding. Variasi k-NN menggunakan variabel “vark”. Pada metode k-Nearest Neighbour bertujuan untuk mengambil kelas terdekat atau tetangga terdekat dari perhitungan nilai jaraknya. Fungsi “ascend” pada program berfungsi untuk mengurutkan nilai jarak dari yang terkecil sampai yang terbesar. Metode Thresholding bertujuan untuk menentukan hasil keluaran yang tidak sesuai dengan nada pada database dengan penamaan “ ERROR”. Nilai thresholding didapatkan dari nilai batas optimal pada setiap nada lampiran 6. Penentuan keluaran menggunakan fungsi logika “if dan else ” dimana meliahat beberapa syarat yaitu kelas dan nilai thresholding, jika salah satu tidak terpenuhi maka program akan lanjut ke proses else. Hasil keluaran yang sesuai dengan persyaratan kelas dan nilai thresholding akan di tampilkan dengan format “sethandles.edit2,’string’,hasilout” dimana hasil keluaran akan ditampilan pada edit2 berupa text yakni delapan nada tersebut berdasarkan penamaan pada program hasil pengeluaran. Variabel kel adalah inisialisasi 8 nada. Nilai kelas yang paling banyak muncul akan dipanggil sebagai keluaran sesuai dengan nama yang telah diinisialisasi sebagai berikut: deskripsi string keluaran kel={Do;Re;Mi;Fa;Sol;La;Si;Do_T}; c. Tombol “RESET” Tombol “RESET” digunakan apabila user masih ingin melakukan pengenalan nada u ntuk nada lainnya. Tombol “RESET” berfungsi mengembalikan atau mengulang tampilan program ke tampilan awal. Program yang digunakan untuk tombol RESET adalah sebagai berikut: axeshandles.axes5; plot0; axeshandles.axes6; plot0; sethandles.edit3,String, ; Program di atas berfungsi untuk mengembalikan atau mengosongkan axes plot dan kolom edit yang menampilkan hasil pengenalan nada. d. Tombol “CLOSE” Tombol “CLOSE” berfungsi untuk mengakhiri proses pengenalan nada. Program untuk tombol CLOSE yaitu: deletefiguregui;

4.2. Hasil Pengujian Program Pengenalan Nada Terhadap Tingkat

Pengenalan Nada Saksofon Alto Pengujian program pengenalan nada saksofon alto terdiri dari tiga tahap pengujian. Tiga tahap pengujian yang dilakukan antara lain pengujian untuk menentukan batasan nilai jarak optimal, pengujian parameter pengaturan pengenalan nada meliputi pengujian secara tidak real-time dan pengujian secara real-time dan pengujian program menggunakan suara masukan dari alat musik lain.

4.2.1. Pengujian Parameter Pengenalan Nada

Pada pengujian ini bertujuan untuk menguji seberapa besar tingkat pengenalan nada dari setiap parameter. Parameter ini antara lain frame blocking, windowing koefisien. Dan nilai k pada K-NN. Pengujian program pengenalna alat musik saksofon alto ini mengguanakan 2 cara, yaitu pengujian secara tidak real-time, dan pengujian secara real- time . Untuk pengujian secara real-time dibagi menjadi 2 cara, real-time tanpa Thresholding, dan real-time menggunakan Thresholding.

4.2.1.1. Pengujian Secara Tidak Real-Time

Nada uji digunakan sebagai nada masukan untuk pengujian tidak real time. Proses pengambilan nada uji sama dengan proses pengambilan database nada. Pengujian tidak real time menggunakan nada uji sebanyak 8, 16, 32 dan 64 data setiap nada memiliki 1, 2, 4 dan 8 database. Hasil pengujian tidak real time adalah data tingkat pengenalan nada dari pengujian yang telah dilakukan. Persentase tingkat pengenalan sistem dapat dicari dengan menggunakan program lampiran 4. Data tingkat pengenalan untuk database 1, 2, 4 dan 8 disetiap nadanya lampiran 5 tersebut dipresentasikan dengan persentase yang menunjukan tingkat pengenalan nada berdasarkan variasi nilai frame blocking, windowing koefisien dan nilai k pada k-NN seperti yang ditunjukkan pada tabel 4.1, 4.2, 4.3, dan 4.4. Tabel 4.1. Menggunakan nilai frame blocking 128 dengan 1 database untuk setiap nada nilai k Windowing Koefisien 100 90 80 70 60 50 40 30 20 10 7 12,5 12,5 12,5 12,5 12,5 12,5 12,5 12,5 12,5 12,5 5 12,5 12,5 12,5 12,5 12,5 12,5 12,5 12,5 37,5 25 3 12,5 12,5 12,5 12,5 12,5 12,5 25 37,5 62,5 25 1 100 100 100 100 100 100 100 100 75 12,5 Tabel 4.2. Menggunakan nilai frame blocking 64 dengan database 1 untuk setiap nada nilai k Windowing Koefisien 100 90 80 70 60 50 40 30 20 10 7 12,5 12,5 12,5 12,5 12,5 12,5 12,5 12,5 12,5 12,5 5 12,5 12,5 12,5 12,5 12,5 12,5 12,5 12,5 25 3 12,5 12,5 12,5 12,5 12,5 12,5 12,5 25 25 1 100 100 100 100 100 100 87,5 87,5 50