BAB 2 LANDASAN TEORI 2.1 Audio - Analisis Dan Implementasi Song Recog-Nition Menggunakan Algoritma Fast Fourier Transform

BAB 2 LANDASAN TEORI

2.1 Audio

  

Audio atau suara merupakan gelombang yang mengandung sejumlah komponen

  penting (amplitudo, panjang gelombang dan frekuensi) yang dapat menyebabkan suara yang satu berbeda dari suara lain. Amplitudo adalah kekuatan atau daya gelombang sinyal. Tinggi gelombang yang bisa dilihat sebagai grafik, Gelombang yang lebih tinggi diinterpretasikan sebagai volume yang lebih tinggi, Suara beramplitudo lebih besar akan terdengar lebih keras. Frekuensi adalah jumlah dari siklus yang terjadi dalam satu detik. Satuan dari frekuensi adalah Hertz atau disingkat Hz. Getaran gelombang suara yang cepat membuat frekuensi semakin tinggi. Misalnya, bila menyanyi dalam pita suara tinggi memaksa tali suara untuk bergetar secara cepat. Suara dengan frekuensi lebih besar akan terdengar lebih tinggi[10].

  Gelombang suara adalah gelombang yang dihasilkan dari sebuah benda yang bergetar. Sebagai contoh, senar gitar yang dipetik, gitar akan bergetar dan getaran ini merambat di udara, atau air, atau material lainnya. Satu-satunya tempat dimana suara tak dapat merambat adalah ruangan hampa udara. Gelombang suara ini memiliki lembah dan bukit, satu buah lembah dan bukit akan menghasilkan satu siklus atau periode. Siklus ini berlangsung berulang-ulang, yang membawa pada konsep frekuensi.

  Telinga manusia dapat mendengar bunyi antara 20 Hz hingga 20 kHz (20.000 Hz) sesuai batasan sinyal audio. Karena pada dasarnya sinyal suara adalah sinyal yang dapat diterima oleh telinga manusia. Angka 20 Hz sebagai frekuensi suara terendah yang dapat didengar, sedangkan 20 KHz merupakan frekuensi tertinggi yang perantara seperti udara. Suara diciptakan oleh getaran dari suatu obyek, yang menyebabkan udara disekitarnya bergetar. Getaran udara ini kemudian menyebabkan gendang telinga manusia bergetar, yang kemudian oleh otak dianggap sebagai suara.

2.1.1 Audio Digital

  Audio digital merupakan versi digital dari suara analog. Pengubahan suara analog menjadi suara digital membutuhkan suatu alat yang disebut Analog to Digital

  Converter (ADC). ADC akan mengubah amplitudo sebuah gelombang analog ke dalam waktu interval (sampel) sehingga menghasilkan penyajian digital dari suara[1].

Gambar 2.1 Ilustrasi proses suara analog ke digital dan sebaliknya

  Sumber: http://en.wikipedia.org/wiki/File:A-D-A_Flow.svg Berlawanan dengan ADC, Digital to Analog Converter (DAC) akan mengubah suara digital ke alat suara analog (speaker). Audio digital merupakan penyajian dari suara asli. Dengan kata lain, audio digital merupakan sampel suara. Kualitas perekaman digital bergantung pada seberapa sering sampel diambil (angka sampling atau frekuensi dihitung dalam kiloHertz atau seribu sampel per detik). Tiga frekuensi sampling yang paling sering digunakan dalam multimedia adalah kualitas CD 44.1 kHz, 22.05 kHz dan 11.025 kHz dengan ukuran sampel 8 bit dan 16 bit. Ukuran dalam satu waktu). Ukuran file dari audio digital bergantung pada angka sampling, resolusi dan channel-nya (Stereo atau Mono).

  Kualitas perekaman digital bergantung pada seberapa sering sampel diambil dan berapa banyak angka yang digunakan untuk menyajikan nilai dari tiap sampel (bitdepth, ukuran sampel, resolusi, jarak dinamis). Semakin sering sampel diambil, semakin banyak data yang disimpan mengenai sampel, semakin bagus resolusi dan kualitas suara yang ditangkap ketika diputar. Artinya, kualitas suara akan semakin tinggi. Semakin tinggi kualitas suara, semakin besar pula ukuran file yang dihasilkan. Resolusi audio (8 bit atau 16 bit) menentukan akurasi proses digital dari suara. Penggunaan bit yang lebih besar untuk ukuran sampel akan menghasilkan hasil rekaman yang menyerupai versi aslinya.

