1 Daftar Pustaka [BEL00] Belkin, Alan Music Theory Online : Counterpoint. Diakses: Februari [DAN06] Dannenberg, Roger B., Christopher Raphael Communi...
Daftar Pustaka [BEL00] Belkin, Alan. 2000. Music Theory Online : Counterpoint. http://www.dolmetsch.com/musictheory33.htm Diakses: Februari 2007. [DAN06] Dannenberg, Roger B., Christopher Raphael. 2006. Communication of The ACM : Music Score Alignment and Computer Accompaniment. Vol 49 / No 8. [DAR98] Darwin, Charles. 1998. The Origin of Species. Wordsworth Classics of World Literature. [GOL89] Goldberg, David E. 1989. Genetic Algorithms in Search, Optimization and Machine Learning. Addison-Wesley Publishing Company Inc. [GOO01] Good, Michael. 2001. MusicXML: An Internet-Friendly Format for Sheet Music. XML Conference & Exposition 2001. [GUN99] Gunawan, Maureen. 1999. Tugas Akhir : Pembangkitan Harmonisasi Chord. Jurursan Teknik Informatika ITB, Bandung. [HAU98] Haupt, Randy, Sue Haupt. 1998. Practical Genetic Algorithms. A WileyInterscience Publication. [HUG07] Hugill, Andrew. The Orchestra: A User’s Manual http://www.mti.dmu.ac.uk/~ahugill/manual/ Diakses: Maret 2007 [JON74] Jones, George Thaddeus. 1974. Music Theory : The Fundamental Concepts of Tonal Music Including Notation, Terminology and Harmony. Barnes & Noble Books. [KAW75] Kawakami, Genichi. 1975. Arranging Popular Music : A Particular Guide. Yamaha Music Foundation. [KEN96] Kennedy, Michael, Bourne, Joyce. 1996. Definition of Counterpoint. http://www.classicalarchives.com/dict/counterpoint.htm Diakses: Februari 2007. [KHE91] Kheng, Loh Phaik. 1991. A Handbook of Music Theory. Muzikal. xi
[KLE07] Klein, Bernd. http://www.bklein.de/music_definition.htm Diakses: Februari 2007. [MIT97] Mitchell, Tom M. 1997. Machine Learning. McGraw-Hill. [PRE97]
Pressman, Roger S. 1997. Software Engineering (A Practitional’s Approach). McGraw-Hill.
[RAN05] Rangel-Mirano, A., J. L. Lopez-Bonilla, R. Linares y Miranda. 2005. Optimization Method based on Genetic Algorithms. http://redshift.vif.com/JournalFiles/V12NO4PDF/V12N4RAN.pdf Diakses: Januari 2007. [STA96] Sadie, Stanley. 1996. Musical Forms : Counterpoint. http://w3.rzberlin.mpg.de/cmp/g_counterpoint.htm Diakses: Februari 2007. [TAG02] Tagg, Philip. 2002. Towards a Definition of ‘Music’. http://www.unigre.it/pug/cics/CO2123/Tagg.pdf Diakses: Februari 2007. [WIK07] Wikimedia Foundation. Wikipedia : The Free Encyclopedia. http://www.wikipedia.org. Diakses: Februari 2007.
xii
LAMPIRAN A MusicXML Tabel berikut ini berisi nama tag dan penjelasannya yang diperlukan selama proses pada suatu berkas MusicXML: Nama accidental
File note.dtd
Tipe Tag
Deskripsi Tanda (sharp atau flat)
alter
note.dtd
Tag
Selisih semitone dari suatu nada
attributes
attributes.dtd
Tag
backup
note.dtd
Tag
Informasi mengenai bar, meliputi kunci, birama, tempo, satuan ketukan terkecil. Mundur untuk mengkoordinasikan berbagai suara pada satu bagian
beat-type
attributes.dtd
Tag
beats
attributes.dtd
Tag
chord
note.dtd
Tag
clef divisions
attributes.dtd attributes.dtd
Tag Tag
Kunci Berapa bagian per not seperempat dalam satu durasi
duration encoding
note.dtd identity.dtd
Tag Element
Durasi (dalam bagian) Informasi tentang proses encoding file MusicXML tersebut
encoding-date fifths id
identity.dtd attributes.dtd score.dtd
Element Tag Attribute
identification instrumentname key line
identity.dtd score.dtd
Tag Tag
Tanggal saat encoding Jumlah flat atau sharp setelah kunci ID unik untuk score-part atau scoreinstrument Score metoda dasar Nama lengkap instrumen
attributes.dtd attributes.dtd
Tag Tag
measure
score.dtd
Tag
midi-channel midiinstrument
common.dtd common.dtd
Tag Tag
Jumlah ketukan dalam satu bar (angka di atas birama) Nilai not untuk satu ketukan dalam satu bar (angka di bawah birama) Mengindikasikan not tersebut adalah not tambahan bagi akor
Tangga nada Nomor garis paranada dari bawah ke atas Elemen tingkat lebih tinggi dalam partwise. Elemen tingkat lebih rendah dalam timewise Channel MIDI dari 1 – 16 Menspesifikasikan insturmen midi untuk score-instrument atau sound A-1
Deskripsi Nomor program MIDI dari 1 – 128 Mode untuk tangga nada Notasi musik untuk not Tanda not atau tanda istirahat Digunakan dalam banyak elemen, biasanya elemen dengan nomor tingkatan Nomor oktaf dari 0 – 9 Elemen tingkat lebih tinggi dalam partwise. Elemen tingkat lebih rendah dalam timewise Daftar lengkap seluruh partitur musik dalam satu bagian
octave part
note.dtd score.dtd
Tag Tag
part-list
score.dtd
Tag
part-name pitch
score.dtd note.dtd
Tag Tag
Nama lengkap partitur musik Data pitch : kombinasi dari step, alteration dan oktaf
rest scoreinstrument
note.dtd score.dtd
Tag Tag
Tanda istirahat Informasi tentang instrumeninstrumen dalam partitur
score-part
score.dtd
Tag
score-partwise sign
score.dtd attributes.dtd
Tag Tag
Informasi tentang partitur dalam satu score Elemen dokumen untuk partwise.dtd Tanda kunci. Nilai : G, F, C, percussion, TAB, none
software
identity.dtd
Tag
sound staff
direction.dtd common.dtd
Tag Tag
staves
attributes.dtd
Tag
step
note.dtd
Tag
tempo
direction.dtd
Attribute
tied
note.dtd
Tag
time type
attributes.dtd direction.dtd
Tag Attribute
voice
common.dtd
Tag
Software yang digunakan untuk encoding Saran playback Peletakan paranada untuk partitur dengan banyak garis paranada
A-2
Jumlah garis paranada dalam satu partitur Nada diatonik. Nilai : A, B, C, D, E, F, G Tempo not seperempat dalam satu menit Cara menampilkan not yang tergabung dalam sebuah tie Birama Digunakan dalam banyak elemen, biasanya penanda start-stop atau start-stop-continue Membedakan suara musik
LAMPIRAN B Contoh File MusicXML Berikut ini adalah contoh partitur untuk piano dan file MusicXML untuk partitur tersebut dengan sistem partwise.
LAMPIRAN C Pseudocode Fungsi Fitness Berikut ini adalah pseudocode untuk fungsi fitness. function evaluasi (input evaluasi : kromosom, melodi : kromosom, harmoni : kromosom) -> integer {fungsi untuk mengevaluasi kromosom berdasarkan teori melodi masukan : 1. kromosom evaluasi, yaitu kromosom yang dievaluasi 2. kromosom melodi, yaitu kromosom yang berisi nada-nada melodi 3. kromosom harmoni, yaitu kromosom yang berisi nada-nada harmoni keluaran : hasil evaluasi berdasarkan teori dasar aransemen bertipe integer} Deklarasi {kebutuhan untuk evaluasi berdasarkan teori melodi} cnm : integer {nada melodi ketukan saat ini} com : integer {oktaf melodi ketukan saat ini} pnm : integer {nada melodi ketukan sebelumnya} pom : integer {oktaf melodi ketukan sebelumnya} {kebutuhan untuk evaluasi berdasarkan teori harmoni} bass : integer {posisi nada terendah} akor : integer {berisi nada-nada harmoni dalam satu oktaf} third : integer {berisi nada third dari akor} fifth : integer {berisi nada fifth dari akor} {kebutuhan untuk evaluasi berdasarkan teori instrumen} jum_kiri : integer {jumlah nada di paranada bawah} jum_kanan : integer {jumlah nada di paranada atas} max_kiri : integer {posisi nada tertinggi di paranada bawah} max_kanan : integer {posisi nada tertinggi di paranada atas} min_kiri : integer {posisi nada terendah di paranada bawah} min_kanan : integer {posisi nada terendah di paranada atas} nilai : integer bobot : integer i, j : integer
{nilai evaluasi} {bobot evaluasi}
Algoritma for i<-0 to Nketukan do {Nketukan merupakan jumlah gen yang terdapat dalam kromosom} {==========evaluasi berdasarkan teori melodi==========} {cari info nada melodi di informasi nada_kanan gen saat ini dari kromosom melodi} j<-0 while ((melodi[i][nada_kanan][j] = 0) and (j < jum_oktaf)) do j<-j+1 {telusuri tiap oktaf, jum_oktaf bernilai 4 sesuai batasan} {simpan info nada melodi} cnm<-melodi[i][nada_kanan][j] {simpan nada di cnm} com<-j {simpan oktaf di com} {dilanjutkan di halaman selanjutnya}
C-1
{lanjutan dari halaman sebelumnya} {cek keberadaan nada melodi di kromosom evaluasi} for j<-0 to jum_oktaf do {cek di paranada atas} if (melodi[i][nada_kanan][j] and cnm) then {jika nada melodi dimainkan, nilai bertambah} nilai <- nilai + bobot if (j = com) then nilai <- nilai + bobot endif {jika oktaf sesuai dengan nada melodi, nilai bertambah} endif {cek di paranada bawah} if (melodi[i][nada_kiri][j] and cnm) then {jika nada melodi dimainkan, nilai bertambah} nilai <- nilai + bobot if (j = com) then nilai <- nilai + bobot endif {jika oktaf sesuai dengan nada melodi, nilai bertambah} endif endfor {==========evaluasi berdasarkan teori harmoni=========} {cari info nada harmoni di informasi nada_kanan gen saat ini dari kromosom harmoni} akor<-posisi nada akor dalam kromosom harmoni third<-posisi nada third dalam kromosom harmoni fifth<-posisi nada fifth dalam kromosom harmoni bass<-nada terendah di kromosom evaluasi untuk gen ke-i {cek apakah nada-nada yang dimainkan memenuhi akor} {jum_oktaf merupakan jumlah oktaf, bernilai 4 sesuai batasan} for j<-0 to jum_oktaf do {jum_semitone merupakan jumlah nada dalam satu oktaf, bernilai 12} for k<-0 to jum_semitone do {cek untuk paranada atas} if nada ke-k dimainkan di paranada atas then if nada ke-k memenuhi akor then {jika nada yang dimainkan memenuhi akor, nilai bertambah} nilai <- nilai + bobot else {jika nada yang dimainkan tidak memenuhi akor, nilai berkurang} nilai <- nilai - bobot endif endif {dilanjutkan di halaman selanjutnya}
C-2
{lanjutan dari halaman sebelumnya} {cek untuk paranada bawah} if nada ke-k dimainkan di paranada bawah then if nada ke-k memenuhi akor then {jika nada yang dimainkan memenuhi akor, nilai bertambah} nilai <- nilai + bobot else {jika nada yang dimainkan tidak memenuhi akor, nilai berkurang} nilai <- nilai - bobot endif endif endfor endfor {cek apakah nada terendah yang dimainkan adalah nada third atau nada fifth} if bass and third then nilai <- nilai + bobot {jika nada terendah adalah nada third, nilai bertambah} else if bass and third then nilai <- nilai + bobot {jika nada terendah adalah nada fifth, nilai bertambah} endif {=========evaluasi berdasarkan teori instrumen========} {cari info yang akan dievaluasi} jum_kiri<-jumlah nada di paranada bawah jum_kanan<-jumlah nada di paranada atas max_kiri<-posisi nada tertinggi di paranada bawah max_kanan<-posisi nada tertinggi di paranada atas min_kiri<-posisi nada terendah di paranada bawah min_kanan<-posisi nada terendah di paranada atas {evaluasi jumlah nada if jum_kiri <= 5 then {jika jumlah nada else nilai <- nilai {jika jumlah nada endif
yang dimainkan di paranada bawah} nilai <- nilai + bobot kurang dari 5, nilai bertambah} bobot lebih dari 5, nilai berkurang}
{evaluasi jumlah nada yang dimainkan di paranada atas} if jum_kanan <= 5 then nilai <- nilai + bobot {jika jumlah nada kurang dari 5, nilai bertambah} else nilai <- nilai - bobot {jika jumlah nada lebih dari 5, nilai berkurang} endif {evaluasi jangkauan nada yang dimainkan di paranada atas} if (max_kiri-min_kiri) <= 12 then nilai <- nilai + bobot {jika jangkauan kurang dari satu oktaf (12 nada), nilai bertambah} else nilai <- nilai - bobot {jika jangkauan lebih dari satu oktaf (12 nada), nilai berkurang} endif {dilanjutkan di halaman selanjutnya}
C-3
{lanjutan dari halaman sebelumnya} {evaluasi jangkauan nada yang dimainkan di paranada atas} if (max_kanan-min_kanan) <= 12 then nilai <- nilai + bobot {jika jangkauan kurang dari satu oktaf (12 nada), nilai bertambah} else nilai <- nilai - bobot {jika jangkauan lebih dari satu oktaf (12 nada), nilai berkurang} endif {evaluasi posisi tangan} if max_kiri > min_kanan then nilai <- nilai - bobot endif {jika nada tertinggi yang dimainkan tangan kiri lebih tinggi dari nada terendah yang dimainkan tangan kanan, nilai berkurang} {evaluasi letak nada melodi} if cnm berada di max_kanan then nilai <- nilai + bobot endif {jika nada melodi dimainkan oleh tangan kanan di nada tertinggi, nilai bertambah} endfor return nilai
C-4
LAMPIRAN D Operasi Genetika Berikut ini adalah contoh partitur dan operasi genetika terhadap partitur tersebut. 1. Contoh operasi persilangan -
Letak ketukan yang dipersilangkan untuk paranada atas dipilih secara acak. Misalnya letak ketukan yang terpilih adalah ketukan ke-9 hingga ke16 dan ketukan ke-25 hingga ke-32.
-
Letak ketukan yang dipersilangkan untuk paranada bawah dipilih secara acak. Misalnya letak ketukan yang terpilih adalah ketukan ke-1 hingga ke8 dan ketukan ke-17 hingga ke-24.
Berikut ini adalah gambar partitur yang akan disilangkan.
Berikut ini adalah gambar hasil operasi persilangan sesuai aturan di atas.
2. Contoh operasi mutasi 0 -
Jumlah dan letak ketukan dipilih secara acak. Misalnya jumlah yang terpilih adalah 3, dan letak ketukan yang terpilih adalah 5, 9, dan 13.
-
Nada dipilih secara acak dari C hingga B. Misalnya nada yang terpilih adalah nada G.
-
Oktaf dipilih secara acak, yaitu dari oktaf ke-2 hingga oktaf ke-5. Misalnya oktaf yang terpilih adalah oktaf ke-4.
-
Paranada dipilih secara acak, yaitu paranada atas atau paranada bawah. Misalnya paranada yang terpilih adalah paranada atas.
D-1
-
Komponen dipilih secara acak, yaitu nilai nada atau sambungan nada. Misalnya komponen yang terpilih adalah nilai nada.
Berikut ini adalah hasil operasi mutasi 0, yang akan melakukan mutasi sesuai aturan di atas terhadap nada yang dimainkan. Gambar sebelah kiri adalah partitur yang akan dioperasikan, dan gambar sebelah kanan adalah hasil operasi.
3. Contoh operasi mutasi 1 -
Ketukan dipilih secara acak dan nada akan dimutasi selama akor tersebut berlaku. Misalnya ketukan yang terpilih adalah ketukan ke-8, sehingga ketukan yang akan dimutasikan adalah ketukan ke-1 hingga ke-16, yaitu selama akor C berlaku.
-
Nada dipilih secara acak dari nada akor yang berlaku. Akor yang berlaku di ketukan ke-8 adalah akor C, yang terdiri dari nada C-E-G. Misalnya nada yang terpilih adalah nada C.
-
Oktaf dipilih secara acak, yaitu dari oktaf ke-2 hingga oktaf ke-5. Misalnya oktaf yang terpilih adalah oktaf ke-3.
-
Paranada dipilih secara acak, yaitu paranada atas atau paranada bawah. Misalnya paranada yang terpilih adalah paranada bawah.
Berikut ini adalah hasil operasi mutasi 1, yang akan melakukan mutasi sesuai aturan di atas terhadap nada yang dimainkan. Gambar sebelah kiri adalah partitur yang akan dioperasikan, dan gambar sebelah kanan adalah hasil operasi.
D-2
4. Contoh operasi mutasi 2 -
Letak ketukan dan jumlah ketukan dipilih secara acak. Misalnya jumlah ketukan adalah 2, dan letak ketukan terpilih adalah ketukan ke-1 dan ke-9.
-
Nada dipilih secara acak, yaitu dari C hingga B. Misalnya yang terpilih adalah nada A.
-
Oktaf dipilih secara acak, yaitu dari oktaf ke-2 hingga oktaf ke-5. Misalnya oktaf yang terpilih adalah oktaf ke-3.
-
Paranada dipilih secara acak, yaitu paranada atas atau paranada bawah. Misalnya paranada yang terpilih adalah paranada bawah.
Berikut ini adalah hasil operasi mutasi 2, yang akan melakukan mutasi sesuai aturan di atas terhadap nada yang dimainkan. Gambar sebelah kiri adalah partitur yang akan dioperasikan, dan gambar sebelah kanan adalah hasil operasi.
5. Contoh operasi mutasi 3 -
Letak ketukan dipilih dengan pola mn+1 atau mn. o Pola dipilih secara acak. Misalnya pola yang terpilih adalah mn+1. o Nilai m dipilih secara acak dari 2, 4, 8 atau 16. Misalnya nilai m yang terpilih adalah 4. o Nilai n adalah bilangan cacah, dari 0 hingga mn+1 lebih besar dari Nketukan. Dengan aturan tersebut, maka ketukan yang akan dimutasikan adalah ketukan ke-1, 5, 9, 13, 17, 21, 25, dan 29.
-
Nada dipilih secara acak, yaitu dari C hingga B. Misalnya nada yang terpilih adalah nada C.
-
Oktaf dipilih secara acak, yaitu dari oktaf ke-2 hingga oktaf ke-5. Misalnya oktaf yang terpilih adalah oktaf ke-3.
D-3
-
Paranada dipilih secara acak, yaitu paranada atas atau paranada bawah. Misalnya paranada yang terpilih adalah paranada bawah.
Berikut ini adalah hasil operasi mutasi 3, yang akan melakukan mutasi sesuai aturan di atas terhadap sambungan nada. Gambar sebelah kiri adalah partitur yang akan dioperasikan, dan gambar sebelah kanan adalah hasil operasi.
6. Contoh operasi mutasi 4 -
Letak ketukan dan jumlah ketukan dipilih secara acak. Misalnya jumlah ketukan adalah 1, dan letak ketukan terpilih adalah ketukan ke-9.
-
Nada dipilih secara acak, yaitu dari C hingga B. Misalnya nada yang terpilih adalah nada E.
-
Oktaf dipilih secara acak, yaitu dari oktaf ke-2 hingga oktaf ke-5. Misalnya oktaf yang terpilih adalah oktaf ke-5.
-
Paranada dipilih secara acak, yaitu paranada atas atau paranada bawah. Misalnya paranada yang terpilih adalah paranada atas.
Berikut ini adalah hasil operasi mutasi 4, yang akan melakukan mutasi sesuai aturan di atas terhadap sambungan nada. Gambar sebelah kiri adalah partitur yang akan dioperasikan, dan gambar sebelah kanan adalah hasil operasi.
7. Contoh operasi mutasi 5 -
Letak ketukan dipilih secara acak. Misalnya letak ketukan terpilih adalah ketukan ke-9.
D-4
-
Oktaf dipilih secara acak, yaitu dari oktaf ke-2 hingga oktaf ke-5. Misalnya oktaf yang terpilih adalah oktaf ke-4.
-
Paranada dipilih secara acak, yaitu paranada atas atau paranada bawah. Misalnya paranada yang terpilih adalah paranada bawah.
Berikut ini adalah hasil operasi mutasi 5, yang akan melakukan mutasi sesuai aturan di atas terhadap nilai nada dan sambungan nada. Gambar sebelah kiri adalah partitur yang akan dioperasikan, dan gambar sebelah kanan adalah hasil operasi.
8. Contoh operasi mutasi 6 -
Letak ketukan dipilih secara acak. Misalnya letak ketukan terpilih adalah ketukan ke-9.
Berikut ini adalah hasil operasi mutasi 6, yang akan melakukan mutasi sesuai aturan di atas terhadap nilai nada dan sambungan nada. Gambar sebelah kiri adalah partitur yang akan dioperasikan, dan gambar sebelah kanan adalah hasil operasi.
D-5
LAMPIRAN E Hasil Pengujian Parameter NPopulasi, NPersilangan dan NMutasi Berikut ini adalah tabel hasil pengujian terhadap parameter NPopulasi.
Pengujian Nilai Parameter NPopulasi Frase : Canon In D NPersilangan : 50% NPopulasi