Bab 3 ANALISIS DAN PERANCANGAN
3.1 Analisis Image atau gambar selama ini dihasilkan oleh manusia dengan cara menggambar pada sebuah media. Baik media itu kertas, kanvas maupun melalui perangkat lunak komputer. Begitu juga dengan komposisi musik yang dihasilkan melalui kreativitas manusia. Manusia akan memanfaatkan semua kreativitasnya untuk menghasilkan komposisi musik. Pada perangkat lunak yang diteliti gambar fraktal dibuat Algoritma yang banyak digunakan adalah algoritma Iterated Function System atau IFS. Sedangkan komposisi musik akan dihasilkan dengan memanfaatkan kordinat titik-titik yang ada pada gambar fraktal yang dihasilkan perangkat lunak untuk kemudian dikonversi dengan metode yang dipilih user.
3.1.1 Metode Algoritma Iterated Function System Metode Iterated Function Systems atau IFS adalah metode pembentukan fraktal dengan mengulang perhitungan dalam jumlah besar dari formula yang sederhana. Formula ini berupa fungsi linier afin dengan titik awal yang digunakan dalam perhitungan dipilih secara acak dari himpunan titik yang telah ada. Titik hasil perhitungan fungsi tersebut akan menjadi titik masukan baru untuk perhitungan fungsi pada iterasi yang berikutnya. IFS merupakan kumpulan dari N buah transformasi afin Ti, untuk i = 1, 2, …, N. Cara kerja IFS adalah dengan menggantikan poligon dengan poligon lainnya yang sebelumnya sudah dideskripsikan. Pada dasarnya, struktur fraktal IFS dibentuk oleh himpunan fungsi-fungsi linier afin yang menghitung semua transformasinya titik demi titik, berdasarkan
32
33 kombinasi operasi translasi (translation) dan rotasi (rotation). Setiap transformasi menggunakan setidaknya dua buah fungsi untuk mengubah koordinat (xn, yn) dari suatu titik ke koordinat titik baru (xn+1, yn+1 ), yaitu:
(1) atau xn+1 = axn + byn + e yn+1 = cxn + dyn + f
(2)
Untuk menggambar fraktal IFS tiga dimensi, dibutuhkan paling sedikit tiga fungsi afin. Masing-masing koesifien dalam fungsi afin mendefinisikan suatu matriks dan konstantanya merupakan sebuah vektor. Umumnya, transformasi afin mencakup kombinasi linier dari rotasi, translasi, skala (perbesaran dan reduksi ukuran) atau kompresi linier, dan pemotongan (shear) atau perubahan sudut. Transformasi-transformasi tersebut mengkonversi suatu bentuk geometri ke bentuk lainnya dengan melakukan translasi, rotasi, streching, atau shrinking. Transformasi afin dapat didefinisikan dengan pola rumus: T(x,y) = (ax + by + e , cx + dy + f)
(3)
Simbol a, b, c, d, e, f merupakan konstanta. Untuk membuat fraktal dengan metode IFS, dibutuhkan parameter-parameter yang menjadi konstanta dalam iterasi fungsi transformasi afin yang digunakan. Penentuan banyaknya fungsi transformasi afin yang akan digunakan serta pemberian nilai parameter konstanta yang berbeda-beda akan menghasilkan bentuk objek fraktal yang berbeda-beda pula.
34 Pada metode IFS dengan pendekatan supercopier, satu set fungsi transformasi afin dipetakan berdasarkan koefisien transformasi afinnya, yang kemudian diiterasi secara berulang kali menggunakan algoritma iterasi acak untuk menghasilkan attractor dengan karakteristik fraktal. Dengan pendekatan ini, setiap fungsi transformasi pemetaan, titiknya dipetakan sekaligus. Barnsley menyatakan bahwa pada metode IFS, setiap fungsi pemetaan afin mengurangi ukuran dari citra yang dihasilkan sebelumnya, yang menjadi attractor dari IFS. Untuk lebih jelasnya, digunakan algoritma dalam bentuk pseudocode berikut: //menggambar iterasi ke-k dari input list titik pts untuk IFS
void superCopier(RealPolyArray pts, int k){ //menyediakan tempat untuk list titik yang baru
int i; //mengaplikasikan setiap fungsi afin
RealPolyArray newpts; if(k == 0) drawPoints(pts); //ukuran list menjadi sangat besar
else for(i = 1; i <= N; i++){ //mentransformasi pt ke- j
newpts.num = N * pts.num; for(j = 0; j < newpts.num; j++){ transform(affines[i], pts.pt[j], newpts.pt[j]); } superCopier(newpts, k – 1); } } Pada penerapan algoritma ini, tiap nilai dari tiap titik hasil operasi dari setiap set fungsi transformasi afin yang akan dipetakan disimpan di dalam suatu array. Tiap operasi rekursif yang aktif menyimpan semua rincian nilai titik hasil operasi di dalam sebuah stack. Oleh karena itu dibutuhkan memori komputer untuk menampung perhitungan titik sebanyak nk. Dimana k adalah jumlah iterasinya. Hal ini menjadi masalah karena jumlah iterasi mencapai ratusan kali hanya untuk menggambar sebagian kecil dari gambar fraktal. IFS dengan Chaos Game menggunakan nilai probabilitas pr dalam memilih salah satu fungsi afin tertentu untuk melakukan pemetaan terhadap attractor-nya. Sehingga dengan titik
35 awal (starting point) yang berbeda dan nilai probabilitas untuk setiap fungsi transformasi afin yang dimasukkan akan menghasilkan gambar fraktal yang sama. Penentuan besar nilai-nilai probabilitas dari masing-masing fungsi berada dalam interval 0 < pr < 1, dan semua nilai probabilitas yang digunakan harus berjumlah 1.
Gambar 3.1 Pakis Fraktal dengan IFS Sebagai contoh digunakan Gambar 3.1 untuk memperjelas penggunaan chaos game. Titik pertama digambarkan pada titik awal (x0=0, y0=0) dan titik baru di hitung secara berulang dengan menggunakan salah satu dari transformasi koordinat dibawah ini secara acak: xn+1=0 yn+1=0.16yn Transformasi koordinat ini dipilih 1% dari seluruh waktu dan memindahkan posisi sebuah titik dalam segmen garis yang ditunjukkan dengan warna hijau pada gambar. Transformasi ini menggambar batang dari pakis fraktal ini. xn+1=0.2xn-0.26yn yn+1=0.23xn+0.22yn+1.6
36 Transformasi koordinat ini dipilih sebanyak 7% dari seluruh waktu dan memindahkan posisi semua titik di dalam kotak hitam ke dalam kotak merah pada gambar. Transformasi ini menggambar cabang pakis pada bagian kiri bawah. xn+1=-0.15xn+0.28yn yn+1=0.26xn+0.24yn+0.44 Transformasi koordinat ini digunakan sebanyak 7% dari seluruh waktu dan memindahkan posisi semua titik di dalam kotak hitam ke dalam kotak biru tua pada gambar. Transformasi ini menggambar cabang pakis pada bagian kanan bawah. xn+1=0.85xn+0.04yn yn+1=-0.04xn+0.85yn+1.6 Transformasi koordinat ini digunakan sebanyak 85% dari seluruh waktu dan memindahkan posisi semua titik di dalam kotak hitam ke dalam kotak biru muda pada gambar. Transformasi ini menggambarkan sisa pakis. Bentuk rekursif IFS memastikan bahwa tiap cabang merupakan replika dari gambar keseluruhan pakis. Algoritma Iterasi Acak dengan IFS, dalam bentuk pseudocode adalah: //menentukan titik inisial
void chaosGame(Affine aff[], double pr[], int N){ RealPoint P = {0.0, 0.0); int indeks; //memilih fungsi afin berikutnya
do{ indeks = chooseAffine(pr, N); P = transform(aff[indeks]), P); //melukis titiknya
DrawRealDot(P); }while(!bored); } Dengan pendekatan ini, titik hasil transformasi langsung dipetakan atau digambarkan pada koordinat x dan y, tanpa menyimpan terlebih dahulu ke dalam stack. Sebagai contoh, fraktal Fern, dengan empat buah fungsi transformasi afin tersebut di atas, dapat dibentuk
37 dengan menggunakan Chaos Game, dengan nilai probabilitas yang digunakan adalah sebagai berikut: pr1 = 0.01, pr2 = 0.07, pr3 = 0.07, dan pr4 = 0.85
3.1.2 Musik Fraktal Cara komposisi musik fraktal memiliki cara yang hampir sama dengan cara membuat gambar fraktal. Pada musik fraktal, not musik yang dihasilkan adalah hasil perulangan perhitungan persamaan fungsi fraktal. Tiap algoritma komposisi akan memanggil array dari nada-nada MIDI yang merepresentasikan tiga oktaf dan empat macam tempo. Sebuah nilai counter bernilai minimal 0 dan maksimal 3 digunakan untuk menjaga agar nada yang dihasilkan lebih indah karena nada yang digunakan akan berada dalam satu buah chord. Pergantian chord hanya terjadi pada nilai counter 0. Array pertama digunakan untuk membatasi pemilihan nada yang akan dihasilkan, sehingga algoritma pemilihan nada hanya perlu diaplikasikan ketika array diisi. Pada software cakupan nada hanya sebesar tiga oktaf atau 37 nada. Kemudian digunakan 5 macam pola chord untuk menjaga agar nada tidak beraturan, yaitu chord mayor, chord minor, chord mayor ke 7, chord minor ke 7 dan chord ke 7. Masing-masing chord akan berisi nilai nada yang digunakan. Yaitu sebanyak 9 nada untuk chord mayor dan minor, serta 12 nada untuk chord mayor ke 7, ke minor ke 7 dan chord ke 7. untuk ini digunakan sebuah array 2 dimensi [a][b] dengan nilai [5][12]. Kemudian array ketiga digunakan untuk menentukan panjang ketukan dari sebuah nada. Array ini sebanyak 4 buah.
38
3.1.2.1 Metode Modulus Metode modulus menerapkan konsep sisa hasil bagi. Pada metode ini, nilai X yang didapat dari setiap iterasi dimodulus dengan 12 utuk menentukan nada dasar chord yang akan digunakan, kemudian X dimodulus lagi dengan 5 yang melambangkan jenis chord yang digunakan. Apabila X bernilai < 2, X akan dimodulus dengan 9. Apabila bernilai > dari 1, X akan dimodulus dengan 12. Lebih jelasnya akan dijelaskan pada pseudocode berikut ini. void musik(int x, int n){ //definisi variable int chord, nilaiNada[5][12]; int jenChord, polaChord, nada,counter; char CMaj[37]; counter = 0; for(i=0;i
3)counter=0; //jika nilai counter = 0, ganti chord if(counter==0)chord = x mod 12; //penentuan nilaiNada jenChord = x mod 5; //jika < 2 berarti pola chord mayor dan chord minor if(jenChord<2)polaChord = x mod 9; //selain itu pola chord mayor ke 7, minor ke 7 dan mayor minor else polaChord = x mod 12; //penentuan nada nada = chord + nilaiNada[jenChord][polaChord]; if(nada>36)nada=nada-37; //panggil nada tulisNada(CMaj[nada]); //tambah nilai counter counter++; } } Nilai sumbu Y, yang merupakan pasangan setiap nilai X, digunakan sebagai pemberi nilai ketukan untuk setiap nada yang dibangkitkan nilai X di atas. Nilai ketukan didapat
39 dengan cara mencari nilai sisa hasil bagi (modulus) nilai Y tersebut dengan nilai empat, sebagai batas maksimum panjang array nilai ketukan.
3.1.2.2 Metode Normalisasi Metode normalisasi menerapkan proses normalisasi terhadap nilai X
dan dari
koordinatnya menjadi nilai indeks penentuan array nada-nya, dengan rumus: NormalisasiX = (x-xMin)/(xMax-xMin) NormalisasiY = (y-yMin)/(yMax-yMin)
3.2 Perancangan Komponen Aplikasi generator gambar dan musik fraktal ini akan menggunakan metode algoritma iterated function system dengan menggunakan chaos game. Aplikasi ini dibuat dalam dua komponen utama. Komponen pertama adalah komponen New Fractal Music yang berfungsi untuk membuat file musik fraktal dan komponen Existing Fractal Music untuk membuka dan menyunting file musik fraktal yang sudah ada.
3.2.1 Unit New Fraktal Music Komponen ini berupa form yang digunakan untuk membuat file musik fraktal yang baru, dan dapat diakses dengan cara memilih New dari menu File. Unit ini akan meminta sejumlah input dari user. User harus memilih jenis fraktal IFS yang akan digunakan sebagai dasar pembuatan musik fraktal, metode konversi dari geometri fraktal ke musik fraktal, pemasukan nilai x0 dan y0 sebagai titik awal inisialisasi iterasi, jumlah iterasi, jumlah nada, dan juga dari nada ke berapa musik yang ingin dimainkan. Selain itu, unit ini memungkinkan
40 user untuk membuat fraktal IFS yang baru, selain yang sudah ada dalam tabel formula IFS. Input dari user akan diubah menjadi koordinat geometri fraktal dengan menggunakan metode algoritma IFS. Koordinat ini digunakan untuk menggambar geometri fraktal dan dikonversi menjadi urutan nada musik fraktal.
3.2.2 Unit Existing Fraktal Music Komponen ini digunakan untuk membuka file musik fraktal, dan memungkinkan user untuk melakukan penyuntingan nilai parameter dari data musik fraktal yang sudah ada. Unit ini dapat diakses dengan cara memilih Open dari menu File. Perancangan komponen ini terdiri atas keterangan tentang jenis fraktal IFS yang digunakan oleh file musik fraktal yang bersangkutan beserta informasi lainnya yang berisi nilai parameternya, serta dapat mengganti nilai parameter x0 dan y0-nya dengan nilai yang baru jika ingin melakukan penyuntingan. Dengan nilai parameter yang baru, musik fraktal yang dihasilkan kemudian mungkin akan berbeda dari musik fraktal asalnya.
3.2.3 Perancangan Database Pada perangkat lunak ini digunakan tiga buah tabel database. Tabel 3.1 merupakan tabel database pertama. Tabel IFS digunakan untuk menyimpan nama dan formula fraktal IFS. Field Name KodeIFS NamaIFS JumlahTransformasi
Data Type Text Text Number Tabel 3.1 Tabel IFS
Field Size 50 50 Integer
41 Tabel 3.2 adalah tabel database kedua. Tabel attractor digunakan untuk menyimpan nilai attractor dari IFS. Field Name KodeIFS A B C D E F Probabilitas
Data Type Field Size Text 50 Number Double Number Double Number Double Number Double Number Double Number Double Number Double Tabel 3.2 Tabel attractor Tabel 3.3 adalah tabel database ketiga. Tabel parameter digunakan untuk menyimpan data dan nilai parameter musik fraktal. Field Name ID NamaFile KodeIFS X0 Y0 Xmin Xmax Ymin Ymax Iterasi Jml_Nada Metode Nada Tempo
Data Type Field Size AutoNumber Long Integer Text 20 Text 50 Number Long Integer Number Long Integer Number Long Integer Number Long Integer Number Long Integer Number Long Integer Number Long Integer Number Long Integer Text 12 Text 10 Text 10 Tabel 3.3 Tabel parameter
42
3.2.4 State Transition Diagram Berikut ini akan diberikan gambaran rinci mengenai proses yang dapat terjadi pada saat masing-masing menu dan unit pada perangkat lunak generator gambar dan musik fraktal.
3.2.4.1 Menu Utama
Gambar 3.2 STD Menu Utama User dapat memilih untuk membuka menu File, menu Play, Show dan menu Help dengan cara mengklik pada modul. Jika user mengklik pada sembarang titik, user kembali ke menu utama. Gambar 3.2 menggambarkan STD Menu Utama
43
3.2.4.2 Menu File
Gambar 3.3 STD Menu File
44 Gambar 3.3 menggambarkan STD Menu file. Pada menu file, user dapat memilih untuk membuat musik fraktal baru dengan memilih submenu new, membuka file fraktal yang sudah ada dengan memilih submenu open, menyimpan file musik fraktal yang ada dengan submenu save maupun submenu save as, menutup file fraktal dengan memilih submenu close dan menutup perangkat lunak dengan memilih submenu exit.
3.2.4.3 Menu Play Gambar 3.4 menunjukkan STD menu play, Pada menu play, user dapat memulai musik fraktal dengan memilih submenu play dan menghentikan musik fraktal dengan memilih submenu stop.
Gambar 3.4 STD Menu Play
45
3.2.4.4 Menu Show
Gambar 3.5 STD Menu Show Gambar 3.5 menunjukkan STD menu show. Pada menu show, user dapat menampilkan gambar fraktal dengan memilih submenu fraktal geometry dan dapat menampilkan script dengan memilih submenu script.
46
3.2.4.5 Menu Help Gambar 3.6 menunjukkan STD dari menu Help. Pada menu help, user dapat membuka petunjuk penggunaan perangkat lunak dengan memilih submenu Getting Started
Gambar 3.6 STD Menu Help
47
3.2.4.6 Unit New Fractal Music Pada unit new fractal music, tabsheet pertama yang ditampilkan adalah IFS Formulas. Pada tabsheet ini, user dapat menambahkan sebuah formula IFS dengan mengklik Add dan akan menampilkan form Add IFS dimana user dapat membuat formula IFS baru dan menyimpan formula IFS baru tersebut. User juga dapat mengklik Remove untuk menghapus formula IFS yang tidak diinginkan. User dapat mengklik next untuk beralih ke tabsheet kedua. Tabsheet kedua adalah Tabsheet Conversion Methods. Pada tabsheet ini user dapat memilih radio button metode konversi. User dapat mengklik next untuk beralih ke tabsheet ketiga atau mengklik back untuk kembali ke tabsheet pertama Tabsheet ketiga adalah Tabsheet Composing fraktal musik. Pada tabsheet ini user memilih parameter untuk gambar dan musik fraktal. User dapat mereset parameter dengan mengklik reset. User dapat mengklik back untuk kembali ke tabsheet kedua atau mengklik generate untuk menghasilkan gambar dan musik fraktal. STD unit New Fractal Music digambarkan pada Gambar 3.7 pada halaman berikutnya.
48
Gambar 3.7 STD Unit New Fractal Music
49
3.2.4.7 Unit Existing Fractal Music Kembali ke menu utama
Menu Utama Setelah user memilih modul menu File
Menu File
Klik di Sembarang Titik
Setelah user memilih Submenu Open
Submenu Open Pilih file musik fraktal yang akan dibuka
Open Dialog Box
Klik Close atau Cancel
Klik Yes Membuka file musik fraktal yang dipilih
Form Existing Fractal Music
Klik Close atau Cancel
Klik Edit Nilai parameter dalam form dapat diedit
Form Existing Fractal Music (Editing Mode)
Klik Close atau Cancel
Klik Try Membangkitkan musik fraktal
Terdengar musik fraktal dari Speaker
Gambar 3.8 STD Unit Existing Fractal Music Gambar 3.8 menunjukkan STD Unit Existing Fractal Music. Pada unit Existing Fraktal Music, user memilih file musik yang akan di buka, kemudian user dapat mengubah parameter musik fraktal dengan mengklik edit. Terakhir user dapat memainkan musik fraktal yang sudah di ubah dengan mengklik try.
50
3.2.5 Rancangan Layar Pada saat pertama kali user membuka perangkat lunak, akan ditampilkan sebuah Multiple Document Interface (MDI) form yang terdiri dari menu bar yang mencakup menu File, Play, Show dan Help. Kemudian sebuah tool bar yang mencakup icon untuk new file, open file, save file, play music, stop music, dan show geometry fraktal. Serta sebuah working area tempat dimana form-form akan ditampilkan. Rancangan layar MDI form ditunjukkan pada Gambar 3.9.
Gambar 3.9 MDI form Pada saat user membuat file fraktal baru akan ditampilkan tabsheet IFS formulas. Pada Gambar 3.10 ditunjukkan rancangan tabsheet dimana user dapat memilih formula IFS yang sudah ada atau membuat formula IFS yang baru. Kemudian user memilih next untuk menampilkan tabsheet kedua.
51
Gambar 3.10 Tabsheet IFS Formulas Pada Gambar 3.11 digambarkan rancangan form new IFS. Form ini ditampilkan apabila user memilih untuk membuat formula IFS yang baru, akan ditampilkan Form new IFS dimana user dapat menentukan parameter A, B, C, D, E, F serta nilai probabilitasnya. Total penjumlahan nilai probabilitas harus sama dengan 1.
Gambar 3.11 Form New IFS
52 Gambar 3.12 merupakan rancangan layar tabsheet kedua, yaitu tabsheet conversion methods, user memilih metode konversi dengan memilih satu diantara dua radio button. Kemudian user mengklik next untuk pindah ke tabsheet berikutnya.
Gambar 3.12 Tabsheet Conversion Methods Pada tabsheet ketiga, tabsheet Composing Fractal Music, user dapat menentukan parameter dalam pembuatan musik fraktal. User menentukan nilai X0, Y0, lebar gambar, tinggi gambar, dan jumlah iterasi dengan mengisi textbox. Sedangkan user menentukan jenis tangga nada dan tempo dengan memilih radio button. Rancangan layar tabsheet ini digambarkan pada Gambar 3.13.
53
Gambar 3.13 Tabsheet Composing Fractal Music Gambar 3.14 menunjukkan form Existing Fractal Music dimana User yang membuka file fraktal music yang sudah ada akan ditampilkan form Existing Ftactal music. User hanya dapat mengubah parameter X0 dan Y0 pada file fraktal music yang sudah ada. Sedangkan parameter lainnya akan tetap.
Gambar 3.14 Form Existing Fractal Music