1Cari indeks dari maksimal global [srt,idx]=sorty5,descend;

Ekstraksi database diperoleh dari proses dengan menggunakan program sebagai berikut : function databasebaru Variabel penelitian frame=4096; panjang frame blocking 1024 seg=sqrtframe; panjang segmen untuk rdct 32 k=1; nilai k pada knn 3 db_per_nada=8; Inisialisasi loop data_per_nada=8; jumlah sampelnada x=zeros2seg,data_per_nada; pakai centering b1=x;b2=x;b3=x;b4=x;b5=x;b6=x;b7=x;b8=x;b9=x; r1=x;r2=x;r3=x;r4=x;r5=x;r6=x;r7=x;r8=x;r9=x; p1=x;p2=x;p3=x;p4=x;p5=x;p6=x;p7=x;p8=x;p9=x; Perhitungan dengan loop for m=1:data_per_nada Belira b1:,m=prosesxc[bdo1 num2strm-1 .wav],frame,seg; b2:,m=prosesxc[bre1 num2strm-1 .wav],frame,seg; b3:,m=prosesxc[bmi1 num2strm-1 .wav],frame,seg; b4:,m=prosesxc[bfa1 num2strm-1 .wav],frame,seg; b5:,m=prosesxc[bsol1 num2strm-1 .wav],frame,seg; b6:,m=prosesxc[bla1 num2strm-1 .wav],frame,seg; b7:,m=prosesxc[bsi1 num2strm-1 .wav],frame,seg; b8:,m=prosesxc[bdot1 num2strm-1 .wav],frame,seg; b9:,m=prosesxc[bret1 num2strm-1 .wav],frame,seg; Recorder r1:,m=prosesxc[rdo1 num2strm-1 .wav],frame,seg; r2:,m=prosesxc[rre1 num2strm-1 .wav],frame,seg; r3:,m=prosesxc[rmi1 num2strm-1 .wav],frame,seg; r4:,m=prosesxc[rfa1 num2strm-1 .wav],frame,seg; r5:,m=prosesxc[rsol1 num2strm-1 .wav],frame,seg; r6:,m=prosesxc[rla1 num2strm-1 .wav],frame,seg; r7:,m=prosesxc[rsi1 num2strm-1 .wav],frame,seg; r8:,m=prosesxc[rdot1 num2strm-1 .wav],frame,seg; r9:,m=prosesxc[rret1 num2strm-1 .wav],frame,seg; Pianika p1:,m=prosesxc[pdo1 num2strm-1 .wav],frame,seg; p2:,m=prosesxc[pre1 num2strm-1 .wav],frame,seg; p3:,m=prosesxc[pmi1 num2strm-1 .wav],frame,seg; p4:,m=prosesxc[pfa1 num2strm-1 .wav],frame,seg; p5:,m=prosesxc[psol1 num2strm-1 .wav],frame,seg; p6:,m=prosesxc[pla1 num2strm-1 .wav],frame,seg; p7:,m=prosesxc[psi1 num2strm-1 .wav],frame,seg; p8:,m=prosesxc[pdot1 num2strm-1 .wav],frame,seg; p9:,m=prosesxc[pret1 num2strm-1 .wav],frame,seg; end Database if db_per_nada==1 x1=meanb1:,1:8;y1=meanr1:,1:8;z1=meanp1:,1:8; x2=meanb2:,1:8;y2=meanr2:,1:8;z2=meanp2:,1:8; x3=meanb3:,1:8;y3=meanr3:,1:8;z3=meanp3:,1:8; x4=meanb4:,1:8;y4=meanr4:,1:8;z4=meanp4:,1:8; x5=meanb5:,1:8;y5=meanr5:,1:8;z5=meanp5:,1:8; x6=meanb6:,1:8;y6=meanr6:,1:8;z6=meanp6:,1:8; x7=meanb7:,1:8;y7=meanr7:,1:8;z7=meanp7:,1:8; x8=meanb8:,1:8;y8=meanr8:,1:8;z8=meanp8:,1:8; x9=meanb9:,1:8;y9=meanr9:,1:8;z9=meanp9:,1:8; dbbelira=[x1 x2 x3 x4 x5 x6 x7 x8 x9]; dbrekorder=[y1 y2 y3 y4 y5 y6 y7 y8 y9]; dbpianika=[z1 z2 z3 z4 z5 z6 z7 z8 z9 ]; elseif db_per_nada==2 x1=meanb1:,1:4;x2=meanb1:,5:8; x3=meanb2:,1:4;x4=meanb2:,5:8; x5=meanb3:,1:4;x6=meanb3:,5:8; x7=meanb4:,1:4;x8=meanb4:,5:8; x9=meanb5:,1:4;x10=meanb5:,5:8; x11=meanb6:,1:4;x12=meanb6:,5:8; x13=meanb7:,1:4;x14=meanb7:,5:8; x15=meanb8:,1:4;x16=meanb8:,5:8; x17=meanb9:,1:4;x18=meanb9:,5:8; dbbelira=[x1 x2 x3 x4 x5 x6 x7 x8 x9 x10... x11 x12 x13 x14 x15 x16 x17 x18]; y1=meanr1:,1:4;y2=meanr1:,5:8; y3=meanr2:,1:4;y4=meanr2:,5:8; y5=meanr3:,1:4;y6=meanr3:,5:8; y7=meanr4:,1:4;y8=meanr4:,5:8; y9=meanr5:,1:4;y10=meanr5:,5:8; y11=meanr6:,1:4;y12=meanr6:,5:8; y13=meanr7:,1:4;y14=meanr7:,5:8; y15=meanr8:,1:4;y16=meanr8:,5:8; y17=meanr9:,1:4;y18=meanr9:,5:8; dbrekorder=[y1 y2 y3 y4 y5 y6 y7 y8 y9 y10... y11 y12 y13 y14 y15 y16 y17 y18]; z1=meanp1:,1:4;z2=meanp1:,5:8; z3=meanp2:,1:4;z4=meanp2:,5:8; z5=meanp3:,1:4;z6=meanp3:,5:8; z7=meanp4:,1:4;z8=meanp4:,5:8; z9=meanp5:,1:4;z10=meanp5:,5:8; z11=meanp6:,1:4;z12=meanp6:,5:8; z13=meanp7:,1:4;z14=meanp7:,5:8; z15=meanp8:,1:4;z16=meanp8:,5:8; z17=meanp9:,1:4;z18=meanp9:,5:8; dbpianika=[z1 z2 z3 z4 z5 z6 z7 z8 z9 z10... z11 z12 z13 z14 z15 z16 z17 z18]; elseif db_per_nada==4 x1=meanb1:,1:2;x2=meanb1:,3:4;x3=meanb1:,5:6;x4=mea nb1:,7:8; x5=meanb2:,1:2;x6=meanb2:,3:4;x7=meanb2:,5:6;x8=mea nb2:,7:8; x9=meanb3:,1:2;x10=meanb3:,3:4;x11=meanb3:,5:6;x12= meanb3:,7:8; x13=meanb4:,1:2;x14=meanb4:,3:4;x15=meanb4:,5:6;x16 =meanb4:,7:8; x17=meanb5:,1:2;x18=meanb5:,3:4;x19=meanb5:,5:6;x20 =meanb5:,7:8; x21=meanb6:,1:2;x22=meanb6:,3:4;x23=meanb6:,5:6;x24 =meanb6:,7:8; x25=meanb7:,1:2;x26=meanb7:,3:4;x27=meanb7:,5:6;x28 =meanb7:,7:8; x29=meanb8:,1:2;x30=meanb8:,3:4;x31=meanb8:,5:6;x32 =meanb8:,7:8; x33=meanb9:,1:2;x34=meanb9:,3:4;x35=meanb9:,5:6;x36 =meanb1:,7:8; dbbelira=[x1 x2 x3 x4 x5 x6 x7 x8 x9 x10... x11 x12 x13 x14 x15 x16 x17 x18 x19 x20... x21 x22 x23 x24 x25 x26 x27 x28 x29 x30... x31 x32 x33 x34 x35 x36]; y1=meanr1:,1:2;y2=meanr1:,3:4;y3=meanr1:,5:6;y4=mea nr1:,7:8; y5=meanr2:,1:2;y6=meanr2:,3:4;y7=meanr2:,5:6;y8=mea nr2:,7:8; y9=meanr3:,1:2;y10=meanr3:,3:4;y11=meanr3:,5:6;y12= meanr3:,7:8; y13=meanr4:,1:2;y14=meanr4:,3:4;y15=meanr4:,5:6;y16 =meanr4:,7:8; y17=meanr5:,1:2;y18=meanr5:,3:4;y19=meanr5:,5:6;y20 =meanr5:,7:8; y21=meanr6:,1:2;y22=meanr6:,3:4;y23=meanr6:,5:6;y24 =meanr6:,7:8; y25=meanr7:,1:2;y26=meanr7:,3:4;y27=meanr7:,5:6;y28 =meanr7:,7:8; y29=meanr8:,1:2;y30=meanr8:,3:4;y31=meanr8:,5:6;y32 =meanr8:,7:8; y33=meanr9:,1:2;y34=meanr9:,3:4;y35=meanr9:,5:6;y36 =meanr1:,7:8; dbrekorder=[y1 y2 y3 y4 y5 y6 y7 y8 y9 y10... y11 y12 y13 y14 y15 y16 y17 y18 y19 y20... y21 y22 y23 y24 y25 y26 y27 y28 y29 y30... y31 y32 y33 y34 y35 y36]; z1=meanp1:,1:2;z2=meanp1:,3:4;z3=meanp1:,5:6;z4=mea np1:,7:8; z5=meanp2:,1:2;z6=meanp2:,3:4;z7=meanp2:,5:6;z8=mea np2:,7:8; z9=meanp3:,1:2;z10=meanp3:,3:4;z11=meanp3:,5:6;z12= meanp3:,7:8; z13=meanp4:,1:2;z14=meanp4:,3:4;z15=meanp4:,5:6;z16 =meanp4:,7:8; z17=meanp5:,1:2;z18=meanp5:,3:4;z19=meanp5:,5:6;z20 =meanp5:,7:8; z21=meanp6:,1:2;z22=meanp6:,3:4;z23=meanp6:,5:6;z24 =meanp6:,7:8; z25=meanp7:,1:2;z26=meanp7:,3:4;z27=meanp7:,5:6;z28 =meanp7:,7:8; z29=meanp8:,1:2;z30=meanp8:,3:4;z31=meanp8:,5:6;z32 =meanp8:,7:8; z33=meanp9:,1:2;z34=meanp9:,3:4;z35=meanp9:,5:6;z36 =meanp9:,7:8; dbpianika=[z1 z2 z3 z4 z5 z6 z7 z8 z9 z10... z11 z12 z13 z14 z15 z16 z17 z18 z19 z20... z21 z22 z23 z24 z25 z26 z27 z28 z29 z30... z31 z32 z33 z34 z35 z36]; elseif db_per_nada==8 dbbelira=[b1 b2 b3 b4 b5 b6 b7 b8 b9]; dbrekorder=[r1 r2 r3 r4 r5 r6 r7 r8 r9]; dbpianika=[p1 p2 p3 p4 p5 p6 p7 p8 p9]; end dz=[dbbelira dbrekorder dbpianika]; save db8dct4096 dz function z=prosesxcfwav,frame,seg Proses ekstraksi ciri Baca file wav x1=wavreadfwav; Normalisasi 1 x1=x1maxabsx1; Pemrosesan Awal b0=0.3; batas potong aPemotongan sinyal sepertiga bagian kiri kiri satu b1=findx1b0 | x1-b0; x11:b11=[]; kiri dua hy0=floor 0.25lengthx1; x11:hy0=[]; bFrame blocking dari bagian kiri sinyal terpotong x2=x11:frame; cNormalisasi 2 x3=x2max abs x2; Row Mean DCT aPembentukan kolom matriks y2=reshapex3,seg,[]; bWindowing 2D [baris,kolom]=sizey2; hb=hannbaris;hk=hannkolom; for k=1:baris y2k,:=y2k,:.hk; end for k=1:kolom y2:,k=y2:,k.hb; end cDCT 2D y3=absdct2y2; dRerata baris y4=sumy3; Pemrosesan akhir aNormalisasi 3 y5=y4maxy4; bCentering hy4=lengthy4; b.1Cari indeks dari maksimal global [srt,idx]=sorty5,descend; imax=idx1;

