4.2. Penjelasan Sintaks Program secara Real Time
Untuk sintaks program secara real time, pushbutton dan popupmenu yang terdapat pada GUI akan diisi sintaks program tertentu agar nantinya GUI dapat berjalan dengan baik
dan lancar. Untuk lebih jelasnya, berikut ini penjelasannya.
a. Pushbutton “MULAI”
Pada saat menekan pushbutton “MULAI” ini, sistem akan mulai merekam suara masukan dari gitar bass dan akan diproses lebih lanjut. Untuk lebih jelasnya berikut ini
proses-prosesnya dan juga sintaks programnya.
Proses merekam suara gitar bass Sintaks program yang digunakan ditunjukkan pada Gambar 4.4.
Gambar 4.4. Sintaks Program untuk Proses Merekam Berdasarkan sintaks program di atas, dapat dilihat bahwa terdapat sintaks
while. Sintaks ini digunakan untuk melakukan proses perulangan atau biasa dikenal dengan
looping selama kondisi ekspresi terpenuhi.
Untuk menghentikan proses looping tersebut dengan cara menggunakan sintaks
global. Sintaks global fungsinya untuk menghentikan sintaks while. Langkah-langkah untuk mendapatkan hasil keluarannya ditunjukkan pada
Gambar 3.6. Proses tersebut menghasilkan hasil sampling sinyal suara gitar bass seperti pada contoh Gambar 2.3. Selanjutnya hasil dari proses tersebut
akan dinormalisasikan.
global henti henti=0;
while henti==0
disptuning process.. pause1;
Variabel Penelitian frame=512; Panjang Frame Blocking
fs=512; Frekuensi Sampling hfs=fs2;
sg=wavrecordframe,fs,double; Sinyal Gitar untuk masukan wav
Proses Normalisasi
Sintaks program yang digunakan ditunjukkan pada Gambar 4.5.
Gambar 4.5. Sintaks Program untuk Proses Normalisasi Proses pertama yang akan diproses oleh sistem setelah dapat masukan suara
gitar bass yaitu proses normalisasi sinyal suara gitar bass terekam. Normalisasi dilakukan dengan cara membagi data masukan data sinyal suara
gitar bass terekam dengan nilai absolut data tersebut. Langkah-langkah untuk mendapatkan hasil keluarannya ditunjukkan pada Gambar 3.7. Proses
tersebut menghasilkan hasil normalisasi sinyal suara gitar bass seperti pada contoh Gambar 2.4.
Proses Frame Blocking
Sintaks program yang digunakan ditunjukkan pada Gambar 4.6.
Gambar 4.6. Sintaks Program untuk Proses Frame Blocking Setelah proses normalisasi, proses selanjutnya adalah frame blocking yang
tujuannya untuk mengambil sebagian data sesuai panjang nilai frame blocking yang sudah ada yang nantinya akan ditampilkan pada kotak axes 1
Hasil Frame Blocking. Langkah-langkah untuk mendapatkan hasil keluarannya ditunjukkan pada Gambar 3.8. Sebagian data yang diambil untuk
diproseskan selanjutnya, seperti pada contoh Gambar 2.6, dan akan menghasilkan hasil frame blocking seperti pada contoh Gambar 2.7. Setelah
melewati proses tersebut, data hasil frame blocking akan memasuki proses selanjutnya yaitu proses windowing.
Normalisasi y1=sgmaxabssg;
Frame Blocking x0=y11:frame;
axeshandles.axes1 plotx0
xlabelData Tercuplik,Fontsize,8 ylabelAmplitudo,Fontsize,8
Proses Windowing
Sintaks program yang digunakan ditunjukkan pada Gambar 4.7.
Gambar 4.7. Sintaks Program untuk Proses Windowing Setelah melewati proses frame blocking, hasil dari proses frame blocking
tersebut akan melalui proses windowing untuk menghilangkan diskontinuitas yang diakibatkan oleh proses frame blocking. Proses windowing ini
menggunakan Hamming Window. Dalam proses ini, hasil frame blocking dikalikan dengan hamming. Langkah-langkah untuk mendapatkan hasil
keluarannya ditunjukkan pada Gambar 3.9. Proses tersebut menghasilkan hasil windowing seperti pada contoh Gambar 2.8. Setelah mendapatkan hasil
windowing, maka hasil tersebut akan dilanjutkan pada proses FFT.
Proses FFT
Sintaks program yang digunakan ditunjukkan pada Gambar 4.8.
Gambar 4.8. Sintaks Program untuk Proses FFT Setelah melewati proses windowing, hasil dari proses windowing tersebut
akan memasuki pada tahap selanjutnya yaitu perhitungan dengan FFT, perhitungan ini untuk membangkitkan spektrum yang kemudian akan
dianalisis untuk mengetahui frekuensi nada yang dihasilkan saat user melalukan tuning dan hasil FFT akan ditampilkan pada kotak axes 2 Hasil
FFT. Langkah-langkah untuk mendapatkan hasil keluarannya ditunjukkan pada Gambar 3.10. Proses tersebut menghasilkan hasil FFT seperti pada
contoh Gambar 2.9. Setelah mendapatkan hasil FFT, proses selanjutnya yang harus dilalui untuk mendapatkan frekuensi keluarannya yaitu proses HPS.
Windowing h=hammingframe;
y2=x0.h;
FFT y3=absffty2,fs;
y3=y31:hfs; axeshandles.axes2
ploty3 xlabelFrekuensi Hz,Fontsize,8
ylabelAmplitudo,Fontsize,8
Proses HPS
Sintaks program yang digunakan ditunjukkan pada Gambar 4.9.
Gambar 4.9. Sintaks Program untuk Proses HPS Setelah melewati proses FFT, kemudian yang akan dilakukan adalah
perkalian elemen frekuensi dengan menggunakan HPS sehingga dapat diketahui pasti letak frekuensi sebenarnya dari nada gitar bass yang dilakukan
tuning dan hasil HPS akan ditampilkan pada kotak axes 3 Hasil HPS. Langkah-langkah untuk mendapatkan hasil keluarannya ditunjukkan pada
Gambar 3.11. Proses tersebut menghasilkan hasil HPS seperti pada contoh Gambar 2.13.
Frekuensi Keluaran
Sintaks program yang digunakan ditunjukkan pada Gambar 4.10.
Gambar 4.10. Sintaks Program untuk Frekuensi Keluaran Berdasarkan sintaks program di atas ini, fungsinya untuk menampilkan
frekuensi keluaran yang dilihat pada amplitudo tertinggi yang dihasilkan oleh HPS setelah melewati beberapa proses yang ada di atas dan hasilnya akan
ditampilkan pada kotak edit 1 Frekuensi Hz yang berupa string. Langkah- langkah untuk mendapatkan hasil keluarannya ditunjukkan pada Gambar
3.12.
HPS y4=y31:2:hfs; Downsampling
y4hfs=0; Zero Padding y5=y3.y4; Perkalian Elemen
axeshandles.axes3 ploty5
xlabelFrekuensi Hz,Fontsize,8 ylabelAmplitudo,Fontsize,8
Frekuensi Keluaran frek=findy5==maxy5-1;
sethandles.edit1,string,frek; sethObject,Backgroundcolor,[1 1 0];
Teks Nada Keluaran
Berikut ini adalah listing program untuk look up table dan untuk menampilkan hasil teks nada keluaran.
Gambar 4.11. Sintaks Program untuk Teks Nada Keluaran Berdasarkan sintaks program di atas ini, jika frekuensi keluaran yang
dihasilkan saat melakukan tuning yang ditampilkan pada kotak edit 1 Frekuensi Hz lebih rendah dari nilai yang sudah setting sebagai frekuensi
referensi untuk melakukan look up table, maka di kotak edit 3 Status akan
Cek kurang, pas, atau lebih LUT status = gethandles.popupmenu1,value;
if status == 1 sethandles.edit2,string,G;
if frek98 sethandles.edit3,string,Kurang;
elseif frek==98 sethandles.edit3,string,Pas;
else sethandles.edit3,string,Lebih;
end elseif status == 2
sethandles.edit2,string,D;
if frek73 sethandles.edit3,string,Kurang;
elseif frek==73 sethandles.edit3,string,Pas;
else sethandles.edit3,string,Lebih;
end elseif status == 3
sethandles.edit2,string,A;
if frek55 sethandles.edit3,string,Kurang;
elseif frek==55 sethandles.edit3,string,Pas;
else sethandles.edit3,string,Lebih;
end elseif status == 4
sethandles.edit2,string,E;
if frek41 sethandles.edit3,string,Kurang;
elseif frek==41 sethandles.edit3,string,Pas;
else sethandles.edit3,string,Lebih;
end end
end
menampilkan teks “Kurang” yang berarti proses tuning belum mencapai nada standar, dengan hal yang sama, jika di kotak edit 3 Status menampilkan teks
“Pas” berarti proses tuning sudah mencapai nada standar, dengan hal yang sama pula, jika di kotak edit 3 Status menampilkan teks “Lebih” maka
proses tuning sudah melebihi nada standar pada gitar bass. Di kotak edit 2 NADA akan menampilkan nada standar dari masing-masing senar yang
dipilih untuk melakukan tuning, jika user memilih senar pertama untuk melakukan tuning, maka di kotak edit 2 akan menampilkan teks “G” yang
berarti nada standar dari senar pertama adalah nada G, dengan hal yang sama, kotak edit 2 akan menampilkan juga nada standar pada senar kedua, senar
ketiga, dan senar keempat, jika user memilih untuk melakukan tuning. Langkah-langkah untuk mendapatkan hasil keluarannya ditunjukkan pada
Gambar 3.14.
b. Pushbutton “CLEAR”
Untuk menjalankan pushbutton ini, maka diisi sintaks berikut:
Gambar 4.12. Sintaks Program untuk Pushbutton “CLEAR” Pushbutton “CLEAR” ini berfungsi untuk membersihkan axes dan edit pada GUI,
jika senar gitar yang dilakukan tuning sudah mencapai nada standar dan ingin melakukan lagi tuning yang baru pada senar yang lain.
axeshandles.axes1 plot0
axeshandles.axes2 plot0
axeshandles.axes3 plot0
sethandles.edit1,string,; sethandles.edit2,string,;
sethandles.edit3,string,; clear all
clc
c. Pushbutton “BERHENTI”
Untuk menjalankan pushbutton ini, maka diisi sintaks berikut:
Gambar 4.13. Sintaks Program untuk Pushbutton “BERHENTI” Pushbutton “BERHENTI” ini berfungsi untuk menghentikan proses tuning.
Berdasarkan sintaks program yang di atas ini, dapat dilihat bahwa terdapat sintaks global. Sintaks ini fungsinya untuk menghentikan proses looping yang terdapat
pada sistem ini. Karena di awal program menggunakan sintaks while untuk melakukan looping pada sistem ini, jadi di akhir program ini harus menggunakan
sintaks global untuk menghentikan looping tersebut.
d. Popupmenu “Pilih Senar”
Popupmenu “Pilih Senar” ini, fungsi hanya untuk memilih senar berapakah yang ingin dilakukan tuning. Sintaks pada popupmenu ini sudah tergabung pada program
look up table yang terdapat pada bagian pushbutton “MULAI” pada poin kedelapan Teks Nada Keluaran. Untuk menjalankan popupmenu ini, dengan cara mengisi
string pada popupmenu tersebut, caranya sebagai berikut:
Klik dua kali pada kotak popupmenu yang terdapat pada GUI.fig.
Gambar 4.14. Popupmenu di GUI.fig
Mengisi string pada popupmenu tersebut di Inspector: uicontrol.
Gambar 4.15. String Popupmenu
global henti henti=1;
4.3. Analisis Hasil Data Pengujian