i SIMULASI KOMPUTER DIGITAL GRAPHIC EQUALIZER TUGAS AKHIR Diajukan Untuk Memenuhi Salah Satu Syarat Memperoleh Gelar Sarjana Teknik Program Studi Teknik Elektro Oleh : T. TIRTA SARI NIM: 065114010 PROGRAM STUDI TEKNIK ELEKTRO FAKULTAS SAINS DAN TEKNLOGI UNIVERSITAS SANATA DHARMA YOGYAKARTA 2010
110
Embed
SIMULASI KOMPUTER DIGITAL GRAPHIC EQUALIZER TUGAS … · audio , video, sistem kontrol dan sebagainya. Aplikasi software dan hardware dari perkembangan ini dapat dikembangkan untuk
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
i
SIMULASI KOMPUTER DIGITAL GRAPHIC EQUALIZER
TUGAS AKHIR
Diajukan Untuk Memenuhi Salah Satu Syarat
Memperoleh Gelar Sarjana Teknik
Program Studi Teknik Elektro
Oleh :
T. TIRTA SARI
NIM: 065114010
PROGRAM STUDI TEKNIK ELEKTRO
FAKULTAS SAINS DAN TEKNLOGI
UNIVERSITAS SANATA DHARMA
YOGYAKARTA
2010
ii
COMPUTER SIMULATION DIGITAL GRAPHIC EQUALIZER
FINAL PROJECT
Presented as Partial Fulfillment of the Requirements
To Obtain the Sarjana Teknik Degree
In Electrical Engineering Study Program
T.TIRTA SARI
NIM: 065114010
ELECTRICAL ENGINEERING STUDY PROGRAM
SCIENCE AND TECHNOLOGY FACULTY
SANATA DHARMA UNIVERSITY
YOGYAKARTA
2010
v
vi
HALAMAN PERSEMBAHAN DAN MOTTO
“Anda takkan tahu apa yang tak dapat Anda lakukan, sampai Anda
mencobanya”
“Hati yang penuh syukur, bukan saja merupakan kebajikan yang
terbesar, melainkan merupakan pula induk segala kebajikan yang lain.
GBU”
Kupersembahkan karya tulis ini kepada :Kupersembahkan karya tulis ini kepada :Kupersembahkan karya tulis ini kepada :Kupersembahkan karya tulis ini kepada :
Tuhan Yesus KristusTuhan Yesus KristusTuhan Yesus KristusTuhan Yesus Kristus terkasihterkasihterkasihterkasih,,,, BapakBapakBapakBapak dan Ibu Tercintadan Ibu Tercintadan Ibu Tercintadan Ibu Tercinta,,,,
Almamaterku Teknik ElektroAlmamaterku Teknik ElektroAlmamaterku Teknik ElektroAlmamaterku Teknik Elektro USDUSDUSDUSD
viii
INTISARI
Perkembangan teknologi telah memenuhi kegiatan dalam kehidupan, diantaranya audio, video, sistem kontrol dan sebagainya. Aplikasi software dan hardware dari perkembangan ini dapat dikembangkan untuk mempermudah dalam pemahaman mahasiswa mempelajari filter digital dengan membuat software audio digital graphic equalizer. Tugas akhir ini berisi program simulasi komputer digital graphic equalizer.
Program simulasi akan mensimulasikan tahap-tahap pembagian filter menjadi lima band, berdasarkan spesifikasi masing – masing filter. Kemudian program akan memproses sinyal suara yang diproses secara filtering. Program simulasi ini akan menampilkan lima buah band pass filter (BPF) dan program akan menghitung koefisien filter dari pemberian sinyal masukan. Perhitungan koefisien FIR filter pada program simulasi ini menggunakan metode Optimal. Koefisien filter antara masing-masing band dapat diubah-ubah sesuai keinginan pengguna.
Program simulasi komputer digital graphic equalizer memiliki kesalahan pemrograman pada proses filtering, sehingga keluarannya tidak sesuai dengan tujuan simulasi. Dengan demikian, tidak dapat dilakukan pengujian lebih lanjut untuk mengamati kinerja digital graphic equalizer. Kata kunci : filter digital, FIR filter, BPF
ix
ABSTRACT
The technology development is ready to fulfill in life activity, among other things are
audio, video, control system, etc. Software and hardware application can be developed to help student to have better understanding on digital filter field with digital graphic equalizer. This final project consists of computer simulation program of digital graphic equalizer.
Simulation program will be simulated step by step with five band filter based on each filter specification. Then, program will process audio signal with filtering process. Simulation program will show with five band pass filter (BPF) and calculate filter coefficient from the input signal. FIR filter coefficient will be calculated to simulate program using optimal method. Each filter coefficient band can be changed according to user setting
Simulation program for computer digital graphic equalizer has programming error at the filtering process, so that the output is not match with the simulation goals. Therefore, further testing can not be done to observe the digital graphic equalizer performance. Keyword: digital filter, FIR filter, BPF, transversal structure
x
KATA PENGANTAR
Puji syukur penulis panjatkan kepada Tuhan yang Maha Esa, karena atas
Anugerah-Nya penulis akhirnya dapat menyelesaikan tugas akhir ini dengan baik
dan lancar.
Dalam proses penulisan tugas akhir ini penulis menyadari bahwa ada begitu
banyak pihak yang telah memberikan perhatian dan bantuan dengan caranya
masing-masing sehingga tugas akhir ini dapat terselesaikan. Oleh karena itu
penulis ingin mengucapkan terima kasih antara lain kepada :
1. Tuhan Yesus atas penyertaan dan bimbingannya.
2. Bapak Yosef Agung Cahyanta, S.T., M.T., selaku Dekan Fakultas Teknik.
3. Bapak Damar Wijaya, S.T., M.T., selaku pembimbing atas bimbingan,
dukungan, saran dan kesabaran bagi penulis dari awal sampai tugas akhir ini
bisa selesai.
4. Bapak A. Bayu Primawan, S.T., M.Eng., dan Dr. Linggo Sumarno., selaku
penguji yang telah bersedia memberikan kritik dan saran.
5. Seluruh dosen teknik elektro atas ilmu yang telah diberikan selama penulis
menimba ilmu di Universitas Sanata Dharma.
6. Bapak dan Mama tercinta atas semangat, doa serta dukungan secara moril
maupun materiil.
7. Abangku, Leo Samodra, S.Farm., Apt. atas dukungan dan doa yang sangat
berguna.
8. Dan seluruh pihak yang telah ambil bagian dalam proses penulisan tugas akhir
ini yang terlalu banyak jika disebutkan satu-persatu.
Agar sinyal masukan dalam domain waktu dapat diubah menjadi spektrum
frekuensi, maka menggunakan Fast Fourier Transform (FFT).
2.4.1. Fourier Transform
Untuk fungsi kontinyu dari satu variable )(tf , transformasi Fourier )( ωjF akan
didefinisikan sebagai [1]:
∫∞
∞−
−== dtetfjFd
d tjωωπω
ω)()(
2/)(
(2.15)
Dan inverse dari transformasi Fourier sebagai
Menentukan masukan program dari spesifikasi tapis yang diinginkan
Menentukan dugaan awal L + 2 frekuensi ekstrim
Menghitung ( )ωε dan L + 2
frekuensi ekstrim terbesar
Menghitung koefisien tanggapan impuls
Frekuensi ekstrim berubah?
tidak
ya
Gambar 2.7. Diagram Alir Sederhana dari Metode Optimal [1].
16
∫∞
∞−
= dfejFtf tjωω)()( (2.16)
Dengan j adalah akar dari -1 dan e adalah bilangan eksponensial
)sin()cos( φφφ jej += (2.17)
2.4.2. Discrete Fourier Transform (DFT)
Data yang ditransformasikan merupakan diskrit dan tidak periodis. DFT dari
deretan )(nTx dengan n adalah jumlah sample dan T adalah interval sampling untuk
menghasilkan deret sample sebanyak N digambarkan sebagai deretan nilai kompleks
)( ΩkX pada kawasan frekuensi, dengan Ω adalah frekuensi harmonik [1]. )( ΩkX pada
umumnya mempunyai komponen real dan imajiner sehingga untuk harmonik ke-k
diberikan oleh rumus
)()()( kjIkRkX += (2.18)
Jadi N data real (dalam kawasan waktu) ditransformasikan menjadi N
data kompleks (dalam kawasan frekuensi). Nilai DFT, )(kX , diberikan oleh rumus
∑−
=
Ω−=1
0
)()(N
n
nTjkenTxkX ;k =0, 1, …., 1−N (2.19)
dengan k adalah jumlah harmonik dari komponen transformasi. Dan inverse dari
transformasi DFT didefinisikan sebagai
∑−
=
Ω=1
0
)(1
)(N
k
nTjkekXN
nTX ;n=0,1, …, 1−N (2.20)
17
2.4.3. Fast Fourier Transform (FFT)
Algoritma yang lebih cepat telah dikembangkan oleh Cooley dan Tukey sekitar
tahun 1965 yang disebut FFT (Fast Fourier Transform). Ketika diterapkan dalam kawasan
waktu, algoritma ditunjukkan sebagai Decimation in Time (DIT) FFT. Decimation
kemudian menunjuk ke pengurangan yang signifikan dalam jumlah perhitungan yang
diterapkan pada kawasan waktu. Pengurangan perhitungan yang terjadi bisa mengenai
NN
N 22 log
2− kali. Dari persamaan 2.12 dapat ditulis sebagai
∑−
=
−=1
0
/21 )(
N
n
NnkjnexkX π ; k = 0, …., 1−N (2.21)
Jika weighting/twiddle factor
NjN eW /2π−= (2.22)
maka persamaan 2.14 menjadi
knN
N
n
nWxkX ∑−
=
=1
0
1 )( ;k = 0, …., 1−N (2.23)
Beberapa relasi NW adalah
K
NNk
N
NN
NjN
WW
WW
eW
−==
=
+
−
)2/(
2/2
/2π
(2.24)
Untuk menggunakan persamaan 2.16 di atas, urutan data dapat dibagi menjadi dua
urutan yang sama panjang, yakni data nomor genap dan data nomor ganjil. Agar urutan
menjadi sama panjang, maka data harus berjumlah genap, jika urutan data ganjil, maka
diperlukan penambahan nol. )(1 kX dapat ditulis dalam 2 DFT yaitu )(11 kX untuk deretan
18
data genap dan )(12 kX untuk deretan data ganjil. N -point DFT diubah menjadi 2 DFT
masing-masing 2/N . Proses berulang sampai )(1 kX terbagi menjadi 2/N DFT masing-
masing 2 point. Persamaan 2.16 dapat ditulis menjadi
∑ ∑
∑∑
−
=
−
=+
−
=
++
−
=
+=
+=
12/
0
12/
0
212
22
12/
0
)12(12
12/
0
221
sequence oddsequenceeven
)(
N
n
N
n
nkNn
kN
nkNn
N
n
knNn
N
n
nkNn
WxWWx
WxWxkX44 344 2143421
; 1,.....,0 −= Nk (2.25)
Menggunakan persamaan 2.17, nkN
nkN WW 2/2 = , sehingga persamaan 2.18 di atas menjadi
∑ ∑−
=
−=
=++=
12/
0
12/
02/122/2)(
N
n
Nn
n
nkNn
kN
nkNn WxWWxkX ; 1,...,0 −= Nk (2.26)
Persamaan 2.19 dapat disederhanakan menjadi
)()()( 12111 kXWkXkX kN+= ; 1,...,0 −= Nk (2.27)
19
BAB III
PERANCANGAN PROGRAM SIMULASI UNTUK
DIGITAL GRAPHIC EQUALIZER
Bab ini akan membahas perancangan dan pembuatan diagram alir software simulasi
dari penelitian yang akan dilakukan. Software simulasi ini dibuat menggunakan program
aplikasi pada MATLAB®.
3.1. Layout Program
Layout program merupakan rancangan secara visual untuk implementasi program
simulasi untuk Digital Graphic Equalizer dari penelitian yang dibuat. Layout program
ditumjukkan pada Gambar 3.1. Layout pada Gambar 3.1 menggunakan beberapa
komponen visual yang disediakan oleh program aplikasi MATLAB ® untuk menampilkan
proses simulasi.
Komponen-komponen visual tersebut adalah :
a. Uipanel
Uipanel digunakan untuk sebagai tempat meletakkan beberapa komponen,
diantaranya yaitu axis, static text, dan push button.
b. Menu Bar
Menu bar digunakan sebagai tempat untuk menampilkan toolbar. Pada Gambar 3.10
terdapat beberapa toolbar, yaitu file, equalizing, dan help.
c. Figure
Figure adalah objek yang digunakan sebagai tempat untuk merancang program
simulasi dan dapat diisi dengan komponen. Figure disebut sebagai layout area.
d. Static text
Static text adalah area yang digunakan sebagai tempat untuk menampilkan text
informasi. Text informasi pada static text tidak dapat diubah oleh pengguna. Pada program
simulasi ini, static text digunakan untuk menampilkan hasil keluaran dari proses yang
dilakukan oleh pengguna.
20
e. Axes
Axes digunakan untuk menampilkan grafik atau kurva. Pada program simulasi ini
axes digunakan sebagai tempat untuk menampilkan masukan sinyal suara, menampilkan
kurva tanggapan frekuensi dari masing-masing band pass filter menjadi lima band, dan
menampilkan grafik sinyal suara yang telah mengalami proses filter untuk Digital Graphic
Equalizer.
f. Push button
Push button merupakan tombol yang digunakan untuk mengeksekusi sebuah
perintah. Pada Gambar 3.10 terdapat beberapa tombol, yaitu
1. Tombol spec in dan spec out digunakan untuk mengubah sinyal suara dari time
domain menjadi frequency domain.
2. Tombol grid digunakan untuk menampilkan grid pada axes.
3. Tombol ’+’ digunakan untuk membesar (zoom) daerah atau wilayah tanggapan
frekuensi pada point yang diinginkan.
4. Tombol ’-’ digunakan untuk mengembalikan daerah atau wilayah ke ukuran asal
setelah diperbesar.
5. Tombol cursor digunakan untuk menunjuk daerah atau wilayah yang diinginkan.
6. Tombol move digunakan untuk menggeser daerah atau wilayah pada gambar.
7. Tombol legend digunakan untuk mengetahui apabila pada satu grafik terdapat
bermacam-macam line plot.
Layout program tersusun atas 2 bagian utama yaitu:
1. Bagian Input
Bagian input berisi beberapa komponen utama yang diperlukan dalam
perancangan ini, yang terdiri dari dua buah menu bar, dua buah static text, dua
push button, dan lima buah slider. Pada menu bar terdiri dari file, dan help. File
digunakan untuk membantu pengguna, dengan bantuan fungsi ini pengguna
dapat membuka atau mencari data yang telah disimpan pada file yang
berekstensi *.wav, dapat juga untuk menyimpan data dan menutup atau
mengakhiri program. Menu yang lain yaitu help berfungsi untuk membantu
pengguna dalam menggunakan simulasi digital graphic equalizer ini, help
terdiri dari metode optimal berfungsi agar pengguna mengetahui tentang
metode optimal, cara penggunaan program dapat membantu pengguna untuk
menggunakan program simulasi ini sehingga saat pengguna mengalami
21
kesulitan bantuan ini dapat digunakan, pembuat program sebagai informasi
tentang pembuat simulasi, dan Digital Graphic Equalizer Program.
Pada bagian input ini juga terdapat static text, ada dua static text pada bagian
input yaitu static text untuk menampilkan file suara yang berekstensi *.wav dan
menampilkan panjang data file suara yang diberikan. Terdapat dua push button
yaitu play input dan record. Tombol play input digunakan pengguna untuk
meainkan data file masukan dan record dapat digunakan pengguna untuk
merekam suara. Pada bagian input juga terdapat lima slider yang dapat
digunakan pengguna untuk mengubah-ubah data dan nilai dari band pass filter
dari karakteristik filter. Pada bagian input ini juga terdapat lima buah push
button, slider, dan lima buah static text. Lima buah slider ini digunakan untuk
memberikan masukan dan nilai diberikan pada masukan akan tertampilpada
static text, untuk masing-masing slider. Sedangkan lima buah push button
memiliki fungsinya masing-masing, untuk push button dengan nama Band 1
akan menampilkan karakteristik band pass filter untuk band 1. Hal yang sama
terdapat juga pada empat static text dengan nama Band 2, Band 3, Band 4, dan
Band 5, yang bila ditekan akan menampilkan karakteristik masing-masing band
pass filter.
2. Bagian Proses
Bagian proses berisi satu buah menu bar. Pada bagian menu bar terdiri dari tiga
bagian yaitu proses filtering, filter output dan reset. Pada proses filtering dapat
digunakan oleh pengguna untuk menjalankan program agar data masukan dapat
diproses menjadi lima band. Sedangkan proses filter output dapat dilakukan
setelah proses pertama dijalankan, karena proses ini berfungsi untuk merubah
domain frekuensi menjadi data dalam domain waktu. Bagian proses terakhir
yaitu bagian reset, bagian berfungsi apabila pengguna akan membuat tampilan
menjadi seperti semula dalam yaitu membuat menjadi seperti tampilan awal
program.
Terdapat juga proses spec in dan spec out pada bagian spectrum input dan
spectrum output. Proses ini digunakan untuk megubah sinyal suara menjadi
spectrum frekuensi. Untuk tombol spec in digunakan untuk mengubah sinyal
suara masukan dalam domain waktu menjadi sinyal dalam spektrum frekuensi.
22
Sedangkan, tombol spec out digunakan untuk mengubah sinyal suara keluaran
dalam domain waktu menjadi sinyal dalam spektrum frekuensi.
3. Hasil Output
Bagian keluaran terdiri dari tiga bagian utama yaitu, bagian pertama output
sinyal suara awal, disini merupakan keluaran grafik sinyal suara apabila
mendapat masukkan dari dalam ataupun sinyal suara yang direkam oleh
pengguna. Bagian kedua merupakan output tanggapan frekuensi yang terdiri
dari lima band berupa sehingga pada bagian ini akan menunjukkan perbedaan
dari masing – masing filter berdasarkan pembagian band. Bagian ketiga
merupakan output sinyal suara yang telah mengalami proses filter.
4. Tampilan Bantuan
2 1
1
1
3 3
3
3
3 3
3
4
4
2
2 4
4
Menu Bar Axes Uipanel Figure
Push button Static Text
Gambar 3.1. Layout Program
23
Tampilan bantuan ini berisi enam buah push button yang terdiri dari tombol
grid berfungsi untuk menampilkan grid (memberikan garis) pada axes, move
berfungsi untuk menggeser/menggerakan daerah atau wilayah pada gambar,
cursor untuk menunjuk daerah atau wilayah yang diinginkan, tanda ’+’
berfungsi untuk membesar (zoom) daerah atau wilayah tanggapan frekuensi
pada point yang diinginkan, dan tanda ’-’ berfungsi untuk untuk
mengembalikan daerah atau wilayah ke ukuran asal setelah diperbesar.
Terakhir terdapat tombol legend yang berfungsi untuk menunjukkan bentuk
kurva yang berbeda yang tertampil pada axes. Enam buah push button ini
berfungsi untuk mendukung penampilan pada layout program digital graphic
equalizer. Apabila terjadi kesalahan pada hasil output maka pesan kesalahan
akan muncul yang sering disebut message box. Message box ini akan muncul
saat pengguna kurang dalam memberikan masukkan, dan apabila pengguna
salah memasukan nilai yang seharusnya..
3.2. Algoritma Program Utama
Algoritma perancangan secara umum untuk Simulasi Komputer Digital Graphic
Equalizer dapat dilihat pada Gambar 3.2.
Seperti terlihat pada Gambar 3.2, pengguna terlebih dahulu memberi input berupa
voice record (suara) yang akan diuji dan diambil sample sinyal suara. Pemberian input
tersebut dapat dilakukan dengan dua cara, yaitu cara pertama dilakukan dengan langsung
memanggil pada MATLAB, dan cara kedua dengan memberi input suara dari luar. Setelah
memperoleh sample sinyal suara, dilakukan pembagian band terhadap sinyal suara
menjadi lima filter dengan band yang berbeda. Terdapat lima band dengan pembagian
frekuensi cutoff yang berbeda – beda. Berdasarkan pembagian band yang telah dilakukan
akan dihitung koefisien dari lima filter. Perhitungan koefisien dari masing-masing filter
menggunakan FIR filter dengan metode optimal, dan hasil dari perhitungan koefisien
masing – masing filter menggunakan program software MATLAB. Kemudian akan diolah
menggunakan program yang akan dirancang. Hasil akhir dari perancangan ini akan
menampilkan output sinyal suara yang belum mengalami proses filter, output sinyal suara
24
yang telah mengalami proses filter, dan menampilkan output dari karakteristik filter untuk
lima filter dengan lima band yang berbeda-beda pada Digital Graphic Equalizer.
3.3. Diagram Alir Utama Program Simulasi untuk Digital Graphic
Equalizer
Perancangan program simulasi untuk Digital Graphic Equalizer ini terdiri dari
beberapa proses:
1. Proses pemberian input.
2. Proses pembagian band menjadi lima filter dan menampilkan grafik tanggapan
frekuensi.
3. Menghitung koefisien dari lima filter sesuai band masing – masing filter.
4. Proses verifikasi hasil.
5. Menampilkan output yang telah melalui proses filter, dan menampilkan karakteristik
filter sesuai dengan masing – masing band.
3.4. Proses Pemberian Input
Input dari pengguna berupa sinyal suara yang dapat dipanggil dari MATLAB® dan
dapat dari luar dengan menggunakan bantuan headphone atau direkam, input yang
diberikan masih dalam domain waktu dan harus diubah terlebih dahulu kedalam domain
frekuensi. Hal ini dilakukan agar dapat mengetahui sinyal suara yang diberikan berada
direntang frekuensi berapa, yaitu frekuensi rendah atau frekuensi tinggi serta terletak pada
rentang frekuensi yang diharapkan. Data untuk input adalah file yang berekstensi *.wav.
Proses pemberian input ditunjukkan pada Gambar 3.3.
Input yang berupa sinyal suara, akan diproses pada MATLAB untuk mendapatkan
frekuensi sample (fs) yang besarnya dua kali frekuensi maksimal (fm) sinyal tersebut.
Secara matematis dapat ditunjukkan dalam persamaan 3.1, yaitu
2 (3.1)
25
Input yang berasal dari dalam, merupakan pengambilan file yang telah disimpan,
dalam hal ini karena menggunakan program MATLAB maka file yang tersimpan telah
dalam ekstensi *.wav. Untuk pemberian input apabila dilakukan dari luar yaitu direkam,
maka pengguna melakukan pengambilan suara dengan menggunakan bantuan headphone
atau dapat juga secara langsung. Setelah pengguna merekam suaranya maka, akan
ditampilkan sinyal suara dari pengguna.
Dalam pemberian data input selain pengguna memberikan masukkan berupa sinyal
suara, terdapat juga variabel lain yang harus diberikan oleh pengguna saat menjalankan
program simulasi ini. Variabel lain yang harus diberikan oleh pengguna berupa jumlah
data masukkan dan jumlah data keluaran, dalam hal ini jumlah data yang diberikan berupa
bilangan radix 2 atau integer power of 2. Pemberian data sebesar radix 2 atau integer
power of 2, ini dikarenakan sebelum program melalui proses filtering terlebih dahulu
program melalui proses mengubah sinyal masukkan menjadi spectrum dalam frekuensi
sehingga dalam hal ini data yang diberikan (N-point) adalah integer power of 2. Untuk
mengubah sinyal suara masukkan menggunakan perhitungan FFT (The Fast Fourier
Transform), FFT N memberikan integer power of 2, bahwa N = 2d dengan d adalah sebgai
integer.
3.4.1. Subrutin Proses Pemberian Input dari Dalam dan Pengambilan
Sample Sinyal Suara
Gambar 3.4 menunjukkan proses pemberian input dari dalam, proses ini mengabil
input yang telah tersedia dalam file yang berekstensi *.wav. Sinyal suara ini telah diproses
dan diambil sampling suaranya. Proses pengambilan sampling yang dapat dihitung dengan
menggunakan persamaan 3.1. Setelah mendapatkan sample sinyal suara, maka akan
diperoleh grafik dalam domain frekuensi. Kemudian akan ditampilkan dalam graphic
equalizer yang telah membentuk grafik dengan domain frekuensi. Untuk pemberian input,
selain dari dalam apabila pengguna ingin mencoba melakukan proses filter terhadap suara
pengguna, maka pengguna dapat memberi input dari luar prosesnya dapat dilakukan seperti
yang ditunjukkan pada Gambar 3.5.
26
Menampilkan output sinyal keluaran yang telah mengalami proses filter berupa sinyal
suara dalam domain waktu
Memberi input berupa sinyal suara dan mengambil sample
sinyal suara dari terminal input
Menampilkan karakteristik filter dalam lima band pada Digital Graphic Equalizer
Membagi sinyal menjadi lima band dan melakukan perhitungan koefisien filter untuk lima filter dengan lima band yang berbeda, berdasarkan domain frekuensi
Mengolah sinyal suara masukan kedalam lima filter dengan lima
band yang berbeda
Mengubah sinyal suara masukan menjadi spectrum frekuensi secara FFT
Menampilkan output sinyal suara keluaran dalam spectrum frekuensi secara FFT
Gambar 3.2. Algoritma Diagram Alir Utama Program Simulasi Digital Graphic Equalizer
27
Gambar 3.4. Diagram Alir Proses Pemberian Input dari Dalam.
Mulai
Tampilkan grafik sinyal suara dalam frequency domain
Selesai
Mengubah sinyal suara dalam domain frekuensi
Sampling sinyal dengan fs = 2 x fm
Ambil file berektensi *wav?
ya
tidak
Gambar 3.3. Diagram Alir Proses Pemberian Input dari Dalam dan dari Luar .
Mulai
Selesai
Pilih masukkan?
Input dari dalam
Input dari luar
ya
tidak
28
3.4.2 Subrutin Proses Pemberian Input dari Luar dan Pengambilan
Sample Sinyal Suara
Gambar 3.5 menunjukkan proses pemberian input dari luar, proses ini dilakukan
dengan mengambil suara pengguna dari luar dengan bantuan headphone. Setelah mendapat
masukkan sinyal akan ditampilkan pada output graphic equalizer, tetapi grafik sinyal suara
masih dalam domain waktu sehingga harus diubah menjad grafik berdasarkan domain
frekuensi. Melalui proses ini akan diambil sample sinyal suara, proses dilakukan sama
seperti saat pengambilan sample dengan input dari dalam. Pengambilan sample ini yang
berasal dari input luar ini, dilakukan untuk mengubah sinyal suara dalam domain waktu
menjadi sinyal suara dalam domain frekuensi. Sampling sinyal suara dilakukan dengan
menggunakan persamaan 3.1.
Sinyal suara yang telah mengalami proses sampling kemudian akan ditampilkan
dalam graphic equalizer, sinyal suara ini telah diproses dan dalam bentuk grafik domain
frekuensi. Pengguna dapat menyimpan hasil rekaman suara (audio) dalam file yang
berekstensi *.wav, tetapi pengguna juga dapat menghapus rekaman suara apabila pengguna
tidak ingin menyimpan file. Apabila pengguna tidak memasukkan suara, atau tidak
memberi input dari luar maka pengguna dapat mengambil sample sinyal suara dari dalam.
3.5 Proses Pembagian Filter menjadi Lima Band dan Menghitung
Koefisien Masing – Masing Filter
Gambar 3.6 menunjukan diagram alir untuk menampilkan filter menjadi lima band
secara umum. Sedangkan untuk pembagian filter menjadi lima band dan menampilkannya
dapat dilihat pada Gambar 3.7 proses pembagian menjadi lima band dilakukan dengan
input berupa sample sinyal suara yang telah diperoleh, kemudian akan menampilkan hasil
berupa lima filter sesuai dengan band masing-masing berdasarkan frekuensi cutoff yang
telah ditentukan.
29
Gambar 3.5. Diagram Alir Proses Pemberian Input dari Luar.
Mulai
tidak
ya
Selesai
Masukan suara?
Tampilkan sinyal suara, masih dalam domain waktu
Mengambil sample dari sinyal suara, dengan syarat
fs = 2 x fm
Tampilkan sample suara yang telah dalam domain
frekuensi
Input = sinyal suara
Simpan hasil?
Simpan (save) hasil rekaman suara, dalam file
berekstensi *.wav
Rekam suara lagi
ya
tidak
30
Gambar 3.6. Diagram Alir Menampilkan Filter menjadi Lima Band
Mulai
Sample sinyal suara
Selesai
Membagi sinyal jadi lima band
Mengolah sinyal dengan filter sesuai band masing -
masing
Menampilkan hasil olahan filter
31
Gambar 3.7. Diagram Alir Proses Pembagian Filter menjadi Lima Band
Mulai
Ambil sample band
Selesai
ya
ya
ya
ya
ya
tidak
tidak
tidak
tidak
Band 1,0.5-4.5 kHz?
Band 2, 4.5-8.5 kHz?
Filter 1
Filter 2
Filter 3
Filter 4
Filter 5
Tampilkan filter sesuai dengan band masing-masing
tidak
Band 3, 8.5-12.5 kHz?
Band 4, 12.5-16.5 kHz?
Band 5, 16.5-20.5 kHz?
32
3.5.1. Proses Menghitung Koefisien dari Lima Filter
Diagram alir proses perhitungan koefisien filter dengan menggunakan metode
optimal untuk masing-masing filter ditunjukkan pada Gambar 3.8. Masukan yang
diperlukan dalam fungsi ini adalah passband edge frequency 1 (fp1), passband edge
[6] Krauss Thomas P., Shure Loren dan Little John N., 1994, Signal Processing
Toolbox for use with MATLAB®, The MathWorks.
[7] http://www.Appsig.com/papers.html, diakses 31 Agustus 2009.
[8] Nathanael, Hugo.Y., 2007, “Program Simulasi untuk Realisasi Struktur Tapis
Finite Impulse Response”. Skipsi, Jurusan Teknik Elektro Fakultas Sains dan
Teknologi Universitas Sanata Dharma.
[9] Ricardo A. Losada, Januari 12,2004 practical FIR filter design in MATLAB:
the Math Works.Inc., 3 Apple Hill Dr.Natick, MA 01760,USA.
LAMPIRAN
L 1
A
LISTING PROGRAM
L 2
function varargout = Equalizer(varargin) % EQUALIZER M-file for Equalizer.fig % EQUALIZER, by itself, creates a new EQUALIZER or raises the existing % singleton*. % H = EQUALIZER returns the handle to a new EQUALIZER or the handle to % the existing singleton*. % EQUALIZER('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in EQUALIZER.M with the given input arguments. % EQUALIZER('Property','Value',...) creates a new EQUALIZER or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before Equalizer_OpeningFunction gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to Equalizer_OpeningFcn via varargin. % *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one % instance to run (singleton)". % See also: GUIDE, GUIDATA, GUIHANDLES % Copyright 2002-2003 The MathWorks, Inc. % Edit the above text to modify the response to help Equalizer % Last Modified by GUIDE v2.5 18-Nov-2010 16:00:00 % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @Equalizer_OpeningFcn, ... 'gui_OutputFcn', @Equalizer_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin1) gui_State.gui_Callback = str2func(varargin1); end if nargout [varargout1:nargout] = gui_mainfcn(gui_State, varargin:); else gui_mainfcn(gui_State, varargin:); end % End initialization code - DO NOT EDIT % --- Executes just before Equalizer is made visible. function Equalizer_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to Equalizer (see VARARGIN) % Choose default command line output for Equalizer handles.output = hObject; % Update handles structure guidata(hObject, handles); % UIWAIT makes Equalizer wait for user response (see UIRESUME) % uiwait(handles.figure1); % --- Outputs from this function are returned to the command line. function varargout = Equalizer_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT);
L 3
% hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structure varargout1 = handles.output; % --- Executes on selection change in datain. function datain_Callback(hObject, eventdata, handles) % hObject handle to datain (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: contents = get(hObject,'String') returns datain contents as cell array % contentsget(hObject,'Value') returns selected item from datain % --- Executes during object creation, after setting all properties. function datain_CreateFcn(hObject, eventdata, handles) % hObject handle to datain (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: listbox controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end % --- Executes on button press in gridon. function gridon_Callback(hObject, eventdata, handles) % hObject handle to gridon (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) grid minor % --- Executes on button press in move. function move_Callback(hObject, eventdata, handles) % hObject handle to move (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) pan % --- Executes on button press in cursor. function cursor_Callback(hObject, eventdata, handles) % hObject handle to cursor (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) datacursormode; % --- Executes on button press in zoomin. function zoomin_Callback(hObject, eventdata, handles) % hObject handle to zoomin (see GCBO)
L 4
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) zoom on set(handles.move,'enable','on'); % --- Executes on button press in zoomout. function zoomout_Callback(hObject, eventdata, handles) % hObject handle to zoomout (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) zoom out pan off set(handles.move,'enable','off'); % -------------------------------------------------------------------- function Open_playlist_Callback(hObject, eventdata, handles) % hObject handle to Open_playlist (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) %Mengambil file playlist [nama_file, nama_path]=uigetfile('*.wav','File WAV (*.wav)',... 'Open File Input'); %baca data masukan if ~isequal(nama_file, 0) handles.data = wavread(fullfile(nama_path,nama_file)); guidata(hObject,handles); else return; end %tampilkan nama file masukan dan jumlah masukan set(handles.datain,'string',nama_file); set(handles.Play_Input,'enable','on'); guidata(hObject,handles); % -------------------------------------------------------------------- function Save_Callback(hObject, eventdata, handles) % hObject handle to Save (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) [file,path] = uiputfile('*.wav','Save file'); if ~isequal(file, 0) wavwrite(handles.data,file); guidata(hObject,handles); else return; end % -------------------------------------------------------------------- function Exit_Callback(hObject, eventdata, handles) % hObject handle to Exit (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB
L 5
% handles structure with handles and user data (see GUIDATA) keluar=questdlg(['Exit Program?'],['Close Aplication'], 'Yes','No','Yes'); if strcmp(keluar,'No') return; end delete(handles.figure1) % -------------------------------------------------------------------- function File_Callback(hObject, eventdata, handles) % hObject handle to File (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % -------------------------------------------------------------------- function Filtering_Callback(hObject, eventdata, handles) % hObject handle to Filtering (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) set(handles.Filtering,'enable','on'); set(handles.uipanel4,'visible','on'); datain=get(handles.datain,'string'); datas = handles.data; z = handles.z; %data yang diambil nilai_band1=round(get(handles.slider14,'value')); nilai_band2=round(get(handles.slider15,'value')); nilai_band3=round(get(handles.slider16,'value')); nilai_band4=round(get(handles.slider17,'value')); nilai_band5=round(get(handles.slider18,'value')); %pemeriksaan masukan [datvar] = cekin(datas); %pengecekan data input if datvar==1; handles.nilai_band1 = nilai_band1; handles.nilai_band2 = nilai_band2; handles.nilai_band3 = nilai_band3; handles.nilai_band4 = nilai_band4; handles.nilai_band5 = nilai_band5; %input tetap tw = 400; pr = 0.01; sa = 60; fs = 44000; kebit = 32; inbit = 32; outbit = 32; %pemrosesan data masukan data = handles.data'; b_atas = handles.data_awal; b_bawah = handles.data_akhir; dataq = des2bin(data,inbit); %data awal masukan
L 6
uk=size(dataq); x1=dataq(b_atas:b_bawah); %data yang diberikan pengguna %nilai input band 1 fc1 = 500; fc2 = 4500; sa1 = sa - handles.nilai_band1; %memanggil fungsi optimal methode hn1 = optimalmethod1(fc1,fc2,tw,pr,sa1,fs); %menampilkan jumlah kofisien filter N1 = length(hn1); %set(handles.text20,'string',N1); %jenis struktur tapisyang digunakan transversal structure hs1=hn1; hnq1=des2bin(hs1,kebit); [yq1, y1] = transIn(hnq1,x1,outbit); yq1 = yq1; handles.yq1 = yq1; hns1=hnq1; %nilai input band 2 fc1_2 = 4500; fc2_2 = 8500; sa2 = sa - handles.nilai_band2; %memanggil fungsi optimal methode hn1_2 = optimalmethod2(fc1_2,fc2_2,tw,pr,sa2,fs); %menampilkan jumlah kofisien filter N2 = length(hn1_2); %set(handles.text21,'string',N2); %jenis struktur tapisyang digunakan transversal structure hs1_2=hn1_2; hnq1_2=des2bin(hs1_2,kebit); [yq1_2, y1_2] = transIn(hnq1_2,x1,outbit); yq1_2 = yq1_2; handles.yq1_2 = yq1_2; hns1_2=hnq1_2; %nilai input band 3 fc1_3 = 8500; fc2_3 = 12500; sa3 = sa - handles.nilai_band3; %memanggil fungsi optimal methode hn1_3 = optimalmethod3(fc1_3,fc2_3,tw,pr,sa3,fs); %menampilkan jumlah kofisien filter N3 = length(hn1_3); %set(handles.text22,'string',N3); %jenis struktur tapisyang digunakan transversal structure hs1_3=hn1_3; hnq1_3=des2bin(hs1_3,kebit); [yq1_3, y1_3] = transIn(hnq1_3,x1,outbit); yq1_3 = yq1_3; handles.yq1_3 = yq1_3; hns1_3=hnq1_3;
mag1_5 = 20*log10(abs(amp1_5)); mag1_5 = mag1_5 - handles.nilai_band5; handles.amp1_5 = amp1_5; %%menampilkan grafik tanggapan frekuensi dengan 5 bandpass filter %dan menampilkan jumlah koefisien dari masing-masing band pass axes(handles.grafik3) set(handles.text20,'string',N1); set(handles.text21,'string',N2); set(handles.text22,'string',N3); set(handles.text23,'string',N4); set(handles.text24,'string',N5); plot (f0_1,mag1_1,'blue',f0_2,mag1_2,'green',f0_3,mag1_3,'red',f0_4,mag1_4,'cyan',f0_5,mag1_5,'magenta') xlabel('Frequency(Hz)') ylabel('Magnitude Response (dB)') legend('filter 1','filter 2','filter 3','filter 4','filter 5','location','northeast'); guidata(hObject,handles); %meng-non-enable-kan tombol save set(handles.Save,'enable','off'); else return; end %end % -------------------------------------------------------------------- function Equalizing_Callback(hObject, eventdata, handles) % hObject handle to Equalizing (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % -------------------------------------------------------------------- function Optimal_Callback(hObject, eventdata, handles) % hObject handle to Optimal (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) OptimalHelp; % -------------------------------------------------------------------- function Program_DGE_Callback(hObject, eventdata, handles) % hObject handle to Program_DGE (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) ProgHelp; % -------------------------------------------------------------------- function Pembuat_Callback(hObject, eventdata, handles) % hObject handle to Pembuat (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) pembuatsari % -------------------------------------------------------------------- function Help_Callback(hObject, eventdata, handles) % hObject handle to Help (see GCBO)
L 9
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % -------------------------------------------------------------------- % --- Executes when figure1 is resized. function figure1_ResizeFcn(hObject, eventdata, handles) % hObject handle to figure1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) %-------------------------------------------------------------------------- %-------------------------------------------------------------------------- function bineq = des2bin(des,bit) %des2bin merupakan fungsi untuk mengubah suatu nilai %desimal menjadi biner equivalent sesuai jumlah bit %yang diinginkan. m = 1; %mengubah semua nilai desimal menjadi positif d = abs(des); %mengubah nilai integer menjadi nilai fraksional while fix(d) > 0 d = abs(des)/(10^m); m = m + 1; end %menghitung nilai desimal equivalent bineq = 0; for n = 1 : bit-1 bineq = fix(d*2)/(2^n) + bineq; d = (d*2) - fix(d*2); end %mengembalikan tanda(sign)& besar tiap nilai desimal bineq = sign(des) .* bineq * 10^(m-1); function [yq, y] = transIn(hq,xq,outbit) %transIn merupakan fungsi untuk memasukan %suatu data input ke dalam transversal structure N = length(hq); m = length(xq); %hitung panjang keluaran tapis r = N + m - 1; %perhitungan nilai keluaran tapis y=zeros(1,r); yq=zeros(1,r); hbar = waitbar(0,'Please wait...'); for p = 1 : r for k = 1 : N i = p - k + 1; if i <= 0 | i > m a = 0; else a = hq(k)*xq(i); end y(p) = y(p) + a; aq = des2bin(a,outbit); yq(p) = yq(p) + aq; end
L 10
waitbar(p/r,hbar) end close(hbar) %-------------------------------------------------------------------------- %fungsi untuk band 1 dengan frekuensi cut-off1 = 500 Hz dan %frekuensi cut-off2 = 5000 Hz %data yang diambil function hn = optimalmethod1(fc1, fc2, tw, pr, sa1, fs) [ap,as]=konversidB(pr,sa1); f1 = fc1-tw; f2 = fc1; f3 = fc2; f4 = fc2+tw; F = [f1 f2 f3 f4]; M = [0 1 0 ]; dev = [as ap as]; [N,fo,ao,W] = firpmord(F,M,dev,fs); hn = firpm(N,fo,ao,W); %fungsi untuk band 2 dengan frekuensi cut-off1 = 5000 Hz dan %frekuensi cut-off2 = 9000 Hz function hn_2 = optimalmethod2(fc1_2, fc2_2, tw, pr, sa2, fs); [ap,as]=konversidB(pr,sa2); f1_2 = fc1_2-tw; f2_2 = fc1_2; f3_2 = fc2_2; f4_2 = fc2_2+tw; F_2 = [f1_2 f2_2 f3_2 f4_2]; M = [0 1 0 ]; dev = [as ap as]; [N_2,fo_2,ao_2,W_2] = firpmord(F_2,M,dev,fs); hn_2 = firpm(N_2,fo_2,ao_2,W_2); %fungsi untuk band 3 dengan frekuensi cut-off1 = 9000 Hz dan %frekuensi cut-off3 13000 Hz; function hn_3 = optimalmethod3(fc1_3, fc2_3, tw, pr, sa3, fs); [ap,as]=konversidB(pr,sa3); f1_3 = fc1_3-tw; f2_3 = fc1_3; f3_3 = fc2_3; f4_3 = fc2_3+tw; F_3 = [f1_3 f2_3 f3_3 f4_3]; M = [0 1 0 ]; dev = [as ap as]; [N_3,fo_3,ao_3,W_3] = firpmord(F_3,M,dev,fs); hn_3 = firpm(N_3,fo_3,ao_3,W_3); %fungsi untuk band 4 dengan frekuensi cut-off1 = 13000 Hz dan %frekuensi cut-off2 = 17000; function hn_4 = optimalmethod4(fc1_4, fc2_4, tw, pr, sa4, fs);
L 11
[ap,as]=konversidB(pr,sa4); f1_4 = fc1_4-tw; f2_4 = fc1_4; f3_4 = fc2_4; f4_4 = fc2_4+tw; F_4 = [f1_4 f2_4 f3_4 f4_4]; M = [0 1 0 ]; dev = [as ap as]; [N_4,fo_4,ao_4,W_4] = firpmord(F_4,M,dev,fs); hn_4 = firpm(N_4,fo_4,ao_4,W_4); %fungsi untuk band 5 dengan frekuensi cut-off1 = 17000 Hz dan %frekuensi cut-off2 = 21000;; function hn_5 = optimalmethod5(fc1_5, fc2_5, tw, pr, sa5, fs); [ap,as]=konversidB(pr,sa5); f1_5 = fc1_5-tw; f2_5 = fc1_5; f3_5 = fc2_5; f4_5 = fc2_5+tw; F_5 = [f1_5 f2_5 f3_5 f4_5]; M = [0 1 0 ]; dev = [as ap as]; [N_5,fo_5,ao_5,W_5] = firpmord(F_5,M,dev,fs); hn_5 = firpm(N_5,fo_5,ao_5,W_5); function [Ap, As] = konversidB(a,b) Ap =((10^(a/20))-1)/((10^(a/20))+1); As = 10^(b/(-20)); %-------------------------------------------------------------------------- %-------------------------------------------------------------------------- function [datvar] = cekin(datas) %cek masukkan if datas==0 uiwait(errordlg('Insert name of input file','Not Enough Input...','modal')); datvar=0; else datvar=1; end %-------------------------------------------------------------------------- % --- Executes on slider movement. function slider14_Callback(hObject, eventdata, handles) % hObject handle to slider14 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'Value') returns position of slider % get(hObject,'Min') and get(hObject,'Max') to determine range of slider nilai_band1=round(get(handles.slider14,'value')); if isnan(nilai_band1) | nilai_band1>=44 errordlg('Band 1 tidak dapat lebih dari 43','Warning','modal')
L 12
end handles.nilai_band1 = nilai_band1; guidata(hObject,handles); set(handles.text27,'string',handles.nilai_band1); % --- Executes during object creation, after setting all properties. function slider14_CreateFcn(hObject, eventdata, handles) % hObject handle to slider14 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: slider controls usually have a light gray background, change % 'usewhitebg' to 0 to use default. See ISPC and COMPUTER. usewhitebg = 1; if usewhitebg set(hObject,'BackgroundColor',[.9 .9 .9]); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end % --- Executes on slider movement. function slider15_Callback(hObject, eventdata, handles) % hObject handle to slider15 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'Value') returns position of slider % get(hObject,'Min') and get(hObject,'Max') to determine range of slider nilai_band2=round(get(handles.slider15,'value')); %if isnan(nilai_band2) | nilai_band2<=0 % errordlg('Anda harus mengisikan nilai pada Band2','Bad Input','modal') %end handles.nilai_band2 = nilai_band2; guidata(hObject,handles); set(handles.text28,'string',handles.nilai_band2); % --- Executes during object creation, after setting all properties. function slider15_CreateFcn(hObject, eventdata, handles) % hObject handle to slider15 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: slider controls usually have a light gray background, change % 'usewhitebg' to 0 to use default. See ISPC and COMPUTER. usewhitebg = 1; if usewhitebg set(hObject,'BackgroundColor',[.9 .9 .9]); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end % --- Executes on slider movement. function slider16_Callback(hObject, eventdata, handles)
L 13
% hObject handle to slider16 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'Value') returns position of slider % get(hObject,'Min') and get(hObject,'Max') to determine range of slider nilai_band3=round(get(handles.slider16,'value')); %if isnan(nilai_band3) | nilai_band3<=0 % errordlg('Anda harus mengisikan nilai pada Band3','Bad Input','modal') %end handles.nilai_band3 = nilai_band3; guidata(hObject,handles); set(handles.text29,'string',handles.nilai_band3); % --- Executes during object creation, after setting all properties. function slider16_CreateFcn(hObject, eventdata, handles) % hObject handle to slider16 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: slider controls usually have a light gray background, change % 'usewhitebg' to 0 to use default. See ISPC and COMPUTER. usewhitebg = 1; if usewhitebg set(hObject,'BackgroundColor',[.9 .9 .9]); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end % --- Executes on slider movement. function slider17_Callback(hObject, eventdata, handles) % hObject handle to slider17 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'Value') returns position of slider % get(hObject,'Min') and get(hObject,'Max') to determine range of slider nilai_band4=round(get(handles.slider17,'value')); %if isnan(nilai_band4) | nilai_band4<=0 % errordlg('Anda harus mengisikan nilai pada Band4','Bad Input','modal') %end handles.nilai_band4 = nilai_band4; guidata(hObject,handles); set(handles.text30,'string',handles.nilai_band4); % --- Executes during object creation, after setting all properties. function slider17_CreateFcn(hObject, eventdata, handles) % hObject handle to slider17 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: slider controls usually have a light gray background, change
L 14
% 'usewhitebg' to 0 to use default. See ISPC and COMPUTER. usewhitebg = 1; if usewhitebg set(hObject,'BackgroundColor',[.9 .9 .9]); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end % --- Executes on slider movement. function slider18_Callback(hObject, eventdata, handles) % hObject handle to slider18 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'Value') returns position of slider % get(hObject,'Min') and get(hObject,'Max') to determine range of slider nilai_band5=round(get(handles.slider18,'value')); %if isnan(nilai_band5) | nilai_band5<=0 % errordlg('Anda harus mengisikan nilai pada Band5','Bad Input','modal') %end handles.nilai_band5 = nilai_band5; guidata(hObject,handles); set(handles.text31,'string',handles.nilai_band5); % --- Executes during object creation, after setting all properties. function slider18_CreateFcn(hObject, eventdata, handles) % hObject handle to slider18 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: slider controls usually have a light gray background, change % 'usewhitebg' to 0 to use default. See ISPC and COMPUTER. usewhitebg = 1; if usewhitebg set(hObject,'BackgroundColor',[.9 .9 .9]); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end % -------------------------------------------------------------------- function Filter_Output_Callback(hObject, eventdata, handles) % hObject handle to Filter_Output (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) %meng-enable-kan frequency domain set(handles.Filter_Output,'enable','on'); set(handles.uipanel3,'visible','on') yq1 = handles.yq1; yq1_2 = handles.yq1_2; yq1_3 = handles.yq1_3; yq1_4 = handles.yq1_4;
%-------------------------------------------------------------------------- handles.total_data=length(yn); %fungsi menghitung panjang data input set(handles.text19,'string', handles.total_data); %menampilkan jumlah panjang data dari data input %menampilkan sinyal yang telah difilter dalam domain waktu axes(handles.grafik2) stem(yn) xlabel('Line..(n)') ylabel('Amplitude') guidata(hObject,handles); %meng-enable-kan tombol save set(handles.Save,'enable','on'); % --- Executes on button press in Play_Input. function Play_Input_Callback(hObject, eventdata, handles) % hObject handle to Play_Input (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) datas = handles.data; %pemeriksaan masukan [datvar] = cekin(datas); %pengecekan data input if datvar==1; else return; end %panjang data handles.jumlah_data=length(handles.data); %fungsi menghitung panjang data input set(handles.panjang_data,'string', handles.jumlah_data); %menampilkan jumlah panjang data dari data input handles.data_awal = 1; handles.data_akhir = handles.jumlah_data; %menampilkan grafik dalam domain waktu axes(handles.grafik1) plot(handles.data); xlabel('Line..(n)') ylabel('Amplitude') guidata(hObject,handles); wavplay(handles.data) % --- Executes on button press in Play_Output. function Play_Output_Callback(hObject, eventdata, handles) % hObject handle to Play_Output (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) yn = handles.yn; %panjang data handles.jumlah_data2=length(handles.yn); %fungsi menghitung panjang data input
L 17
set(handles.text19,'string', handles.jumlah_data2); %menampilkan jumlah panjang data dari data input handles.data_awal2 = 1; handles.data_akhir2 = handles.jumlah_data2; %menampilkan grafik domain waktu axes(handles.grafik2) stem(yn); xlabel('Line..(n)') ylabel('Amplitude') wavplay(yn) guidata(hObject,handles); %meng-enable-kan tombol save set(handles.Save,'enable','on'); % --- Executes on button press in Ubah. function Ubah_Callback(hObject, eventdata, handles) % hObject handle to Ubah (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) %meminta masukan dari pengguna prompt = 'Data mulai sampel ke: ','sampai sampel ke: '; title = 'Masukkan Jumlah Sampel Data'; num_lines = 1; a = num2str(handles.jumlah_data); b = handles.jumlah_data; default = '1',a; options.Resize='on'; answer = inputdlg(prompt,title,num_lines,default,options); if isempty(answer) return; else %hitung jumlah data yang baru sampel = answer'; handles.data_awal = str2double(sampel(1)); handles.data_akhir = str2double(sampel(2)); if handles.data_awal < 1 | handles.data_awal > b-1 errordlg('0 < sampel awal < jumlah total sampel',... 'Sampel Salah','modal'); elseif handles.data_akhir < handles.data_awal | handles.data_akhir > b errordlg('data awal < data akhir <= jumlah total sampel',... 'Sampel Salah','modal'); else jumlah = (handles.data_akhir - handles.data_awal) + 1; %tampilkan jumlah data yang baru set(handles.panjang_data,'string',jumlah); end end %handles.pjg = get(handles.panjang_data,'string'); z = handles.data_akhir; handles.z = z;
L 18
guidata(hObject,handles); % -------------------------------------------------------------------- function Reset_Callback(hObject, eventdata, handles) % hObject handle to Reset (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) delete(handles.figure1); Equalizer; % --- Executes on button press in pushbutton23. function pushbutton23_Callback(hObject, eventdata, handles) % hObject handle to pushbutton23 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) legend toggle % --- Executes on button press in pushbutton24. function pushbutton24_Callback(hObject, eventdata, handles) % hObject handle to pushbutton24 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) band1 % --- Executes on button press in pushbutton25. function pushbutton25_Callback(hObject, eventdata, handles) % hObject handle to pushbutton25 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) band2 % --- Executes on button press in pushbutton26. function pushbutton26_Callback(hObject, eventdata, handles) % hObject handle to pushbutton26 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) band3 % --- Executes on button press in pushbutton27. function pushbutton27_Callback(hObject, eventdata, handles) % hObject handle to pushbutton27 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) band4 % --- Executes on button press in pushbutton28. function pushbutton28_Callback(hObject, eventdata, handles) % hObject handle to pushbutton28 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) band5
L 19
% --- Executes on button press in pushbutton29. function pushbutton29_Callback(hObject, eventdata, handles) % hObject handle to pushbutton29 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) Fs = 11025; %Standard sampling rates for PC-based %audio hardware are 8000, 11025, 2250, %and 44100 samples per second. handles.data = wavrecord(2*Fs,Fs,'single').'; %'single' menunjukkan 16 bits/sample %Be sure to transpose data once it has been received: wavplay(handles.data,Fs); %menampilkan record axes(handles.grafik1) plot(handles.data) xlabel('Line..(n)') ylabel('Amplitude') guidata(hObject,handles); %meng-enable-kan tombol save set(handles.Save,'enable','on'); % --- Executes on button press in pushbutton36. function pushbutton36_Callback(hObject, eventdata, handles) % hObject handle to pushbutton36 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) datas = handles.data; y = fft(datas); m = abs(y); f = (0:length(y)-1)*(44000/2)/length(y); %%menampilkan spektrum sinyal input axes(handles.grafik4) plot(f,20*log10(m)); title('Magnitude'); xlabel('frequency (Hz)') ylabel('Amplitudo') guidata(hObject,handles); % --- Executes on button press in pushbutton37. function pushbutton37_Callback(hObject, eventdata, handles) % hObject handle to pushbutton37 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) datacursormode; % --- Executes on button press in pushbutton38. function pushbutton38_Callback(hObject, eventdata, handles) % hObject handle to pushbutton38 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) yn = handles.yn; tt = (0:1/100:10-1/100); yy = fft(yn);
L 20
mm = abs(yy); ff = (0:length(yy)-1)*(44000/2)/length(yy); %menampilkan spektrum output axes(handles.grafik5) plot(ff,20*log10(mm)); title('Magnitude'); xlabel('frequency (Hz)') ylabel('Amplitudo') guidata(hObject,handles); % --- Executes on button press in pushbutton39. function pushbutton39_Callback(hObject, eventdata, handles) % hObject handle to pushbutton39 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) datacursormode;
L 21
B
HASIL PENGAMATAN
L 22
Hasil Pengamatan
1. Saat band 1, band 3, band 5 diberi penguatan pada -60 dB
Spesifikasi yang diharapkan :
file masukan click.wav
jumlah sampel data masukan 512
band 1 (gain 1) 0 dB
band 2 (gain 2) -30 dB
band 3 (gain 3) 0 dB
band 4 (gain 4) -20 dB
band 5 (gain 5) 0 dB
Gambar aktual :
L 23
Spesifikasi aktual :
2. Saat diberi penguatan yang saling berbeda dengan file sinyal masukan ding.wav
Spesifikasi yang diharapkan :
file masukan ding.wav
jumlah sampel data masukan 4096
band 1 (gain 1) -6 dB
band 2 (gain 2) -16 dB
band 3 (gain 3) -24 dB
band 4 (gain 4) -19 dB
band 5 (gain 5) -2 dB
Gambar aktual :
file masukan click.wav
jumlah sampel data keluaran 889
proses yang dijalankan filtering dan filter output
N1 378
N2 270
N3 378
N4 306
N5 378
L 24
Spesifikasi aktual :
3. Saat diberi penguatan yang semakin kecil dan file masukan bee.wav.
Spesifikasi yang diharapkan :
file masukan bee.wav
jumlah sampel data masukan 1024
band 1 (gain 1) -8 dB
band 2 (gain 2) -18 dB
band 3 (gain 3) -29 dB
band 4 (gain 4) -36 dB
band 5 (gain 5) -45 dB
Gambar aktual :
file masukan ding.wav
jumlah sampel data keluaran 4466
proses yang dijalankan filtering dan filter output
N1 356
N2 321
N3 292
N4 310
N5 371
L 25
Spesifikasi aktual :
file masukan bee.wav
jumlah sampel data keluaran 1372
proses yang dijalankan filtering dan filter output