2.1.2 Format File Audio

2.1.2.1 File WAV

  WAV adalah format file audio standar Microsoft dan IBM untuk personal computer (PC), biasanya menggunakan pengkodean PCM (Pulse Code Modulation). WAV adalah data tidak terkompres sehingga seluruh sampel audio disimpan semuanya di harddisk. Perangkat lunak yang dapat menciptakan WAV dari sinyal analog misalnya adalah Windows Sound Recorder. WAV jarang sekali digunakan di internet karena ukurannya yang relatif besar dengan batasan maksimal untuk file WAV adalah 2GB.

  Secara umum data audio digital dari WAV memiliki karakteristik yang dapat dinyatakan dengan parameter-parameter berikut: a.

  Laju sampel (sampling rate) dalam sampel/detik, misalnya 22050 atau 44100 sampel/detik.

  b.

  Jumlah bit tiap sampel, misalnya 8 atau 16 bit.

  c.

  Jumlah kanal (channel), yaitu 1 untuk mono dan 2 untuk stereo. ADC pada saat data audio direkam. Biasanya laju sampel juga dinyatakan dengan satuan Hz atau kHz. Sebagai gambaran, data audio digital yang tersimpan dalam CD audio memiliki karakteristik laju sampel 44100 Hz, 16 bit per sampel, dan 2 kanal (stereo), yang berarti setiap satu detik suara tersusun dari 44100 sampel, dan setiap sampel tersimpan dalam data sebesar 16-bit atau 2 byte. Laju sampel selalu dinyatakan untuk setiap satu kanal (channel). Jadi misalkan suatu data audio digital memiliki 2 kanal (channel) dengan laju sampel 8000 sampel/detik, maka di dalam setiap detiknya akan terdapat 16000 sampel.

  File WAV menggunakan struktur standar RIFF Microsoft yang mengelompokkan isi file (sampel format, sampel audio digital, dan lain sebagainya) menjadi “Chunk” yang terpisah, setiap bagian mempunyai header dan byte data masing- masing. Header Chunk menetapkan jenis dan ukuran dari byte data Chunk. Dengan metoda pengaturan seperti ini maka program yang tidak mengenali jenis

  

Chunk yang khusus dapat dengan mudah melewati bagian Chunk ini dan melanjutkan

langkah memproses Chunk yang dikenalnya.

Gambar 2.2 Format file WAV[12]

  Field Keterangan

  Menunjukkan type format data dan

  Fomat memiliki nilai WAVE_FORMAT_PCM.

NumChannels Menunjukkan banyaknya kanal yang ada di

  dalam data waveform audio. Untuk mono menggunakan satu kanal sedangkan untuk

  stereo menggunakan dua kanal.

SampleRate Menunjukkan besarnya sample rate dalam

sample per detik.

  

ByteRate Menunjukkan rata-rata laju transfer data,

  dalam byte per detik. Misalnya untuk PCM 16-bit stereo pada 44.1 kHz, ByteRate bernilai 176400 (2 kanal * 2 byte per sample * 44100).

  

BlockAlign Menunjukkan banyaknya byte yang

digunakan untuk satu buah sample.

  Misalnya untuk PCM 16-bit mono,

  BlockAlign akan bernilai 2

