IV-1
BAB IV
PERANCANGAN DAN IMPLEMENTASI
Bab ini berisi perancangan perangkat lunak pembentuk pola improvisasi musik jazz bernama JazzML dan bagaimana impelemntasi hasil rancangan ke dalam kode program.
4.1 Deskripsi Perangkat Lunak
Perangkat lunak yang akan dikembangkan adalah JazzML yang merupakan sebuah sistem pembentuk pola improvisasi melodi unisono musik jazz digital berformat
MusicXML berdasarkan akor dan melodi asli masukan. Perangkat lunak JazzML menggunakan algoritma k-Nearest Neighbor sebagai proses utamanya yang memiliki kemampuan untuk melakukan pembelajaran pola improvisasi dari berkas-berkas musik
jazz sehingga dapat menentukan pola improvisasi untuk sebuah instance musik jazz.
Sebelum dilakukan pembelajaran, perangkat lunak tersebut tidak dapat digunakan untuk membentuk pola improvisasi.
Secara khusus, perangkat lunak JazzML digunakan untuk proses pengujian penggunaan algoritma k-Nearest Neighbor dalam mempelajari dan membentuk pola improvisasi musik jazz. Penggunaan utama perangkat lunak ini dibagi menjadi 2 buah proses utama: 1. Proses pembelajaran pola improvisasi
Pada proses pembelajaran dilakukan pembelajaran terhadap data pelatihan berupa berkas-berkas musik masukan yang terdiri dari berkas musik melodi asli dan berkas musik melodi improvisasi dengan susunan akor dan panjang lagu yang identik. 2. Proses pembentukan pola improvisasi
Pada proses pembentukan pola improvisasi dilakukan pembentukan sebuah berkas musik improvisasi dari sebuah instance berkas musik asli. Susunan akor dan panjang lagu dari berkas musik improvisasi identik dengan berkas musik instance.
Untuk keperluan penelitian saat ini, perangkat lunak JazzML belum dilengkapi dengan fungsi audio playback terhadap musik improvisasi. Keluaran musik improvisasi hanya
berbentuk berkas MusicXML yang dapat dibaca dan di-playback dengan menggunakan perangkat lunak pengolah audio yang lain.
4.2 Perancangan
4.2.1 Spesifikasi Kebutuhan Perangkat Lunak
Mengacu pada analisis perancangan sistem pembelajaran pola improvisasi yang sudah dijelaskan pada sub-bab 3.4 Perancangan Sistem Pembelajaran Pola Improvisasi, maka perangkat lunak JazzML diharapkan mampu memenuhi kebutuhan fungsional sebagai berikut.
1. Perangkat lunak JazzML mampu menerima masukan berupa berkas MusicXML yang tersusun atas 1 buah staff yang terdiri dari melodi unisono dan akor.
2. Perangkat lunak JazzML mampu melakukan pembelajaran dengan mengubah representasi masukan berkas MusicXML menjadi representasi yang dapat diterima oleh algoritma k-Nearest Neighbor.
3. Perangkat lunak JazzML mampu menentukan pola improvisasi dari sebuah instance musik asli yang dipilih dari data pembelajaran per frasa musik berdasarkan akor masukan dan frasa melodi asli yang paling mirip dengan cara melakukan perhitungan nilai jarak antar akor dan antar frasa melodi.
4. Perangkat lunak JazzML mampu membentuk keluaran berupa berkas MusicXML yang tersusun atas 1 buah staff yang terdiri dari melodi unisono dan akor. Keluaran merepresentasikan berkas musik yang terimprovisasi.
4.2.2 Batasan Perangkat Lunak
Perangkat lunak yang akan diimplementasikan memiliki beberapa batasan yaitu :
1. Berkas musik digital yang diolah hanya berkas musik digital berformat MusicXML saja.
2. Melodi asli dan melodi improvisasi lagu jazz ditempatkan pada berkas yang terpisah dengan panjang lagu dan susuanan akor yang identik.
3. Melodi asli maupun melodi improvisasi dari lagu yang diolah memiliki dimensi horizontal atau melodi unisono saja.
4. Berkas musik yang akan dihasilkan hanya berupa kumpulan frasa melodi improvisasinya saja, tidak disertakan dengan melodi aslinya.
5. Perangkat lunak tidak dilengkapi fungsi audio playback untuk MusicXML.
4.2.3 Perancangan Struktur Data
Perangkat lunak JazzML tersusun dari beberapa tipe data bentukan khusus untuk menunjang kebutuhan fungsional dari perangkat lunak tersebut. Penjelasan mengenai tipe dari field yang menyusun setiap tipe data bentukan dideskripsikan secara java-like. Struktur data yang digunakan dalam perangkat lunak tersebut adalah sebagai berikut.
1. Chord
Strutkur data Chord merepresentasikan informasi akor yang dibaca dari berkas MusicXML dalam perangkat lunak JazzML. Sebuah Chord terdiri atas 4 atribut, yaitu rootStep, rootAlter, kind, dan chordEl. Tiga buah atribut pertama yaitu rootStep, rootAlter, dan kind nilainya didapatkan langsung dari pembacaan terhadap berkas MusicXML tanpa dilakukan pengolahan. Sedangkan, atribut terakhir yaitu chordEl dibentuk setelah atribut rootStep, rootAlter, dan kind terdefinisi. Atribut chordEl merupakan sebuah himpunan bilangan bulat antara 0 s.d. 11 yang merupakan representasi dari akor yang sudah dijelaskan pada subbab 3.6.3 Representasi Akor Masukan.
Tabel IV-1 Struktur Data Chord
Field Tipe Deskripsi
rootStep String Nada dasar/root dari akor rootAlter Integer Interval transposisi dari akor
kind String Jenis dari akor. Contoh : major, minor, major-seventh,
minor-seventh, dominant, dominant-11th, diminished, dll
chordEl Set<Integer>
Representasi himpunan elemen nada penyusun akor yang dinyatakan dalam bilangan bulat antara 0 s.d 11, tersusun terurut dari yang terkecil ke terbesar dan tidak terduplikasi
2. Note
Struktur data Note merepresentasikan informasi not/nada yang dibaca dari berkas MusicXML dalam perangkat lunak JazzML. Sebuah Note terdiri atas 8 buah atribut yaitu pitchStep, pitchOctave, pitchAlter, duration, type, stem, hasDot, dan hasTuplet. Atribut pitchStep, pitchOctave, dan pitchAlter digunakan untuk menghitung nilai absolut dari sebuah not/nada yang sudah dijelaskan pada sub-bab 3.6.4 Representasi Frasa Melodi pada Gambar III-12. Perhitungan untuk mendapatkan nilai absolut dari sebuah nada adalah (pitchStep + pitchAlter + 12x pitchOctave). Sedangkan atribut-atribut sisanya digunakan untuk keperluan keluaran berkas MusicXML yang kemudian akan dapat ditampilkan dalam bentuk notasi musik dan di-playback.
Tabel IV-2 Struktur Data Note
Field Tipe Deskripsi
pitchStep String Pitch nada dari note pitchOctave Integer Oktaf dari pitch nada
pitchAlter Integer Interval transposisi dari pitch nada duration Integer Durasi dari note
type String Tipe durasi dari note
stem String Arah tangkai dari note, jika ada hasDot Boolean Keberadaan tanda titik dari note hasTuplet Boolean Keberadaan tanda tuplet dari note
3. Phrase
Struktur data Phrase merepresentasikan sebuah frasa musik yang terdiri atas struktur data Chord, list Note melodi asli, dan list Note melodi improvisasi. Struktur data ini digunakan untuk menyimpan frasa-frasa lagu yang dibaca dari berkas MusicXML yang kemudian akan diolah oleh algoritma k-Nearest Neighbor untuk mencari pola improvisasi ketika masuknya sebuah instance musik jazz. Data pelatihan yang digunakan oleh sistem pembelajaran mesin ini merupakan list dari Phrase.
Tabel IV-3 Struktur Data Phrase
Field Tipe Deskripsi
ch Chord Akor dari frasa
real_melody List<Note> List dari note penyusun melodi asli frasa
improvised_melody List<Note> List dari note penyusun melodi improvisasi dari frasa
4.2.4 Perancangan Antarmuka
Berikut ini adalah prototype antarmuka yang akan digunakan dalam perangkat lunak
JazzML.
1. Antarmuka pembelajaran
Antarmuka ini digunakan untuk mengolah berkas MusicXML masukan menjadi representasi yang dapat diterima oleh algoritma k-Nearest Neighbor, dimana terdapat fungsi untuk membaca dan mengekstrak kumpulan berkas MusicXML yang digunakan sebagai data pembelajaran. Antarmuka pembelajaran dapat dilihat pada Gambar IV-1.
2. Antarmuka pembentukan musik improvisasi
Antarmuka ini digunakan untuk membentuk sebuah berkas MusicXML lagu improvisasi dari sebuah instance berkas MusicXML masukan. Susunan akor dan panjang lagu dari musik improvisasi sama dengan musik asli. Pada antarmuka ini terdapat fungsi untuk menerima masukan sebuah berkas MusicXML, membaca berkas MusicXML, menghitung nilai jarak ketetanggaan, menjalankan algoritma k-NN untuk mencari pola improvisasi yang paling mirip, dan menulis berkas MusicXML baru. Antarmuka pembentukan musik improvisasi dapat dilihat pada Gambar IV-2.
Gambar IV-2 Antarmuka pembentukan musik improvisasi
4.2.5 Perancangan Modul
Perangkat lunak JazzML yang dibangun pada Tugas Akhir ini dirancang dan akan diimplementasikan menjadi beberapa modul. Modul-modul yang dirancang dan diimplementasikan adalah sebagai berikut.
1. Modul Representation
Modul ini berisi semua tipe data bentukan yang dibutuhkan dalam perangkat lunak JazzML. Tipe data bentukan yang dibutuhkan dalam perangkat lunak ini telah dijelaskan pada subbab perancangan tipe data bentukan.
2. Modul Improvisor
Modul ini berisi fungsi-fungsi untuk melakukan pembelajaran dan pembentukan pola melodi improvisasi musik jazz berdasarkan akor dan melodi asli dengan menggunakan algoritma k-Nearest Neighbor.
3. Modul Pengolah MusicXML
Modul ini berisi fungsi-fungsi yang menangani pembacaan dan penulisan berkas file MusicXML. File MusicXML ini digunakan sebagai representasi dari sebuah lagu. 4. Modul Antarmuka
Modul ini berisi antarmuka yang digunakan dalam perangkat lunak JazzML.
Gambar IV-3 Struktur Modul
4.3 Implementasi
Implementasi perangkat lunak JazzML dikembangkan dengan mengacu pada hasil perancangan yang telah dijelaskan pada sub-bab 4.2 Perancangan. Pada sub-bab implementasi ini akan dilakukan pembahasan mengenai lingkungan implementasi, batasan implementasi, implementasi data, serta implementasi modul.
4.3.1 Lingkungan Implementasi
Lingkungan implementasi perangkat lunak JazzML terdiri dari 2 bagian yaitu lingkungan perangkat keras dan lingkungan perangkat lunak. Lingkungan perangkat keras meliputi semua perangkat keras yang digunakan di dalam pengembangan dan penggunaan perangkat lunak JazzML. Lingkungan perangkat lunak meliputi sistem operasi dan kakas pengembangan yang digunakan untuk mengimplementasi perangkat lunak JazzML.
4.3.1.1 Lingkungan Perangkat Keras
Perangkat keras yang digunakan untuk pengembangan dan implementasi perangkat lunak JazzML selama penelitian Tugas Akhir ini adalah sebuah laptop dengan spesifikasi sebagai berikut.
1. Processor Intel® Pentium Dual Core T2060 @ 1.60 GHz, 65nm, FSB533, 1MB L2 cache.
2. Memory 2048 MB DDR2 RAM. 3. Hard disk SATA 80 GB.
4. Perangkat masukan berupa keyboard dan mouse.
5. Perangkat keluaran berupa layar monitor 14.1” WXGA TFT(1280x800).
4.3.1.2 Lingkungan Perangkat Lunak
Spesifikasi lingkungan perangkat lunak yang digunakan untuk pengembangan dan implementasi perangkat lunak JazzML selama pelaksanaan penelitian Tugas Akhir ini adalah sebagai berikut:
1. Sistem operasi Windows XP Profesional Edition Service Pack 2.
2. Kakas pemrograman berupa NetBeans IDE 6.0 dengan Java Development Kit 1.6.0 dan Java Runtime Environtment 1.6.0.
3. Bahasa pemrograman Java.
4. Aplikasi pengolah suara yang membantu untuk membuat, membaca dan memainkan berkas MusicXML, yaitu Finale 2007.
5. Aplikasi pembantu analisis dan perancangan, yaitu Microsoft Visio 2007
4.3.2 Batasan Implementasi
Implementasi perangkat lunak JazzML memiliki batasan yaitu eksekusi perangkat lunak
JazzML diharapkan melalui command prompt agar dapat mengalokasikan memori Java
Runtime Environtment (JRE) secara manual. Alokasi memori JRE yang diharapkan untuk perangkat lunak ini minimal sama atau lebih besar dari 200 MB. Dengan alokasi memori seperti yang telah disebutkan sebelumnya, perangkat lunak JazzML akan mampu bekerja secara optimal.
4.3.3 Implementasi Data
Rancangan struktur data diimplementasikan secara fisik berupa kelas-kelas dengan menggunakan bahasa pemrograman Java. Impelementasi struktur data mengacu pada hasil analisis dan perancangan.
Pemetaan nama struktur data pada proses perancangan dengan nama struktur data hasil implementasi dapat dilihat pada Tabel IV-4 Implementasi Struktur Data pada Perangkat Lunak JazzML. Sedangkan setiap field yang ada pada struktur data hasil implementasi sama dengan field yang ada pada struktur data di tahap perancangan sehingga tidak diperlukan adanya pemetaan nama field pada struktur data.
Tabel IV-4 Implementasi Struktur Data pada Perangkat Lunak JazzML
No Struktur Data Perancangan
Struktur Data Implementasi
Keterangan
1 Chord Chord.java Struktur data Chord merepresentasikan
akor pada berkas MusicXML dalam perangkat lunak JazzML
2 Note Note.java Struktur data Note merepresentasikan
sebuah nada pada berkas MusicXML dalam perangkat lunak JazzML
3 Phrase Phrase.java Struktur data Phrase merepresentasikan
sebuah frasa musik yang terdiri atas sebuah akor beserta melodi asli dan improvisasinya dalam perangkat lunak JazzML
4.3.4 Implementasi Modul
Implementasi modul merupakan pemetaan struktur modul yang telah dijelaskan pada sub-bab 4.2.5 Perancangan Modul yang diimplementasi secara fisik ke dalam bahasa lingkungan implementasi perangkat lunak yaitu bahasa Java. Dengan menggunakan bahasa pemrograman Java, setiap modul diimplementasi menjadi file yang berekstensi .java seperti yang ditunjukkan pada Tabel IV-5 Implementasi Modul pada Perangkat Lunak JazzML.
Tabel IV-5 Implementasi Modul pada Perangkat Lunak JazzML
No Nama Modul Implemntasi Keterangan
1 Representation Chord.java Kelas yang merepresentsasikan
struktur data Chord yang digunakan oleh struktur data Phrase pada perangkat lunak JazzML
Note.java Kelas yang merepresentasikan struktur
data Note yang digunakan oleh struktur data Phrase pada perangkat lunak JazzML
Phrase.java Kelas yang merepresentasikan struktur
data Phrase pada perangkat lunak JazzML
2 Improvisor KNNImprovisor.java Kelas yang mengimplementasikan
algoritma kNN untuk membentuk pola improvisasi musik jazz
3 XMLParser MusicXMLAgent.java Kelas yang digunakan untuk
melakukan pembacaan dan penulisan berkas MusicXML
4 Antarmuka JazzML.java Kelas yang berfungsi sebagai Window