6 1. Pendahuluan Dewasa ini kemajuan teknologi yang berjalan begitu cepat menuntut kemajuan di segala bidang. Berbagai bidang tidak lepas dari sentuhan teknologi termasuk juga bidang industri musik yang sangat lekat dalam kehidupan masyarakat Algoritma Genetika merupakan algoritma pencarian yang didasarkan pada mekanisme seleksi alamiah. Secara garis besar langkah dalam prosedur ini dimulai dengan menetapkan suatu set solusi potensial dan melakukan perubahan dengan beberapa iterasi dengan algoritma genetika untuk mendapatkan solusi terbaik. Set solusi potensial ini ditetapkan di awal dan disebut dengan kromosom. Kromosom ini dibentuk secara acak berupa susunan angka biner yang di-generate dan dipilih. Keseluruhan set dari kromosom yang diobservasi mewakili suatu populasi. Implementasi algoritma genetika sangatlah luas mencakup berbagai hal yang salah satunya adalah untuk pemrograman otomatis. Otomatisasi dapat dilakukan menggunakan algoritma genetika untuk mendapatkan solusi yang bisa diterima dengan lebih cepat. Adapun pemrograman otomatis yang dapat diterapkan adalah pemrograman otomatis dalam bidang musik sebagai pembangkit pola–pola baru. Salah satu media yang dibutuhkan saat ini yaitu audio midi. Segala bentuk audio yang berdata MIDI (Musical Instrument Digital Interface), dapat dengan mudah diolah. Hal yang paling susah didapat adalah saat menentukan irama pola drum yang sesuai dengan lagu yang akan dibuat. Tapi harus dengan pola drum yang baru agar dapat menjadi hasil karya seni yang tinggi dan diakui musikalitasnya. Berdasarkan latar belakang tersebut, maka akan dilakukan penelitian yang membahas perancangan dan pembuatan generator pola drum yang menggunakan algoritma genetika. Dengan tujuan merancang dan membangun aplikasi Generator Pola Drum menggunakan Algoritma Genetika. Aplikasi yang dibuat diharapkan dapat mempermudah proses pembuatan suatu pola untuk produksi audio drum berbasis midi, untuk pembuatan aransemen dan musik lagu, serta dapat berguna dan membantu user, terutama untuk para pencipta lagu atau komposer lagu dan aransemennya. 2. Tinjauan Pustaka Penelitian terkait penerapan algoritma genetika telah banyak dilakukan, baik yang membahas tentang musik, maupun kasus yang lain. Dalam tesis yang berjudul “Kriptosistem Menggunakan Algoritma Genetika Pada Data Citra“. Dalam penelitian tersebut, diciptakan algoritma kriptografi yang baru dengan menggunakan algoritma genetika [1]. Penelitian terdahulu tentang Generator Melodi Berdasarkan Skala dan Akord Menggunakan Algoritma Genetika, membahas tentang generator melodi dengan representasi kromosom nada dan durasi, fungsi fitness digunakan untuk nada, dan tempo tidak bisa diatur sesuai keinginan dan kebutuhan musik. Input skala dalam Melody Generator hanya bisa beberapa skala dalam sekali generate melodi. Aplikasi yang dibuat memberikan output berupa nada sesuai skala yang dibangkitkan saja (generate) [2]. Berdasarkan penelitian yang pernah dilakukan tentang generator melodi dan penggunaan algoritma genetika, maka akan dilakukan penelitian tentang generator pola drum yang menggunakan algoritma genetika. Dalam penelitian yang dilakukan lebih dititikberatkan untuk pola drum atau ketukan, sehingga representasi kromosom yang dibuat hanya untuk pola. Fungsi fitness ditentukan berdasarkan pola drum, dan digunakan untuk mengevaluasi pola drum, sedangkan untuk durasi didasarkan pada nilai ketukan drum sesuai tempo dan genre yang dipilih. Aplikasi didesain dengan
19
Embed
generator pola drum - UKSW...9 - Mutasi dalam pengkodean permutasi, yaitu dengan cara memilih dua posisi gen secara acak kemudian menukarkannya. - Mutasi dalam pengkodean nilai, metode
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
6
1. Pendahuluan Dewasa ini kemajuan teknologi yang berjalan begitu cepat menuntut kemajuan
di segala bidang. Berbagai bidang tidak lepas dari sentuhan teknologi termasuk juga
bidang industri musik yang sangat lekat dalam kehidupan masyarakat
Algoritma Genetika merupakan algoritma pencarian yang didasarkan pada
mekanisme seleksi alamiah. Secara garis besar langkah dalam prosedur ini dimulai
dengan menetapkan suatu set solusi potensial dan melakukan perubahan dengan
beberapa iterasi dengan algoritma genetika untuk mendapatkan solusi terbaik. Set
solusi potensial ini ditetapkan di awal dan disebut dengan kromosom. Kromosom ini
dibentuk secara acak berupa susunan angka biner yang di-generate dan dipilih.
Keseluruhan set dari kromosom yang diobservasi mewakili suatu populasi.
Implementasi algoritma genetika sangatlah luas mencakup berbagai hal yang salah
satunya adalah untuk pemrograman otomatis. Otomatisasi dapat dilakukan
menggunakan algoritma genetika untuk mendapatkan solusi yang bisa diterima
dengan lebih cepat. Adapun pemrograman otomatis yang dapat diterapkan adalah
pemrograman otomatis dalam bidang musik sebagai pembangkit pola–pola baru.
Salah satu media yang dibutuhkan saat ini yaitu audio midi. Segala bentuk
audio yang berdata MIDI (Musical Instrument Digital Interface), dapat dengan
mudah diolah. Hal yang paling susah didapat adalah saat menentukan irama pola
drum yang sesuai dengan lagu yang akan dibuat. Tapi harus dengan pola drum yang
baru agar dapat menjadi hasil karya seni yang tinggi dan diakui musikalitasnya.
Berdasarkan latar belakang tersebut, maka akan dilakukan penelitian yang
membahas perancangan dan pembuatan generator pola drum yang menggunakan
algoritma genetika. Dengan tujuan merancang dan membangun aplikasi Generator
Pola Drum menggunakan Algoritma Genetika. Aplikasi yang dibuat diharapkan
dapat mempermudah proses pembuatan suatu pola untuk produksi audio drum
berbasis midi, untuk pembuatan aransemen dan musik lagu, serta dapat berguna dan
membantu user, terutama untuk para pencipta lagu atau komposer lagu dan
aransemennya.
2. Tinjauan Pustaka Penelitian terkait penerapan algoritma genetika telah banyak dilakukan, baik
yang membahas tentang musik, maupun kasus yang lain. Dalam tesis yang berjudul
“Kriptosistem Menggunakan Algoritma Genetika Pada Data Citra“. Dalam penelitian
tersebut, diciptakan algoritma kriptografi yang baru dengan menggunakan algoritma
genetika [1]. Penelitian terdahulu tentang Generator Melodi Berdasarkan Skala dan
Akord Menggunakan Algoritma Genetika, membahas tentang generator melodi
dengan representasi kromosom nada dan durasi, fungsi fitness digunakan untuk nada,
dan tempo tidak bisa diatur sesuai keinginan dan kebutuhan musik. Input skala dalam
Melody Generator hanya bisa beberapa skala dalam sekali generate melodi. Aplikasi
yang dibuat memberikan output berupa nada sesuai skala yang dibangkitkan saja
(generate) [2].
Berdasarkan penelitian yang pernah dilakukan tentang generator melodi dan
penggunaan algoritma genetika, maka akan dilakukan penelitian tentang generator
pola drum yang menggunakan algoritma genetika. Dalam penelitian yang dilakukan
lebih dititikberatkan untuk pola drum atau ketukan, sehingga representasi kromosom
yang dibuat hanya untuk pola. Fungsi fitness ditentukan berdasarkan pola drum, dan
digunakan untuk mengevaluasi pola drum, sedangkan untuk durasi didasarkan pada
nilai ketukan drum sesuai tempo dan genre yang dipilih. Aplikasi didesain dengan
7
menggunakan tempo yang bisa diatur, sesuai tempo yang diinginkan, dan setiap input
akan mewakili empat keluaran suara yang berbeda–beda dalam sekali generate.
Aplikasi yang dibuat akan memberikan output dalam beberapa macam suara, yaitu
Bass Drum, Accoustic Snare, Pedal Hit Hat, Crash Symbal.
Algoritma Genetika Algoritma Genetika adalah algoritma yang memanfaatkan proses seleksi
alamiah yang dikenal dengan proses evolusi. Dalam proses evolusi, individu secara
terus-menerus mengalami perubahan gen untuk menyesuaikan dengan lingkungan
hidupnya. “Hanya individu–individu yang kuat yang mampu bertahan”.
Proses seleksi alamiah ini melibatkan perubahan gen yang terjadi pada individu
melalui proses perkembang-biakan. Dalam algoritma genetika, proses perkembang-
biakan menjadi proses dasar yang menjadi perhatian utama, dengan dasar berpikir:
“Bagaimana mendapatkan keturunan yang lebih baik”. Algoritma genetika
ditemukan oleh John Holland dan dikembangkan oleh David Goldberg. Algoritma
genetika banyak diterapkan untuk mencari solusi terbaik dari suatu permasalahan.
Algoritma genetika dimulai dengan kumpulan solusi yang merupakan satu atau
lebih kromosom, dan kumpulan dari solusi disebut sebagai populasi. Kromosom
sendiri merupakan kumpulan dari gen, dan nilainya dapat berupa bilangan numerik,
biner, simbol, ataupun karakter, tergantung dari permasalahan yang dihadapi.
Gambar 1 menunjukkan contoh kromosom yang berisi bilangan biner.
Kromosom 1 1 1 0 1 0 0 0 1 0
Kromosom 2 0 0 1 1 0 1 0 1 0
Gambar 1. Kromosom
Sebuah solusi dari populasi akan diseleksi untuk membuat populasi baru.
Solusi tersebut diseleksi berdasarkan nilai fitness dari solusi tersebut. Nilai fitness
adalah persentase keberhasilan sebuah solusi terhadap lingkungan sekitarnya. Proses
seleksi yang dilakukan untuk memilih kromosom terbaik memiliki beberapa metode,
di antaranya adalah :
- Roulette wheel selection
Kromosom yang dipilih berdasarkan nilai fitness, semakin tinggi nilai fitness
kromosom, semakin besar probabilitas kromosom tersebut dipilih. Sama halnya
dengan permainan roulette, setiap kromosom akan menempati potongan
lingkaran pada papan roulette berdasarkan nilai fitness. Untuk menghitung
probabilitas kromosom yang dipilih dapat menggunakan rumus pada
Persamaan 1.
(1)
di mana, pi, probabilitas kromosom terpilih; fi, nilai fitness kromosom ke I; N,
jumlah kromosom, dan Fj, jumlah nilai fitness keseluruhan. Metode Roulette
wheel selection memiliki kelemahan, apabila nilai fitness sebuah kromosom
mencapai 90%, maka probabilitas kromosom untuk terpilih semakin besar, dan
mengurangi probabilitas kromosom lain untuk terpilih.
- tournament selection
Metode tournament selection merupakan metode penyeleksian kromosom dari
populasi dengan membandingkan nilai fitness kromosom–kromosom tersebut.
Kromosom yang berhasil menang dalam tournament akan terpilih menjadi
8
kromosom terbaik dan menjadi kromosom parent untuk pembentukan populasi
selanjutnya.
- rank selection
Menutupi kelemahan pada roulette wheel selection, metode rank selection
memberikan rank untuk setiap populasi, kemudian setiap kromosom akan
mendapatkan nilai fitness berdasarkan rank pada populasinya. Kromosom
terburuk akan mendapatkan rank 1, selanjutnya rank 2 dan sampai kromosom
terbaik akan mendapat rank N dari jumlah populasi yang ada. Tetapi metode
rank selection mengakibatkan pencarian kromosom terbaik membutuhkan
waktu lebih lama.
- elitism
Metode elitism menduplikasi setiap kromosom terbaik pada populasinya ke
dalam populasi baru, sebelum dilakukan proses crossover dan mutasi. Oleh
karenanya, setiap populasi baru akan memiliki kromosom terbaik dari populasi
sebelumnya sehingga akan meningkatkan waktu pencarian kromosom terbaik.
Pembentukan populasi baru membutuhkan 2 (dua) buah operator genetik, yaitu
crossover dan mutasi. Sepasang solusi terbaik, atau dapat dikatakan sebagai parent,
akan diseleksi dari populasi sebelumnya untuk pembentukan solusi baru atau child/
offspring dengan menggunakan operator crossover dan mutasi.
Crossover adalah pemilihan gen kromosom parent secara acak untuk
membentuk kromosom baru/offspring. Sebuah kromosom yang mengarah pada solusi
bagus bisa diperoleh dari proses memindah silangkan dua buah kromosom [3].
Crossover dapat dilakukan dalam beberapa cara berbeda, salah satunya adalah
pindah silang satu titik poin (one-point crossover) dimana titik potong dipilih secara
acak. Gambar 2 merupakan contoh proses Crossover untuk membentuk kromosom
baru.
Kromosom 1 1 1 0 1 0 0 0 1 0
Kromosom 2 0 0 1 1 0 1 0 1 0
Offspring 1 1 1 0 1 0 1 0 1 0
Offspring 2 1 0 1 0 0 0 0 1 0
Gambar 2 Crossover Pada Kromosom
Sedangkan operator mutasi merupakan proses pergantian gen kromosom
dengan gen baru. Hal ini bertujuan untuk mencegah pencapaian solusi optimum lokal
(convergensi premature) apabila kromosom yang dipilih cenderung memiliki nilai
fitness tertinggi. Untuk menghindari convergensi premature dan tetap menjaga
perbedaan (diversity) kromosom–kromosom dalam populasi, operator mutasi
berperan dalam hal ini. Proses mutasi bersifat acak, sehingga tidak menjamin bahwa
setelah proses mutasi akan diperoleh kromosom dengan nilai fitness yang lebih baik.
Namun mutasi tetap memberikan harapan agar kromosom yang diperoleh tetap
memberikan nilai fitness yang lebih baik dibanding generasi sebelumnya [3]. Mutasi
menjadi kontroversi dalam penerapannya di dalam algoritma genetika karena
sifatnya yang acak yang dapat menggangu kromosom yang diperoleh. Oleh
karenanya, mutasi biasanya tetap digunakan dengan probabilitas yang rendah.
Beberapa metode mutasi yang dapat digunakan sesuai kebutuhan :
- Mutasi dalam pengkodean biner, yaitu mengacak gen yang terpilih dengan
melakukan intervensi dari 0 ke 1 dan sebaliknya. Gambar 3 merupakan contoh
metode ini.
9
- Mutasi dalam pengkodean permutasi, yaitu dengan cara memilih dua posisi gen
secara acak kemudian menukarkannya.
- Mutasi dalam pengkodean nilai, metode ini mirip dengan metode mutasi
pengkodean biner, tetapi dilakukan penambahan atau pengurangan nilai pada
gen yang terpilih, dengan nilai terkecil yang diambil secara acak.
Offspring 1 1 1 0 1 0 1 0 1 0
Offspring 2 1 0 1 0 0 0 0 1 0
Offspring 1 baru 1 0 0 1 0 1 1 1 0
Offspring 2 baru 0 0 1 0 1 0 0 1 1
Gambar 3 Mutasi Pada Offspring
Proses evolusi pada algoritma genetika akan terhenti ketika menemukan solusi
terbaik, kondisi tersebut dinamakan terminasi. Namun, ada kalanya proses evolusi
akan berjalan terus tanpa solusi terbaik. Untuk mengatasi hal tersebut, kondisi
terminasi harus ditentukan, seperti berapa banyak iterasi maksimal yang dapat
dilakukan dalam proses evolusi. Hal ini akan mempengaruhi solusi terbaik yang
dipilih, jika proses iterasi mencapai batas maksimal, solusi akan diambil dari
populasi yang ada, tetapi bila proses iterasi belum mencapai maksimal, maka solusi
terbaik telah ditemukan.
Pustaka JFugue
JFugue adalah sebuah open-source Java API (Application Programming
Interface) tanpa kompleksitas dari MIDI. JFugue merepresentasikan musik ke dalam
bentuk bahasa pemrograman [4]. Gambar 4 merupakan contoh sederhana
penggunaan JFugue.
Gambar 4 Contoh Penggunaan Jfugue
Pustaka JGAP
JGAP (baca jay-gap) adalah salah satu pustaka java yang menyediakan
komponen untuk pemrograman genetik dan algoritma genetik. JGAP menyediakan
mekanisme genetik dasar yang dapat dengan mudah digunakan untuk menerapkan
prinsip-prinsip evolusi untuk solusi masalah. Beberapa hal yang harus diketahui
untuk menggunakan JGAP adalah : (1) Kromosom yang akan digunakan; (2)
Penentuan nilai fitness; (3) Konfigurasi awal untuk objek; (4) Populasi awal untuk
menemukan solusi; (5) Evolusi populasi.
Peran JGAP hanyalah sebagai framework untuk pemrograman genetik dan
algoritma genetik. Bagian terpenting pada algoritma genetik, yaitu nilai fitness harus
tetap dibuat. Pada pustaka JGAP, pembuatan nilai fitness dilakukan dengan
melakukan extendsclass yang akan digunakan untuk menentukan nilai fitness dengan
classFitnessFunction dari pustaka JGAP (terlihat pada Gambar 5).
Gambar 5 Pembuatan Nilai Fitness Menggunakan Pustaka JGAP
10
Setelah meng-extends class FitnessFunction, class tersebut wajib meng-
overridemethodevaluate() dari class FitnessFunction yang akan mengembalikan nilai
fitness dari kromosom.
Selain membuat class untuk menentukan nilai fitness, pustaka JGAP juga
membutuhkan konfigurasi awal untuk algoritma genetik. Konfigurasi awal dilakukan
dengan membuat instance dari class Configuration. Konfigurasi awal pada JGAP
dibutuhkan untuk memberikan nilai awal pada variabel–variabel yang akan
digunakan dalam algoritma genetik. JGAP menyediakan konfigurasi default dengan
memanggil classDefaultConfiguration() pada saat membuat instance dari
classConfiguration (Gambar 6).
Gambar 6 Konfigurasi Default Pada Pustaka JGAP
Output File MIDI
MIDI (Musical Instrument Digital Interface) merupakan sebuah standard
yang diterima secara luas untuk pertukaran informasi tentang permainan musik
secara digital [5]. Instrumen MIDI biasanya dapat mengirim sekaligus menerima
perintah MIDI. Meski begitu ada juga instrumentMIDI tertentu yang hanya
melakukan satu fungsi, yaitu hanya dapat mengirim atau hanya dapat menerima
perintah MIDI saja. Instrument MIDI bisa dibagi menjadi 3 (tiga) kelompok
berdasarkan interaksinya dengan perintah MIDI, yaitu: (1) Instrument MIDI yang
dapat mengirim dan menerima perintah MIDI; (2) Instrument MIDI yang hanya dapat
menerima perintah MIDI; dan (3) Instrument MIDI yang hanya dapat mengirim
perintah MIDI. MIDI (Musical Instrument Digital Interface) merupakan sebuah
standard yang diterima secara luas untuk pertukaran.
Gambar 7 Proses Penerjemahan Data MIDI
Teori Pola Musik Drum Teori musik drum yang dipakai dan diterapkan dalam aplikasi yang dibuat
adalah mengacu pada genre lagu. Pada penelitian yang dilakukan, teori pola musik
drum mengacu pada genre lagu yang sering dan umum digunakan dalam pembuatan
lagu. Pola awal, sekaligus sebagai default pola, menggunakan sample teori musik
style pada keyboard standart internasional. Kemudian ditulis dengan bahasa
program sesuai simbol–simbol yang telah ditetapkan pada aplikasi. Tabel 1
menunjukkan contoh sample pola default pada genre lagu yang telah ditentukan
Keterangan dari simbol pola drum ditunjukkan pada Tabel 2.
Tabel 1 Pola Drum Sesuai Genre Genre Pola
Slow Rock
O...OO..
..*...*.
^^^^^^^^
!.......
Chacha
O.O..O
...*..
^^^^^^
!.....
11
Waltz
O..O..O..
.**.**.**
^^^^^^^^^
!........
Disco House
O...O...O...O...
..*...*...*...*.
.^.^.^.^.^.^.^.^
!.......!.......
Hard rock
O.OO.O.OO.O.OO.O.OO.
.*..*.*..*.*..*.*..*
.^^.^.^^.^.^^.^.^^.^
!....!....!....!....
Tabel 2. Keterangan Simbol Pola Drum
3. Metode dan Perancangan Sistem Metode Pengembangan Sistem
Pada bagian ini akan menjelaskan tentang metode yang digunakan untuk
perancangan sistem, yaitu Prototype Model, dan perancangan penerapan algoritma
genetika dalam proses generator pola drum. Metode yang digunakan untuk
perancangan aplikasi adalah Prototype Model. Prototype Model adalah metode
pengembangan perangkan lunak yang memungkinkan adanya interaksi antara
pengembang sistem dengan pengguna sistem, untuk mengurangi ketidakserasian
antara pengembang dengan pengguna. Bagan prototype model dapat dilihat pada
Gambar 8.
Gambar 8. Bagan Prototype Model [6]
Tahapan penelitian berdasarkan prototype model, dijelaskan sebagai berikut :
1. Listen to Customer
Tahap awal ini merupakan tahap analisis kebutuhan pengguna. Pengguna yang
dijadikan sebagai user adalah Bapak Iwan Santosa, selaku guru les musik drum
pada salah satu lembaga musik Salatiga. Berdasarkan wawancara yang
dilakukan, diperoleh informasi tentang kebutuhan sistem yang diharapkan oleh
user, yang dapat dideskripsikan sebagai berikut : (1) User membutuhkan
aplikasi untuk membuat pola suara drum baru; (2) Pola suara dapat diputar,
sehingga dapat didengarkan untuk latihan; (3) Pola suara memiliki pengaturan
tempo dan nilai ketukan untuk mengatur cepat lambatnya suara yang
terbentuk.; (4) Pola drum yang sudah terbentuk dapat disimpan dengan file
format midi agar dapat diolah kembali.
Simbol Suara
O Bass Drum
* Acoustic Snare
^ Pedal Hit Hat ! Crash Symbal
. Rest
12
2. Build
Tahap selanjutnya adalah perancangan aplikasi dengan menggunakan metode
algoritma genetika untuk membuat pola suara baru. Langkah pertama yang
dilakukan adalah perancangan dengan metode algoritma genetika, perancangan
UML (Unified Modelling Language) mengenai sistem yang- akan dibangun,
perancangan user interface, dilanjutkan dengan pembuatan aplikasi
menggunakan NetBeans IDE 7.0.1.
3. Customer Test
Tahap ini dilakukan dengan melakukan ujicoba aplikasi ke pengguna, yang
bertujuan untuk evaluasi terhadap aplikasi yang dibangun. Proses ini terus
berulang sampai aplikasi sesuai dengan kriteria pengguna.
Analisis Sistem
Dalam tahap ini dilakukan analisis terhadap sistem secara keseluruhan meliputi
analisis input, analisis proses dan analisis output sistem yang dimodelkan dalam
bentuk flowchart pada Gambar 9.
Gambar 9. Flowchart Sistem
Analisis Input
Sistem memiliki beberapa bagian input, yang dijelaskan sebagai berikut :
Kromosom; Kromosom yang digunakan dalam proses algoritma genetika
terdiri dari data String yang berupa simbol–simbol suara instrument drum
(terlihat pada Tabel 2). Jumlah gen di setiap kromosom bergantung pada pola
genre untuk setiap jenis suara yang telah dibuat di dalam sistem. Jika sebuah
pola genre terdiri dari 4 karakter untuk masing–masing suara, maka jumlah gen
pada kromosom adalah 16.
Populasi; Ukuran populasi pada sistem ditentukan berdasarkan input dari user,
dengan tujuan user dapat mencari pola suara baru yang lebih beraneka ragam.
Semakin besar ukuran populasi yang di-input-kan, semakin lama waktu yang
dibutuhkan sistem untuk membuat pola suara drum baru.
Probabilitas Selection; digunakan untuk persentase pengambilan kromosom
yang akan digunakan untuk membuat populasi baru.
Probabilitas Crossover; akan mempengaruhi keanekaragaman kromosom yang
terbentuk karena semakin tinggi persentase kromosom, semakin besar
kemungkinan dilakukan proses crossover pada kromosom.
13
Probabilitas Mutation; akan mempengaruhi persentase kromosom yang
mengalami mutasi dalam populasi. Nilai probabilitas dihitung berdasarkan 1/x
kromosom di mana nilai x akan mempengaruhi jumlah kromosom yang
mengalami mutasi.
Termination; Merupakan batas iterasi sistem untuk mencari pola baru. Iterasi
ini dimaksudkan untuk mencegah proses pembuatan pola suara drum baru
terlalu lama, karena proses evolusi populasi yang terjadi tidak menghasilkan
kromosom yang sesuai.
Tempo; Tempo ditentukan berdasarkan input dari user, untuk mengatur tempo
lagu, pengaturan awal untuk tempo adalah 120 bpm (bars per minute).
Bar; Bar mengatur banyaknya ketukan untuk pola suara yang dibentuk. Bar
yang disediakan hanya 3/4 dan 4/4.
Loop; Loop digunakan jika pola suara drum baru yang dihasilkan ingin
dimainkan berulang kali. Loop pada sistem dibatasi sampai 100 kali.
Analisis Output Output sistem berupa data String yang terdiri dari simbol-simbol suara
instrument drum. Berdasarkan output tersebut, user dapat memainkannya, sehingga
menghasilkan suara instrument drum. Output tersebut juga dapat di-export menjadi
file suara berformat MIDI, sehingga dapat diolah dan dijalankan oleh aplikasi lain.
Penerapan Algoritma Genetika Proses Pembentukan Kromosom
Kromosom yang digunakan merupakan kumpulan array gen yang berupa data
String. String yang digunakan merupakan simbol dari suara instrument drum, seperti
terlihat pada Tabel 2. Karena pola suara drum memiliki lebih dari satu suara, maka
representasi kromosomnya merupakan kumpulan dari array gen. Misalnya untuk
pola suara drum dengan Genre Slow Rock, pola suara disusun seperti terlihat pada
Tabel 3.
Tabel 3. Pola Suara Drum Genre Slow Rock
Index Suara Pola
0 Bass Drum O...OO..
1 Acoustic Snare ..*...*.
2 Pedal Hithat ^^^^^^^^
3 Crash Symbal !.......
Masing–masing index suara pada Tabel 3, akan dimasukkan ke dalam gen.
Index ke–i akan dimasukkan ke dalam gen[i], i = 0…N, dimana N = jumlah suara.
Proses pembentukan kromosom baru untuk pembuatan populasi awal dalam bentuk
flowchart, ditunjukkan pada Gambar 9.
14
Gambar 9. Flowchart Proses Pembentukan Kromosom Awal
Sedangkan proses untuk pembuatan kromosom baru untuk setiap populasinya
dilakukan dengan cara melakukan proses selection, crossover dan mutation terhadap
kromosom dari populasi sebelumnya. Pustaka JGAP yang digunakan pada sistem ini
menggunakan konfigurasi awal untuk melakukan proses tersebut, dijelaskan sebagai
berikut :
Proses selection menggunakan seleksi alam (natural selection) dengan nilai S
(persentase kromosom) sebesar 90%, yaitu mengambil S kromosom terbaik
untuk populasi selanjutnya berdasarkan nilai fitness-nya.
Proses crossover dilakukan dengan menggabungkan gen dari dua buah
kromosom secara acak dari masing–masing kromosom dan
menggabungkannya menjadi kromosom baru. Proses crossover dilakukan
dengan nilai P (probabilitas crossover) sebesar 35% dari populasi.
Proses mutasi dilakukan dengan nilai M (kemungkinan mutasi) sebesar 12,
artinya 1 dari 12 gen pada kromosom akan bermutasi.
Gambar 10 merupakan flowchart untuk pembentukan kromosom baru
berdasarkan proses selection, crossover dan mutasi.
Gambar 10 Flowchart Proses Pembentukan Kromosom Baru
15
Proses Inisialisasi Populasi
Proses pembuatan populasi awal (inisialisasi populasi) dilakukan dengan cara
mengambil kromosom dari pembentukan kromosom awal. Sedangkan proses
pembentukan populasi baru dilakukan dengan cara mengambil kromosom yang
merupakan kromosom dengan nilai fitness tertinggi dari populasi sebelumnya.
Gambar 10 merupakan flowchart proses pembentukan populasi baru, yang dapat
dijelaskan sebagai berikut. Proses dimulai dengan menguji apakah populasi sekarang
merupakan populasi awal, jika populasi awal maka akan dijadikan populasi baru,
dan jika bukan populasi awal maka akan diambil kromosom dengan nilai fitness
tertinggi menjadi populasi baru.
Gambar 10 Proses Pembentukan Populasi Baru
Evaluasi dan Fungsi Fitness
Proses evaluasi nilai fitness pada kromosom dilakukan dengan menggunakan
2 (dua) fungsi, yaitu fungsi count symbol dan fungsi comparing symbol’s position.
Sehingga, untuk mencari nilai fitness keseluruhan, dilakukan dengan mencari nilai
rata–rata dari kedua fungsi.
di mana f adalah nilai fitness keseluruhan.
Fungsi Count Symbol
Fungsi menghitung count symbol digunakan untuk membandingkan jumlah
simbol antara kromosom awal dengan kromosom baru. Kromosom awal sebagai
pembanding awal merupakan pola suara drum dari genre yang ditentukan. Proses
membandingkan 2 (dua) kromosom tersebut, dilakukan pencarian simbol karakter di
setiap pola suara awal dan pola suara baru. Perhitungan jumlah simbol dilakukan
dengan pengecekan setiap karakter pada gen, jika karakter merupakan tanda
istirahat/Rest yang disimbolkan sebagai karakter titik, maka jumlah simbol
bertambah.
Nilai kemiripan dihitung dengan mencari nilai absolute dari selisih antara
jumlah simbol dua kromosom tersebut. Nilai kemiripan tertinggi adalah kromosom
baru yang selisih simbolnya dengan kromosom awal mendekati 0. Sehingga
didapatkan total nilai fungsi fitness adalah :
16
dimana,
f(x), nilai fitness fungsi count symbol,
fi, selisih kromosom awal dengan kromosom baru,
N, jumlah suara instrument pada pola suara.
Proses evaluasi fungsi Count Symbol dalam bentuk flowchart, dapat dilihat
pada Gambar 11.
Gambar 11 Flowchart Fungsi Fitness Count Symbol
Fungsi Comparing Symbol’s Position
Fungsi comparing symbol’s position merupakan fungsi untuk membandingkan
simbol suara bass drum, acoustic snare dan crash symbal. Proses fungsi ini
melakukan perbandingan untuk setiap karakter di gen. Misalkan jika suara bass drum
terletak pada gen ke – 0 dengan panjang gen sebanyak i, maka untuk setiap karakter
ke – i di gen ke – 0 akan dipasangkan dengan suara acoustic snare pada gen ke – 1,
untuk mengecek apakah karakter pada masing–masing suara muncul atau tidak.
Ketentuan perbandingan pada fungsi ini adalah sebagai berikut:
- Jika suara bass drum muncul dan suara acoustic snare tidak muncul maka nilai
fitness fungsi bertambah 1.
- Jika suara bass drum muncul dan suara crash symbal muncul, maka nilai fitness
fungsi bertambah 1.
- Jika suara acoustic snare muncul dan suara crash symbal tidak muncul, maka
nilai fitness fungsi bertambah 1.
- Nilai fungsi fitness diakhiri dengan pembagian nilai fitness terhadap jumlah
simbol suara yang dibandingkan.
Proses fungsi Comparing Position’s Symbol dalam bentuk flowchart, dapat
dilihat pada Gambar 12.
17
Gambar 12 Flowchart Fungsi Comparing Position's Symbol
Kondisi Terminasi
Kondisi terminasi ditandai dengan batas maksimum iterasi. Batas maksimum
ini didapat dari input yang dimasukkan oleh user, setelah mencapai batas maksimum
iterasi, sistem akan mencetak pola suara drum baru, yang diambil dari kromosom
dengan nilai fitness terbaik.
Perancangan Sistem Spesisifikasi Perangkat Lunak dan Perangkat Keras
Spesifikasi perangkat lunak sistem, adalah sebagai berikut : Java SE 6 Update
18; Netbeans IDE 7.0.1 Sebagai software pembantu untuk membuat program dan
desain antar muka; Pustaka JFugue 4.0.2 sebagai pustaka untuk membunyikan musik
String dan melakukan export ke dalam bentuk format file MIDI; Pustaka JGAP 3.6
sebagai pustaka framework untuk pemrogram genetika dan algoritma genetika java.
Spesifikasi perangkat keras sistem adalah sebagai berkut : Intel Core 2 Duo 2.2
GHz; RAM 1.00 GB; HardDisk 160 GB
Use Case Diagram
Rancangan use case diagram pada sistem, ditunjukkan pada Gambar 13.
Buat Pola Suara BaruUser
Export ke MIDI
Main
Berhenti
<<extend>>
<<extend>>
<<extend>>
Gambar 13 Use Case Diagram Sistem
18
Use case diagram sistem pada Gambar 13, menggambarkan interaksi antar
user dengan sistem. Pada sistem ini, user dapat membuat pola suara baru, kemudian
dari suara baru yang telah dibuat, user dapat memainkan, menghentikan dan export
ke format file MIDI.
Class Diagram
Rancangan class diagram pada sistem dapat diuraikan menjadi 2 (dua)
package sebagai berikut.
- Package tools
Gambar 15 Class Diagram Package Tools
ClassGenre merupakan class yang menyimpan genre pola suara drum. Pada
kelas ini terdapat 2 (dua) atribut, yaitu : nama, untuk menyimpan nama genre, dan
pola, untuk menyimpan String pola genre
ClassFitnessValue berfungsi untuk menghitung nilai fitness pada kromosom
dari setiap populasi.Class ini memiliki method : evaluate, methodevaluate berguna
untuk menghitung dan akan mengembalikan nilai berupa nilai fitness; dan
countSimbolPola, method ini digunakan untuk menghitung jumlah simbol yang sama
pada kromosom.
ClassPolaDrums berfungsi untuk memproses algoritma genetika dalam
membuat pola suara drum baru. Class ini terdiri dari method :
- create : methodcreate digunakan untuk mengatur konfigurasi awal pada
algoritma genetika menggunakan pustaka JGAP.
- generate : methodgenerate digunakan untuk evolusi populasi mencari pola
suara baru sampai batas maksimal evolusi.
- outputSolution : methodoutputSolution digunakan untuk mencetak kromosom
terbaik dari populasi.
ClassSoundPlayer berfungsi untuk mengubah musikString menjadi suara
dengan pustaka JFugue.Class ini terdiri dari method :
- setPattern : method yang digunakan untuk men-setpattern musik String untuk
dimainkan.
- playMusic : method ini digunakan untuk memainkan pattern musik String
yang telah di set.
19
- stopPlayer : method ini digunakan untuk menghentikan musik String yang
sedang dimainkan.
- run : method yang di-override jika menggunakan pustaka JFugue untuk
memainkan musik String.
ClassDrumGenerator merupakan userinterface sistem. Userinterface hanya
terdiri dari satu form utama untuk menampilkan pola suara drum baru, dengan field
untuk proses input user seperti populasi, maksimum iterasi, bar, nilai ketukan, dan
genre suara drum.
4. Hasil dan Pembahasan Pembahasan Kode Program
Aplikasi dibuat menggunakan java dengan software NetBeans IDE 7.0.1
dengan JDK 1.6u18.
Kode Program 1 Method Evaluate() Untuk Perhitungan Nilai Fitness
Kode Program 1 menunjukkan kode program method evaluate untuk
perhitungan nilai fitness. Penentuan nilai fitness dengan pustaka JGAP membutuhkan
sebuah class yang merupakan extends dari class FitnessFunction pada pustaka JGAP,
dan class tersebut akan mengimplementasikan method evaluate yang digunakan
untuk menghitung nilai fitness. Baris ke – 2 s/d 7 digunakan untuk menyimpan
kromosom dari populasi ke dalam array String polaBaru. Baris ke – 8 merupakan
perhitungan nilai fitness kromosom yang ditampung di variabel double fitnessValue
dengan memanggil fungsi fitnessCountSymbol dan comparingSymbol untuk
menghitung nilai fitness kromosom. Baris ke – 9 akan mengembalikan nilai fitness
kromosom tersebut. Kode Program 2 Pembuatan Pola Suara Drum
Kode Progam 2 merupakan method untuk membuat pola suara baru. Baris ke
– 2 dan 3 adalah pembentukan populasi awal sesuai dengan ukuran populasi yang
telah ditentukan. Baris ke – 4 merupakan proses pembentukan populasi dengan
memanggil method evaluate() yang memiliki parameter maxEvolve sebagai batas
maksimum evolusi. Kemudian, kromosom terbaik akan ditampung ke dalam String
_str yang didapatkan dengan memanggil method outputSolution.
1. public String generate(int popSize, int maxEvolve)