2.1.2.2 File MP3

  MPEG-1 audio layer III atau yang lebih dikenal dengan MP3, adalah pengkodean dalam digital audio dan juga merupakan format kompresi audio yang memiliki sifat “menghilangkan”. Istilah menghilangkan yang dimaksud adalah kompresi audio ke dalam format mp3 menghilangkan aspek-aspek yang tidak signifikan pada pendengaran manusia untuk mengurangi besarnya file audio.

  Sejarah MP3 dimulai dari tahun 1991 saat proposal dari Phillips (Belanda), CCET (Perancis), dan Institut für Rundfunktechnik (Jerman) memenangkan proyek untuk DAB (Digital Audio Broadcast). Produk mereka seperti Musicam (lebih dikenal dengan layer 2) terpilih karena kesederhanaan, ketahanan terhadap kesalahan, dan perhitungan komputasi yang sederhana untuk melakukan pengkodean yang menghasilkan keluaran yang memiliki kualitas tinggi. Pada akhirnya ide dan teknologi yang digunakan dikembangkan menjadi MPEG-1 audio layer 3. MP3 adalah pengembangan dari teknologi sebelumnya sehingga dengan ukuran yang lebih kecil dapat menghasilkan kualitas yang setara dengan kualitas CD.

  a.

  Layer 1: paling baik pada 384 kbit/s.

  b.

  Layer 2: paling baik pada 256...384 kbit/s, sangat baik pada 224...256 kbit/, baik pada 192...224 kbit/s 3.

  c.

  Layer 3: paling baik pada 224...320 kbit/s, sangat baik pada 192...224 kbit/s, baik pada 128...192 kbit/s.

  Kompresi yang dilakukan oleh MP3 seperti yang telah disebutkan, tidak mempertahankan bentuk asli dari sinyal input. Melainkan yang dilakukan adalah menghilangkan suara-suara yang keberadaannya kurang/tidak signifikan bagi sistem pendengaran manusia. Proses yang dilakukan adalah menggunakan model dari sistem pendengaran manusia dan menentukan bagian yang terdengar bagi sistem pendengaran manusia. Setelah itu sinyal input yang memiliki domain waktu dibagi menjadi blok-blok dan ditransformasi menjadi domain frekuensi. Kemudian model dari sistem pendengaran manusia dibandingkan dengan sinyal input dan dilakukan proses penyaringan yang menghasilkan sinyal dengan range frekuensi yang signifikan bagi sistem pendengaran manusia. Proses tersebut adalah proses konvolusi dua sinyal yaitu sinyal input dan sinyal model sistem pendengaran manusia. Langkah terakhir adalah kuantisasi data, dimana data yang terkumpul setelah penyaringan akan dikumpulkan menjadi satu keluaran dan dilakukan pengkodean dengan hasil akhir file dengan format MP3

  2.2 Song Recognition

Song dalam bahasa Indonesia diartikan sebagai lagu dan Recognition berarti

  pengenalan sehingga Song Recognition dapat diartikan sebagai pengenalan pada media suara yakni lagu. Pada dasarnya setiap lagu memiliki karakteristik yang berbeda-beda antara lagu yang satu dengan yang lainnya layaknya sidik jari manusia. Pengenalan lagu dapat dipandang sebagai ringkasan pendek dari suatu objek lagu. ringkasan tersebut diolah sedemikian rupa menjadi sekumpulan kode yang disebut hash. Hash tersebut dibuat dengan teknik khusus dengan tujuan agar kemiripan lagu

  namun sebenarnya beda. Hash inilah yang akan membedakannya.

  Pengenalan lagu membandingkan hash yang dihasilkan dari rekaman dengan yang ada pada basis data. Hal ini terlihat seperti kriptografi, namun kriptografi agak sensitif dalam kesetaraan perhitungan matematika. Satu bit saja berbeda akan menghasilkan perbedaan. Sedangkan pengenalan lagu membutuhkan kesamaan persepsi yakni, lagu yang diperdengarkan memiliki gangguan seperti sinyal yang buruk (gangguan suara disekitar) tetapi masih diakui sebagai lagu asli[4].

  Pengenalan lagu didasarkan pada lagu yang memang dari penyanyi aslinya bukan lagu yang dibawakan ulang oleh penyanyi lain meskipun lirik dan melodi sama. Lagu yang dibawakan ulang tersebut sudah memiliki karakteristik yang berbeda dengan lagu asli tetapi dalam beberapa hal masih bisa memiliki kesamaan. Ini ditunjukkan pada penyanyi asli membawakan lagunya secara langsung dan membawakan lagunya.

  Istilah lain untuk pengenalan lagu diantaranya pencocokan kuat, hashing kuat atau persepsi, tanda tangan digital berbasis konten dan identifikasi lagu berbasis konten. Bidang yang relevan dengan pengenalan lagu yang meliputi pencarian informasi, pencocokan pola, pemrosesan sinyal, database, dan kriptografi.

