• Tidak ada hasil yang ditemukan

Penjelasan Sintaks Program secara Real Time

BAB IV: HASIL DAN PEMBAHASAN

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 disp('tuning process..') pause(1); % Variabel Penelitian

frame=512; % Panjang Frame Blocking fs=512; % Frekuensi Sampling

hfs=fs/2;

sg=wavrecord(frame,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=sg/max(abs(sg)); % Frame Blocking x0=y1(1:frame); axes(handles.axes1) plot(x0) xlabel('Data Tercuplik','Fontsize',8) ylabel('Amplitudo','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=hamming(frame); y2=x0.*h; % FFT y3=abs(fft(y2,fs)); y3=y3(1:hfs); axes(handles.axes2) plot(y3) xlabel('Frekuensi (Hz)','Fontsize',8) ylabel('Amplitudo','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=y3(1:2:hfs); % Downsampling y4(hfs)=0; % Zero Padding y5=y3.*y4; % Perkalian Elemen axes(handles.axes3) plot(y5) xlabel('Frekuensi (Hz)','Fontsize',8) ylabel('Amplitudo','Fontsize',8) % Frekuensi Keluaran frek=find(y5==max(y5))-1; set(handles.edit1,'string',frek); set(hObject,'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 = get(handles.popupmenu1,'value'); if status == 1 set(handles.edit2,'string','G'); if frek<98 set(handles.edit3,'string','Kurang'); elseif frek==98 set(handles.edit3,'string','Pas'); else set(handles.edit3,'string','Lebih'); end elseif status == 2 set(handles.edit2,'string','D'); if frek<73 set(handles.edit3,'string','Kurang'); elseif frek==73 set(handles.edit3,'string','Pas'); else set(handles.edit3,'string','Lebih'); end elseif status == 3 set(handles.edit2,'string','A'); if frek<55 set(handles.edit3,'string','Kurang'); elseif frek==55 set(handles.edit3,'string','Pas'); else set(handles.edit3,'string','Lebih'); end elseif status == 4 set(handles.edit2,'string','E'); if frek<41 set(handles.edit3,'string','Kurang'); elseif frek==41 set(handles.edit3,'string','Pas'); else set(handles.edit3,'string','Lebih'); end end end

menampilkan teks “Kurang” yang berarti prosestuning 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.

axes(handles.axes1) plot(0) axes(handles.axes2) plot(0) axes(handles.axes3) plot(0) set(handles.edit1,'string',''); set(handles.edit2,'string',''); set(handles.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;

Dokumen terkait