Generator Pola Drum Menggunakan Algoritma Genetika

advertisement
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
6
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 perkembangbiakan 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
7
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.
8
-
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
9
Setelah meng-extends class FitnessFunction, class tersebut wajib mengoverridemethodevaluate() 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
Pola
O...OO..
..*...*.
^^^^^^^^
!.......
Genre
Slow Rock
O.O..O
...*..
^^^^^^
!.....
Chacha
10
Waltz
Disco House
Hard rock
O..O..O..
.**.**.**
^^^^^^^^^
!........
O...O...O...O...
..*...*...*...*.
.^.^.^.^.^.^.^.^
!.......!.......
O.OO.O.OO.O.OO.O.OO.
.*..*.*..*.*..*.*..*
.^^.^.^^.^.^^.^.^^.^
!....!....!....!....
Tabel 2. Keterangan Simbol Pola Drum
Simbol
O
*
^
!
.
Suara
Bass Drum
Acoustic Snare
Pedal Hit Hat
Crash Symbal
Rest
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]
1.
Tahapan penelitian berdasarkan prototype model, dijelaskan sebagai berikut :
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.
11
2.
3.
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.
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.
12





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
Suara
Pola
Index
O...OO..
0
Bass Drum
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.
13
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
14
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 :
15
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.
16
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.
Export ke MIDI
<<extend>>
<<extend>>
User
Buat Pola Suara Baru
<<extend>>
Main
Berhenti
Gambar 13 Use Case Diagram Sistem
17
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.
18
-
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
1.
2.
3.
protected double evaluate(IChromosome ic) {
String[] polaBaru = new String[4];
//0 = bass drum, 1 = acoustic snare, 2 = pedal
hithat, 3 = crash symbal
4.
polaBaru[0] = (String) ic.getGene(0).getAllele();
5.
polaBaru[1] = (String) ic.getGene(1).getAllele();
6.
polaBaru[2] = (String) ic.getGene(2).getAllele();
7.
polaBaru[3] = (String) ic.getGene(3).getAllele();
8.
fitnessValue = (fitnessCountSymbol(polaBaru) +
comparingSymbol(polaBaru)) / 2;
9.
return fitnessValue;
10. }
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
1.
2.
3.
4.
5.
6.
7.
public String generate(int popSize, int maxEvolve)
throws InvalidConfigurationException {
Genotype population;
population = create(popSize);
population.evolve(maxEvolve);
String _str = outputSolution(population);
return _str;
}
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.
19
Kode Program 3 Konfigurasi Parameter Algoritma Genetika pada JGAP
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
private Genotype create(int popSize) throws
InvalidConfigurationException {
Configuration.reset();
Configuration conf = new Configuration();
conf.setBreeder(new GABreeder());
conf.setRandomGenerator(new StockRandomGenerator());
conf.setEventManager(new EventManager());
BestChromosomesSelector bestChromsSelector = new
BestChromosomesSelector(conf, 0.90d);
bestChromsSelector.setDoubletteChromosomesAllowed(true);
conf.addNaturalSelector(bestChromsSelector, false);
conf.setMinimumPopSizePercent(0);
conf.setSelectFromPrevGen(1.0d);
conf.setKeepPopulationSizeConstant(true);
conf.setFitnessEvaluator(new DefaultFitnessEvaluator());
conf.setChromosomePool(new ChromosomePool());
conf.addGeneticOperator(new CrossoverOperator(conf,
crossOverRate));
conf.addGeneticOperator(new MutationOperator(conf,
mutationRate));
17.
FitnessFunction myFunc = new FitnessValue(pola);
18.
19.
conf.setFitnessFunction(myFunc);
Gene[] stringGene1 = new Gene[4];
20.
stringGene1[0] = new StringGene(conf,
pola[0].length(), pola[0]);
21.
stringGene1[1] = new StringGene(conf,
pola[1].length(), pola[1]);
22.
stringGene1[2] = new StringGene(conf,
pola[2].length(), pola[2]);
23.
stringGene1[3] = new StringGene(conf,
pola[3].length(), pola[3]);
24.
25.
26.
27.
28.
29.
pola[0].length(),
pola[1].length(),
pola[2].length(),
pola[3].length(),
IChromosome sampleChromosome1 = new Chromosome(conf,
stringGene1);
conf.setSampleChromosome(sampleChromosome1);
conf.setPopulationSize(popSize);
Genotype population =
Genotype.randomInitialGenotype(conf);
return population;
}
Kode Program 3 menunjukkan konfigurasi parameter Algoritma Genetika
pada JGAP. Secara umum, JGAP menyediakan konfigurasi default dengan membuat
instance dari class DefaultConfiguration(). Namun, JGAP juga menyediakan
kemampuan untuk membuat konfigurasi manual agar parameter Algoritma Genetika
bersifat dinamis dengan membuat instance dari class Configuration. Baris ke – 7 s/d
9 merupakan konfigurasi untuk proses selection pada kromosom. Objek dari class
BestChromosomesSelector akan mengatur persentase banyaknya kromosom yang
akan diambil dari populasi. Baris ke – 8 adalah pengaturan untuk kromosom yang
digunakan, jika bernilai true, maka kromosom yang sama diperbolehkan untuk
ditambahkan ke dalam populasi. Baris ke – 9 menambahkan natural selection pada
konfigurasi JGAP.
Kode Program 4 Proses Export Pola Suara ke File MIDI
1.
Player player = new Player();
2.
player.saveMidi(soundPlayer.pattern, file);
Kode Program 4 merupakan cara untuk meng-export pola suara menjadi file
MIDI. Jfugue menyediakan fungsi untuk melakukan proses tersebut dengan
memanggil method saveMidi dari class Player. Method ini membutuhkan parameter
berupa pattern dari pola suara dan file tujuannya.
20
Pengujian Sistem Berdasarkan Parameter Algoritma Genetika untuk
Pembuatan Pola Baru
Pengujian sistem dilakukan terhadap beberapa parameter algoritma genetika
untuk melihat pengaruhnya terhadap pola suara drum hasil generate.
Uji Coba Parameter Population Size.
Pengujian dilakukan sebanyak 30 kali ke setiap populasi yang diuji dengan
menghitung rata–rata nilai fitness yang dihasilkan. Adapun pengujian dilakukan
dengan nilai parameter population size berbeda–beda, sedangkan parameter lainnya
tetap, agar dapat dilihat perbedaan yang terjadi. Parameter lainnya berisikan data
sebagai berikut : (1) Genre Slow Rock; (2) Maksimum evolusi sebesar 10; (3)
Natural selection rate sebesar 90%; (4) Crossover rate sebesar 35%; (5)Mutation
rate sebesar 1/12.
Pengujian dilakukan sebanyak 3 kali dengan population size masing–masing
1, 10 dan 100. Hasil uji coba parameter disajikan pada Tabel 4.
Data Ke 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Total
Rata–rata
Tabel 4 Pengujian Population Size Sebesar 1, 10 dan 100
Persentase Nilai Fitness
Population Size 1
Population Size 10
Population Size 100
78.125
100
100
53.125
98.4375
100
68.75
100
100
98.4375
98.4375
100
93.75
100
100
65.9375
100
100
87.5
100
100
87.5
100
100
87.5
98.4375
100
98.4375
98.4375
100
79.4642
92.1875
100
77.9017
93.75
100
79.0625
98.4375
100
92.1875
95.3125
100
73.2142
95.3125
100
64.0625
93.75
100
89.0625
100
100
87.5
93.75
100
98.4375
93.75
100
79.6875
100
100
75.3125
100
100
85.9375
98.4375
100
75.0
98.4375
100
81.25
95.3125
100
67.1875
100
100
76.3888
98.4375
100
93.75
100
100
66.8402
95.3125
100
72.3958
100
100
84.1517
98.4375
100
2417.857
2934.375
3000
80.59522
97.8125
100
Berdasarkan hasil pengujian pada Tabel 4, didapatkan hasil rata–rata fitness
dengan population size 1 sebesar 80.59522, population size 10 sebesar 97.8125,
population size 100 sebesar 100, dan dapat disimpulkan bahwa semakin besar nilai
population size, semakin besar kemungkinan nilai fitness optimum.
Uji Coba Parameter Maksimum Evolusi
Pengujian Parameter Maksimum Evolusi dilakukan sebanyak 30 kali ke
setiap populasi yang diuji, dengan menghitung rata–rata nilai fitness yang dihasilkan.
Adapun pengujian dilakukan dengan nilai parameter maksimum evolusi yang
berbeda-beda, sedangkan parameter lainnya tetap agar dapat dilihat perbedaan yang
terjadi. Parameter lainnya berisi data sebagai berikut : (1) Genre Slow Rock; (2)
21
Population size sebesar 10; (3)Natural selection rate sebesar 90%; (4)Crossover rate
sebesar 35%; (5)Mutation rate sebesar 1/12.
Pengujian dilakukan sebanyak 3 kali dengan maksimum evolusi masing–
masing 1, 10 dan 100. Hasil uji coba parameter Maksimum Evolusi disajikan pada
Tabel 5.
Data Ke 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Total
Rata – rata
Tabel 5 Pengujian Maksimum Evolusi Sebesar 1, 10 dan 100
Persentase Nilai Fitness
Maks. Evolusi 1
Maks. Evolusi 10
Maks. Evolusi 100
82.8125
95.3125
100
89.0625
100
100
93.75
92.1875
100
93.75
100
100
92.1875
98.4375
100
89.0625
100
100
92.1875
98.4375
100
93.75
93.75
100
92.1875
100
100
93.75
95.3125
100
86.6071
100
100
93.75
100
100
87.5
100
100
88.4375
98.4375
100
98.4375
98.4375
100
98.4375
93.75
100
95.3125
100
100
95.3125
100
100
92.1875
100
100
98.4375
100
100
89.0625
93.75
100
93.75
98.4375
100
92.1875
100
100
92.1875
100
100
100
98.4375
100
89.0625
95.3125
100
89.0625
93.75
100
92.1875
100
100
91.6666
98.4375
100
85.9375
89.0625
100
2762.024
2931.25
3000
92.0674
97.7083
100
Berdasarkan hasil pengujian pada Tabel 5 didapatkan hasil rata–rata fitness
dengan maksimum evolusi 1 sebesar 92.0674, maksimum evolusi 10 sebesar
97.7083, maksimum evolusi 100 sebesar 100, dan dapat disimpulkan bahwa semakin
besar nilai maksimum populasi, semakin besar kemungkinan nilai fitness optimum.
Uji Coba Parameter Crossover Rate
Pengujian Parameter Crossover Rate dilakukan sebanyak 30 kali ke setiap
populasi yang diuji dengan menghitung rata–rata nilai fitness yang dihasilkan.
Adapun pengujian dilakukan dengan nilai parameter crossover rate yang berbedabeda, sedangkan parameter lainnya tetap agar dapat dilihat perbedaan yang terjadi.
Parameter lainnya berisikan data sebagai berikut : (1) Genre Slow Rock; (2)
Population size sebesar 10; (3) Maksimum evolusi sebesar 10%; (4) Natural
selection rate sebesar 90%; (5) Mutation rate sebesar 1/12.
Pengujian dilakukan sebanyak 3 kali dengan crossover rate masing–masing
0.1, 0.5 dan 1. Hasil uji coba parameter disajikan pada Tabel 7.
Tabel 7 Pengujian Maksimum Crossover Rate 0.1, 0.5 dan 1
Data Ke Persentase Nilai Fitness
Crossover Rate
Crossover Rate 0.5
Crossover Rate 1
0.1
1
95.3125
98.4375
100
2
98.4375
100
100
22
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Total
Rata – rata
98.4375
92.1875
95.3125
98.4375
95.3125
93.75
93.75
93.75
100
100
100
100
93.75
100
100
92.1875
95.3125
93.75
100
98.4375
100
100
93.75
95.3125
95.3125
100
93.75
98.4375
2904.688
96.82292
100
87.5
100
95.3125
100
95.3125
100
100
100
93.75
92.1875
100
93.75
100
100
100
100
100
95.3125
100
100
98.4375
95.3125
98.4375
98.4375
98.4375
100
98.4375
2939.063
97.96875
100
100
93.75
95.3125
95.3125
100
95.3125
100
93.75
100
98.4375
98.4375
100
100
93.75
100
100
100
95.3125
95.3125
93.75
93.75
100
100
93.75
98.4375
95.3125
89.0625
2918.75
97.29167
Berdasarkan hasil pengujian pada Tabel 7 didapatkan hasil rata–rata fitness
dengan crossover rate 0.1 sebesar 96.8229, crossover rate 0.5 sebesar 97.96875,
crossover rate 1 sebesar 97.29167, dan dapat disimpulkan bahwa nilai fitness tidak
bergantung pada nilai crossover rate.
Pengujian File Output Generator
Pengujian dilakukan pada hasil export MIDI dengan cara membandingkan pola
hasil generate sistem dengan drum setelah dibuka di dalam editor musik drum
lainnya. Gambar 22 menunjukkan hasil generate pola drum oleh sistem.
Gambar 22 Contoh Hasil Generate Pola Drum Oleh Sistem dan Log
Kemudian dibuka file hasil export MIDI di dalam aplikasi lain yaitu dibuka
file hasil export MIDI di dalam software lain yaitu Fruty Loops 9 yang hasilnya
dapat dilihat pada Gambar 23.
23
Gambar 23 Hasil Export MIDI Dibuka Di Aplikasi FL 9
Gambar 23 menunjukkan bahwa file drum MIDI hasil export sistem dapat
dibuka dengan baik oleh aplikasi Fruty Loop 9.
Hasil Wawancara Pengujian Aplikasi
Berdasarkan hasil pengujian aplikasi Generator Pola Drum sesuai dengan
wawancara terhadap bapak Iwan Santosa, diperoleh hasil yang sangat memuaskan.
Menurut beliau, aplikasi ini dapat di pakai untuk mengajar sesuai kebutuhan
pengajar dan dapat digunakan untuk membuat pola lagu baru sesuai kriteria lagu
berdasarkan genre lagu yang telah disediakan diaplikasi ini serta dapat
menghasilkan output file berupa data file midi agar dapat disimpan serta diolah lagi.
5.
Simpulan
Berdasarkan hasil pembuatan, pembahasan, dan pengujian aplikasi Generator
Pola Drum, dapat disimpulkan bahwa penerapan algoritma genetika dapat
menghasilkan output berupa teknik pembuatan pola suara drum sesuai genre
musiknya. Aplikasi yang dibangun dapat membantu para musisi, composer, arranger
serta orang yang berkecimpung di dunia industri musik agar dapat membuat pola
musik drum dengan mudah dan praktis. Saran dan pengembangan aplikasi Algoritma
Genetika ini adalah penambahan sub fungsi fitness yang lebih bervariatif, sehingga
dihasilkan warna pola drum yang baru sesuai dengan selera secara spesifik untuk
genre yang dipilih.
6.
[1].
[2].
[3].
[4].
[5].
[6].
Daftar Pustaka
Pakereng, M. A. Ineke, 2007, Kriptosistem Menggunakan Algoritma
Genetika Pada Data Citra, Yogyakarta: Thesis. Universitas Gadjah Mada.
Nugroho dkk, Andi, 2009. Generator Melodi Berdasarkan Skala dan Akord
Menggunakan Algoritma Genetika, Jurnal Informatika, Vol 5, No 1, Juni
2009: 15 – 29.
Koelle, David, 2010. Java API for Music Programming,
http://www.jfugue.org/. Diakses tanggal 4 April 2012.
Suyanto, 2005, Algoritma Genetika dalam Matlab, Yogyakarta: ANDI
OFFSET.
Smith, Instruments, Dave, 2009. About Dave Smith Instruments,
http://www.davesmithinstruments.com/about/index.php. Diakses tanggal 4
April 2012.
Pressman, Roger S., 2001. Software Engineering a Practitioner’s Approach,
New York : McGraw-Hill Higher Education.
24
Download