2.2.1 Parameter Song Recognition

  Dalam Song Recognition, terdapat beberapa parameter yang digunakan sebagai acuan[4]. Parameter-parameter yang paling utama adalah sebagai berikut:

1. Ketahanan

  Rekaman lagu masih bisa diidentifikasi bila degradasi sinyalnya buruk. Untuk mencapai ketahanan tinggi, Song Recognition harus didasarkan pada persepsi yang bersifat tetap (setidaknya untuk tingkat tertentu) dengan sinyal degradasi. yang sangat mirip.

  2. Kehandalan Seberapa sering lagu yang diidentifikasi hasilnya salah. Misalnya, "The Rolling Stones-Angie" yang diidentifikasi sebagai "Beatles-Yesterday".

  Tingkat di mana kejadian ini biasanya mengacu pada tingkat positif yang salah.

  3. Ukuran Berapa banyak penyimpanan yang dibutuhkan untuk Song Recognition. Untuk mengaktifkan pencarian cepat, proses Song Recognition biasanya disimpan dalam memori RAM. Oleh karena itu ukuran Song Recognition, biasanya dinyatakan dalam bit per detik atau bit per lagu, menentukan batas besar sumber daya memori yang dibutuhkan untuk server basis data Song Recognition .

  4. Granular Berapa detik durasi lagu yang diperlukan untuk mengidentifikasi lagu.

  Granular adalah parameter yang dapat bergantung pada aplikasi.

  5. Kecepatan pencarian dan skalabilitas Berapa lama waktu yang diperlukan untuk menemukan lagu dalam basis data.

  Bagaimana jika basis data berisi ribuan lagu. Untuk pengembangan komersil dari sistem Song Recognition, kecepatan pencarian dan skalabilitas merupakan parameter kunci. Kecepatan pencarian harus dalam urutan milidetik untuk sebuah database yang berisi lebih dari 100.000 lagu hanya menggunakan sumber daya komputasi yang terbatas (misalnya PC dengan speksifikasi rendah).

  Kelima parameter dasar memiliki dampak yang besar pada satu sama lain. Misalnya, jika ingin granular yang lebih rendah, salah satu kebutuhan untuk dikarenakan tingkat positif berbanding terbalik dengan ukuran Song Recognition. Contoh lain yaitu, kecepatan pencarian umumnya meningkat ketika salah satu desain

  

Song Recognition lebih kuat. Hal ini dikarenakan bahwa pencarian lagu adalah

  pencarian kedekatan. Yaitu serupa (atau paling mirip) lagu harus ditemukan. Oleh karena itu kecepatan pencarian dapat ditingkatkan.

2.2.2 Rancangan Song Recognition

  Secara umum, proses yang dilakukan dalam Song Recognition dengan menggunakan algoritma Fast Fourier Transform dapat dilihat pada Gambar 2.3.

  Koleksi Ekstraksi

  Hash Basis Data

  ID Penyanyi dan Judul Lagu Rekaman

  ID Penyanyi Ekstraksi

  Lagu dan Judul Lagu

  Pencocokan Hash

  Ya

Gambar 2.3 Cara kerja umum aplikasi Song Recognition[2]

2.3 Sinyal Domain Waktu dan Sinyal Domain Frekuensi

  Kebanyakan dari sinyal dalam prakteknya adalah sinyal domain waktu. Oleh karena itu, apapun sinyal yang diukur adalah fungsi waktu, dimana ketika diplot salah satu sumbu dengan variabel waktu maka variabel lainnya adalah amplitudo. Ketika diplot, sinyal domain waktu berupa gelombang berjalan yang direpresentasikan pada waktu terhadap amplitudo dari sinyal. Amplitudo pada sinyal domain waktu menunjukan keras lemahnya sinyal yang diterima. Sehingga, sinyal yang diterima tidak memiliki karakteristik yang berbeda tiap waktunya. frekuensi terhadap magnitudo. Informasi yang penting tersembunyi di dalam frekuensi sinyal. Spektrum frekuensi sinyal pada dasarnya adalah komponen frekuensi (spektral frekuensi) sinyal yang menunjukkan frekuensi apa yang muncul. Frekuensi menunjukkan tingkat perubahan. Jika suatu variabel sering berubah, maka disebut berfrekuensi tinggi. Namun, jika tidak sering berubah, maka disebut berfrekuensi rendah. Jika variabel tersebut tidak berubah sama sekali, maka disebut tidak mempunyai frekuensi (nol frekuensi). Magnitudo pada sinyal domain frekuensi menunjukkan tinggi rendahnya sinyal yang diterima. Dengan kata lain, keras lemahnya sinyal tidak mempengaruhi frekuensi yang didalamnya. Sinyal domain frekuensi dapat dikembalikan ke sinyal domain waktu.

