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 IV-1 IV-2 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. IV-3 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 rootStep Tipe String rootAlter Integer kind String Deskripsi Nada dasar/root dari akor Interval transposisi dari akor Jenis dari akor. Contoh : major, minor, major-seventh, minor-seventh, dominant, dominant-11th, diminished, dll Representasi himpunan elemen nada penyusun akor yang chordEl Set<Integer> dinyatakan dalam bilangan bulat antara 0 s.d 11, tersusun terurut dari yang terkecil ke terbesar dan tidak terduplikasi IV-4 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 atributatribut 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 pitchStep String Deskripsi 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. IV-5 Tabel IV-3 Struktur Data Phrase Field Tipe Deskripsi ch Chord real_melody List<Note> List dari note penyusun melodi asli frasa improvised_melody List<Note> Akor dari frasa 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. Gambar IV-1 Antarmuka pembelajaran JazzML IV-6 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. IV-7 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. IV-8 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. IV-9 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 1 Struktur Data Struktur Data Perancangan Implementasi Chord Chord.java Keterangan 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. IV-10 Tabel IV-5 Implementasi Modul pada Perangkat Lunak JazzML No Nama Modul Implemntasi 1 Representation Chord.java Keterangan 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 utama dari perangkat lunak JazzML