b.2Pemrosesan sisi kiri y6=y5;

y6imax:hy4=[]; potong kanan y6=fliplry6; y6hy4=0; zero padding y6=fliplry6;

b.3Pemrosesan sisi kanan y7=y5;

y71:imax-1=[]; potong kiri y7hy4=0; zero padding b.4Penggabungan kiri dan kanan z=[y6 y7]; Program di atas untuk memanggil database yang akan dibandingankan dengan suara instrument musik yang telah terekam menggunakan perhitungan jarak. Database yang dipanggil sesuai dengan pilihan variasi frame blocking dan database pernada yang telah dipilih user. Proses yang dilakukan selanjutnya adalah membandingkan database dengan suara instrument musik yang 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 untuk suara instrument musik yang dikenal. Perintah program perhitungan jarak sebagai berikut: function z=jarakx,y Perhitungan jarak

x, y : data masukan z : data keluaran

z=sqrtsumx-y.2; jarak Euclidean 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 fungsi jarak euclidean yang digunakan sebagai perhitungan nilai jarak minimum yang didapatkan dari perbandingan nada masukan dengan database. Berikut perintah program k-NN : knn jsk=jumdb3; jumlah sampel per kelas pada database [s1,s2]=sortz,ascend; urut naik fungsi jarak kjarak=s11:k k hasil sorting kindeks=s21:k indeks dari k hasil sorting kpilih=ceilkindeksjsk; penentuan kelas-kelas yang terpilih kout=modekpilih kelas yang paling sering muncul idxkout=findkpilih==kout; cari indekx kout pada kpilih jpilih=kjarakidxkout; nilai-nilai jarak pada kout fjpilih=fliplrjpilih; flip kiri-kanan jmaks=fjpilih1 jarak maksimum c. Tombol “RESET” Tombol “RESET” digunakan apabila user masih ingin melakukan pengenalan suara instrument musik untuk suara instrument musik lainnya. Tombol “RESET” berfungsi mengembalikan atau mengulang tampilan program ke tampilan awal. Program yang digunakan untuk tombol RESET adalah sebagai berikut : axes handles.axes1; plot0; axeshandles.axes2; plot0; sethandles.text1,string, ; Program di atas berfungsi untuk mengembailkan atau mengosongkan axes plot dan kolom edit yang menampilkan hasil pengenalan suara instrument musik. d. Tombol “SELESAI” Tombol “SELESAI” berfungsi untuk mengakhiri proses pengenalan suara instrument musik. Program untuk tombol SELESAI : deletefigureGUIBaru;

4.2 Hasil Pengujian Program Pengenalan Suara Instrument Musik

Pengujian program pengenalan suara instrument musik dilakukan dengan beberapa tahap pengujian. Tahap pengujian ini dilakukan pengujian parameter pengaturan pengenalan suara intument musik meliputi pengujian secara tidak real-time dan pengujian secara real-time.

4.2.1 Pengujian Parameter Pengenalan Suara Instrument Musik

Pengujian ini bertujuan untuk menguji seberapa besar tingkat pengenalan suara instrument musik dari setiap parameter. Parameter ini antara lain frame blocking, nilai k pada K-NN dan nilai dari database per nada. Pengujian program pengenalan suara instrument musik dilakukan dengan pengujian secara tidak real-time dan pengujian secara real-time.

4.2.1.1 Pengujian Secara Tidak Real-Time

Suara uji digunakan untuk masukan pengujian secara tidak real-time. Proses pengambilan suara uji sama dengan proses pengambilan database. Pengujian tidak real-time menggunakan suara uji sebanyak 8, 4, 2 dan 1 data dimana setiap suara ujinya memiliki 1,2,4 dan 8 database.