Gambar 2.4 Gelombang sinus sinyal domain waktu[5]Gambar 2.5 Gelombang sinyal domain frekuensi[5] Proses penting dalam pemrosesan sinyal digital adalah menganalisis suatu sinyal input maupun output untuk mengetahui karakteristik sistem fisis tertentu dari sinyal. Proses analisis dan sintesis dalam domain waktu memerlukan analisis cukup panjang dengan melibatkan turunan dari fungsi, yang dapat menimbulkan ketidaktelitian hasil analisis. Analisis dan sintesis sinyal akan lebih mudah dilakukan pada domain frekuensi, karena besaran yang paling menentukan suatu sinyal adalah frekuensi. Oleh karena itu, untuk dapat bekerja pada domain frekuensi dibutuhkan suatu formulasi yang tepat sehingga proses manipulasi sinyal sesuai dengan kenyataan. Salah satu teknik untuk menganalisis sinyal adalah mentransformasikan (alih bentuk) sinyal yang semula analog menjadi diskrit dalam domain waktu, dan kemudian diubah ke dalam domain frekuensi.

  Transformasi Fourier adalah suatu model transformasi yang memindahkan sinyal domain spasial atau sinyal domain waktu menjadi sinyal domain frekuensi. Di dalam pengolahan suara, transformasi fourier banyak digunakan untuk mengubah domain spasial pada suara menjadi domain frekuensi. Analisa-analisa dalam domain frekuensi banyak digunakan seperti filtering. Dengan menggunakan transformasi fourier, sinyal atau suara dapat dilihat sebagai suatu objek dalam domain frekuensi.

2.4.1 Transformasi Fourier Diskrit

  Transformasi Fourier Diskrit (Discrete Fourier Transform - DFT) adalah prosedur yang paling umum dan kuat pada bidang pemrosesan sinyal digital. DFT memungkinkan untuk menganalisis, memanipulasi, dan mensintesis sinyal dengan cara yang tidak mungkin dilakukan dalam pemrosesan sinyal analog[5]. Meskipun sekarang digunakan dalam hampir setiap bidang teknik. Aplikasi yang menggunakan DFT terus berkembang sebagai utilitas yang menjadikan DFT lebih mudah untuk dimengerti. Karena itu, pemahaman yang kuat tentang DFT adalah wajib bagi siapa saja yang bekerja di bidang pemrosesan sinyal digital. harmonik atau frekuensi yang merupakan isi dari urutan sinyal diskrit. Urutan sinyal diskrit adalah urutan nilai yang diperoleh dari sampling periodik sinyal kontinu dalam domain waktu. DFT berasal dari fungsi Transformasi Fourier X(f) yang didefinisikan:

  ∞ − 2 (2.1) ( ) = � [ ].

  −∞

  Dimana: X(f) = urutan ke-f komponen output (X(0), X(1),…,X(N-1)) f = indeks output dalam domain frekuensi (0, 1, …, N-1) x(t) = urutan ke-t sampel input (x(0), x(1), …, x(N-1)) n = indeks sampel input dalam domain waktu (0, 1, …, N-1) j = bilangan imajiner (

  √−1 )

  o

  ) π = derajat (180 e = basis logaritma natural (2.718281828459…) Dalam bidang pemrosesan sinyal kontinu, Persamaan 2.1 digunakan untuk mengubah fungsi domain waktu kontinu x(t) menjadi fungsi domain frekuensi kontinu

  X(f). Fungsi X(f) memungkinkan untuk menentukan kandungan isi frekuensi dari beberapa sinyal dan menjadikan beragam analisis sinyal dan pengolahan yang dipakai di bidang teknik dan fisika. Dengan munculnya komputer digital, ilmuwan di bidang pengolahan digital berhasil mendefenisikan DFT sebagai urutan sinyal diskrit domain frekuensi X(m), dimana:

  −1 − 2 / (2.2) ( ) = � ( ).

  =0

  Dimana: N = jumlah sampel input X(m) = urutan ke-m komponen output DFT (X(0), X(1),…,X(N-1)) m = indeks output DFT dalam domain frekuensi (0, 1, …, N-1) x(n) = urutan ke-n sampel input (x(0), x(1), …, x(N-1)) n = indeks sampel input dalam domain waktu (0, 1, …, N-1) j = bilangan imajiner ( √−1 )

  o

  ) π = derajat (180 e = basis logaritma natural (

  ≈2.718281828459…)

  −

  Persamaan 2.2 kemudian dihubungkan dengan rumusan Euler = cos (θ) – j sin (θ), sehingga setara dengan:

  −1 (2.3)

  ( ) = � ( ). [ (2 / ) – (2 / )]

  =0

  Dimana: N = jumlah sampel input X(m) = urutan ke-m komponen output DFT (X(0), X(1),…,X(N-1)) m = indeks output DFT dalam domain frekuensi (0, 1, …, N-1) x(n) = urutan ke-n sampel input (x(0), x(1), …, x(N-1)) n = indeks sampel input dalam domain waktu (0, 1, …, N-1) j = konstanta bilangan imajiner (

  √−1 )

  o

  ) π = derajat (180 Meski lebih rumit daripada Persamaan 2.2, Persamaan 2.3 lebih mudah untuk dipahami. Konstanta j =

  √−1 hanya membantu membandingkan hubungan fase di dalam berbagai komponen sinusoidal dari sinyal. Nilai N merupakan parameter penting karena menentukan berapa banyak sampel masukan yang diperlukan, hasil domain frekuensi dan jumlah waktu proses yang diperlukan untuk menghitung N-titik DFT. Diperlukan N-perkalian kompleks dan N-1 sebagai tambahan. Kemudian, setiap perkalian membutuhkan N-perkalian riil, sehingga untuk menghitung seluruh nilai N

  2

  (X(0), X(1), …, X(N-1)) memerlukan N perkalian. Hal ini menyebabkan perhitungan DFT memakan waktu yang lama jika jumlah sampel yang akan diproses dalam jumlah besar.

  Meskipun DFT memainkan peranan yang penting sebagai prosedur matematis untuk menentukan isi frekuensi dari urutan domain waktu, namun sangat tidak efisien. Jumlah titik dalam DFT meningkat menjadi ratusan atau ribuan, sehingga jumlah- jumlah yang dihitung menjadi tidak dapat ditentukan. Pada tahun 1965 sebuah makalah diterbitkan oleh Cooley dan Tukey menjelaskan algoritma yang sangat efisien untuk menerapkan DFT[3]. Algoritma yang sekarang dikenal sebagai Fast

  

Fourier Transform (FFT). Sebelum munculnya FFT, seribu titik DFT membutuhkan

  waktu begitu lama untuk melakukan perhitungan yang pada saat itu masih terbatas pada komputer-komputer berspesifikasi rendah. Gagasan Cooley dan Tukey, dan perkembangan industri semikonduktor menjadikan jumlah N-titik DFT semisal 1024- titik, dapat dilakukan dalam beberapa detik saja pada komputer berspesifikasi rendah[5].

  Meskipun telah banyak bermacam-macam algoritma FFT yang dikembangkan, algoritma FFT radix-2 merupakan proses yang sangat efisien untuk melakukan DFT yang memiliki kendala pada ukuran jumlah titik dipangkatkan dua. FFT radix-2 menghilangkan redundansi dan mengurangi jumlah operasi aritmatika yang

  2 diperlukan. Sebuah DFT 8-titik, harus melakukan N atau 64 perkalian kompleks.

  Sedangkan FFT melakukan (N/2)log

2 N yang memberikan penurunan yang signifikan

  2

  dari N perkalian kompleks. Ketika N = 512 maka DFT memerlukan 200 kali perkalian kompleks dari yang diperlukan oleh FFT.

  1200000 1048576

  1000000 ian al

  800000 k er

  600000 DFT P FFT lah

  400000 m 262144 Ju

  200000 65536 1280 2560 5120

  200 400 600 800 1000 1200 N (jumlah sampel)

Gambar 2.6 Perbandingan jumlah perkalian kompleks DFT dengan FFT[5] waktu titik N ke N sinyal domain waktu hingga masing-masing terdiri dari satu titik. Selanjutnya menghitung N frekuensi spektrum yang berkorespondensi dengan N sinyal domain waktu. Terakhir, spektrum N disintesis menjadi spektrum frekuensi tunggal.

Gambar 2.7 Diagram Alir FFT[9]

  Dalam proses dekomposisi diperlukan tahapan Log

  2 N. Sebagai contoh, sinyal

  4

  9

  16 titik (2 ) memerlukan 4 tahapan, sinyal 512 titik (2 ) membutuhkan 9 tahap, sinyal

  12

  4096 titik (2 ) membutuhkan 12 tahapan. Dalam Gambar 2.8, sinyal 16 titik terurai melalui empat tahap yang terpisah. Tahap pertama memisahkan sinyal 16 titik menjadi dua sinyal masing-masing terdiri dari 8 titik. Tahap kedua menguraikan data menjadi empat sinyal terdiri dari 4 titik. Pola ini berlanjut sampai sinyal N terdiri dari satu titik. Dekomposisi digunakan setiap kali sinyal dipecah menjadi dua, yaitu sinyal dipisahkan menjadi sampel genap dan sample ganjil.

Gambar 2.8 Contoh dekomposisi sinyal domain waktu yang digunakan di FFT[9]

  Setelah dekomposisi, dilakukan Pengurutan Pembalikan Bit (Bit Reversal

  

Sorting ), yaitu menata ulang urutan sampel sinyal domain waktu N dengan

  menghitung dalam biner dengan bit membalik dari kiri ke kanan. Asumsi N adalah kelipatan dari 2, yaitu N = 2

  r

  untuk beberapa bilangan bulat r=1, 2, dst. Algoritma FFT memecah sampel menjadi dua bagian yaitu bagian genap dan bagian ganjil.

Tabel 2.2 Pengurutan Pembalikan Bit Titik ke-

  (Awal) Biner (Awal) Biner (Akhir) Titik ke- (Akhir)

  0000 0000 1 0001 1000 8 2 0010 0100 4 3 0011 1100

  12 4 0100 0010 2 5 0101 1010

  10 6 0110 0110 6 7 0111 1110

  14 8 1000 0001 1 9 1001 1001 9 10 1010 0101 5 11 1011 1101

  13 12 1100 0011 3 13 1101 1011

  11 14 1110 0111 7 15 1111 1111

  15

  ( /2)−1

− 2 (2 )/

( ) = � [2 ].

  =0 (2.4)

  ( /2)−1 − 2 / − 2 (2 )/ � [2 + 1].

  • =0

  Dimana: N = jumlah sampel input X(m) = urutan ke-m komponen output FFT (X(0), X(1),…,X(N-1)) m = indeks output FFT dalam domain frekuensi (0, 1, …, N-1) x(2n) = urutan ke-n sampel input genap(x(0), x(2), …,x(N-2)) x(2n+1) = urutan ke-n sampel input ganjil(x(1), x(3), …,x(N-1)) n = indeks sampel input dalam domain waktu (0, 1, …, N/2-1) j = konstanta bilangan imajiner (

  √−1 )

  o

  ) π = derajat (180 e = basis logaritma natural (

  ≈2.718281828459…) Karena rumusan yang didapat panjang, sehingga digunakan notasi standar

  − 2 /

  untuk menyederhanakannya. Didefenisikan W = yang merepresentasikan nth

  N root of unity . Persamaan 2.4 dapat ditulis:

  ( ( /2)−1 /2)−1

  2

  2

  • W

  N =0 =0 2 − 2 2/ − 2 /( /2)

   (2.5) ( ) = � [2 ]. � [2 + 1].

  2 Karena = = , kemudian subsitusikan = .

  /2

  Sehingga menjadi:

  ( ( /2)−1 /2)−1 (2.6)

  /2 N /2 =0 =0

  • W ( ) = � [2 ]. � [2 + 1].

  Sintesis domain frekuensi membutuhkan tiga perulangan. Perulangan luar menjalankan tahapan Log

2 N (setiap tingkat mulai dari bawah dan bergerak ke atas).

  individu dalam tahap sedang dikerjakan (masing-masing kotak pada setiap tingkat). Dalam pemrosesan sinyal digital dikenal istilah butterfly. Butterfly digunakan untuk menggambarkan peruraian (decimation) yang terjadi. Karena tampilannya yang bersayap maka disebut butterfly. Butterfly adalah elemen komputasi dasar FFT, mengubah dua poin kompleks menjadi dua poin kompleks lainnya. Ada dua jenis peruraian, peruraian dalam waktu (decimation in time-DIT) dan peruraian dalam frekuensi (decimation in frekuensi-DIF). Gambar dari butterfly dasar untuk kedua jenis peruraian tersebut dapat dilihat pada Gambar 2.9 dan Gambar 2.10.

  A = a + W .b a

  N

  W

  N

  b B = a - W .b

  N

Gambar 2.9 FFT butterfly dasar untuk peruraian dalam waktu[5]

  A = a + b a W

  N

  W B = (a – b). b

  N

Gambar 2.10 FFT butterfly dasar untuk peruraian dalam frekuensi[5]

  Perulangan paling dalam menggunakan butterfly untuk menghitung poin dalam setiap spektrum frekuensi (perulangan melalui sampel dalam setiap kotak). Gambar 2.11 menunjukkan implemetasi FFT dari empat spektrum dua titik dan dua spektrum empat titik. Gambar 2.11 terbentuk dari pola dasar pada Gambar 2.9 berulang-ulang.

Gambar 2.11 FFT sintesis butterfly[5]

2.5 Hashing

  

Hashing adalah transformasi aritmatik sebuah string dari karakter menjadi nilai yang

  merepresentasikan string aslinya. Menurut bahasa, hashing berarti memenggal dan kemudian menggabungkan. Hashing digunakan sebagai metode untuk menyimpan data dalam sebuah array agar penyimpanan data, pencarian data, penambahan data dan penghapusan data dapat dilakukan dengan cepat. Ide dasarnya adalah menghitung posisi record yang dicari dalam array, bukan membandingkan record dengan isi pada array. Fungsi yang mengembalikan nilai atau kunci disebut fungsi hash (hash

  ) dan array yang digunakan disebut tabel hash (hash table). Hash table

  function

  menggunakan struktur data array asosiatif yang mengasosiasikan record dengan

  record tersebut.

  Fungsi hash menyimpan nilai asli atau kunci pada alamat yang sama dengan nilai hash-nya. Pada pencarian suatu nilai pada tabel hash, yang pertama dilakukan adalah menghitung nilai hash dari kunci atau nilai aslinya, kemudian membandingkan kunci atau nilai asli dengan isi pada memori yang beralamat nomor hash-nya. Dengan cara ini, pencarian suatu nilai dapat dilakukan dengan cepat tanpa harus memeriksa seluruh isi tabel satu per satu.

  Selain digunakan pada penyimpanan data, fungsi hash juga digunakan pada algoritma enkripsi sidik jari digital (fingerprint) untuk mengautentifikasi pengirim dan penerima pesan. Sidik jari digital diperoleh dengan fungsi hash, kemudian nilai hash dan tanda pesan yang asli dikirim kepada penerima pesan. Dengan menggunakan fungsi hash yang sama dengan pengirim pesan, penerima pesan mentransformasikan pesan yang diterima. Nilai hash yang diperoleh oleh penerima pesan kemudian dibandingkan dengan nilai hash yang dikirim pengirim pesan.

  Kedua nilai hash harus sama dan pasti ada masalah jika tidak sama. Hashing selalu merupakan fungsi satu arah. Fungsi hash yang ideal tidak bisa diperoleh dengan melakukan reverse engineering dengan menganalisa nilai hash. Fungsi hash yang ideal juga seharusnya tidak menghasilkan nilai hash yang sama dari beberapa nilai yang berbeda. Jika hal yang seperti ini terjadi, inilah yang disebut dengan bentrokan (collision). Kemungkinan terjadinya bentrokan tidak dapat dihindari seratus persen. Fungsi hash yang baik dapat meminimalkan kemungkinan terjadinya bentrokan.