BAB II DASAR TEORI
Bab ini berisi hasil studi literatur yang meliputi penjelasan mengenai music information retrieval dan aspek-aspek apa saja yang dapat digunakan untuk mendefinisikan music information retrieval, penjelasan mengenai file MIDI dan spesifikasinya serta penjelasan mengenai metode konversi melodi polifonik menjadi melodi monofonik.
II.1 Music Information Retrieval Music Information retrieval (MIR) adalah disiplin ilmu yang merupakan gabungan antara information retrieval (IR) dan musik. Tujuan MIR adalah untuk mencari lagu yang relevan dengan sebuah query tertentu. Gambaran umum sebuah sistem MIR dapat dilihat pada Gambar 2.1.
Query
Pencarian
Daftar lagu yang relevan
Koleksi lagu
Gambar 2.1 Gambaran Umum Sistem Music Information Retrieval II - 1
Pada gambar di atas, query dapat berupa melodi, genre lagu, lirik, tempo, irama dan sebagainya. Lagu-lagu dalam koleksi lagu dapat disimpan dalam berbagai macam format file audio, misalnya wav, mp3, MIDI, real audio dan sebagainya. MIR dapat dibagi dalam tujuh aspek, yaitu [7]: 1. Aspek nada (pitch). Nada dapat didefinisikan sebagai ”bunyi yang dapat dinyatakan sebagai fungsi frekuensi tertentu, dalam satuan getaran per detik”. Representasi nada yang paling dikenal orang adalah representasi dengan not balok yang tertulis pada sebuah partitur musik. Representasi nada lainnya antara lain: nama not (A, B, C# dan seterusnya), derajat tangga nada (I, II, III dan seterusnya), solmisasi (do, re, mi dan seterusnya) dan not angka (1, 2, 3 dan seterusnya). Jarak antara dua nada disebut interval. Satuan interval biasanya dinyatakan dalam ukuran semitone. Ukuran interval berbeda-beda, mulai dari interval yang berjarak setengah nada (1 semitone) sampai interval berjarak satu oktaf (12 semitone). Melodi dapat didefinisikan sebagai kumpulan nada atau interval yang dimainkan secara sekuensial dan terurut. Nada dasar (key) dapat digolongkan ke dalam aspek nada. Melodi CDEFGEC (dari lagu ”Ibu Kita Kartini”) pada nada dasar C dianggap ekivalen dengan melodi GABCDBG pada nada dasar G. Ini terjadi karena kontur melodi (pola interval) pada kedua melodi tersebut sama meskipun dimainkan pada nada dasar yang berbeda. 2. Aspek temporal. Aspek temporal meliputi informasi mengenai event-event musikal dalam durasi suatu lagu, yaitu tempo, tanda birama, panjang nada,
II - 2
panjang harmoni dan aksen. Kelima elemen ini merupakan komponen-komponen ritmik dari sebuah lagu.. Informasi temporal dari sebuah lagu dapat bersifat pasti (contoh: tempo = 120 BPM), umum (contoh : adagio, presto, allegro) atau relatif (contoh: schneller, langsamer). Perubahan informasi temporal juga kadangkadang muncul pada sebuah lagu (contoh: rubato, accelerando). Karena aspek temporal meliputi banyak elemen, maka aspek temporal dapat direpresentasikan dengan berbagai macam cara. 3. Aspek harmoni. Harmoni adalah sekumpulan nada yang berbeda-beda yang dibunyikan secara bersamaan. Sebuah melodi bersifat polifonik jika pada suatu saat ada lebih dari satu nada yang dibunyikan secara bersamaan. Jika nada-nada dalam suatu melodi dimainkan secara satu per satu, maka melodi tersebut bersifat monofonik. Sebuah harmoni dapat dinyatakan sebagai kombinasi beberapa interval dari suatu nada root. Harmoni yang terdiri dari tiga nada atau lebih disebut akor (chord). Urutan akor yang dimainkan pada sebuah lagu disebut pergerakan akor (chord progression). Akor dapat direpresentasikan secara absolut (C, G, Am dan sebagainya) atau relatif (I, V, vi dan sebagainya). 4. Aspek timbral. Perbedaan suara yang ditimbulkan dari not yang sama yang dimainkan oleh dua alat musik yang berbeda disebabkan oleh perbedaan warna suara pada kedua alat musik tersebut. Aspek timbral meliputi informasi mengenai orkestrasi lagu, yaitu penentuan alat musik apa saja yang dimainkan pada sebuah lagu. Aspek timbral juga meliputi cara memainkan suatu alat musik (contoh:
II - 3
pizzicatto, muting, menekan pedal dan sebagainya). Aspek timbral paling cocok untuk digunakan dalam representasi lagu yang bersifat signal-based. 5. Aspek editorial. Aspek editorial meliputi tatacara memainkan suatu lagu seperti penjarian, dinamika (contoh: forte, piano, fortissimo), artikulasi, staccatto dan sebagainya. Aspek editorial sulit untuk direpresentasikan dalam MIR sebab informasi editorial pada umumnya tdak bersifat absolut. 6. Aspek tekstual. Aspek tekstual meliputi lirik dari suatu lagu. Aspek tekstual pada umumnya tidak bergantung pada aspek-aspek lainnya dalam MIR. Sebuah lagu bisa saja memiliki beberapa versi lirik yang berbeda-beda. Misalnya, lagu ”God Save The Queen”, yang dikenal sebagai lagu kebangsaan negara-negara persemakmuran Inggris, juga dikenal sebagai lagu ”America” atau ”My Country ’tis of Thee” di Amerika Serikat. Sebuah lagu juga dapat diterjemahkan ke dalam bahasa yang berbeda-beda, misalnya lagu ”Happy Birthday”. 7. Aspek bibliografi. Aspek bibliografi meliputi judul lagu, pencipta lagu, editor, penulis lirik, penerbit, edisi, nomor katalog, tanggal publikasi, diskografi dan sebagainya. Tidak seperti aspek MIR lainnya, aspek bibliografi tidak diperoleh dari content sebuah lagu. Biasanya informasi mengenai aspek bibliografi terdapat di dalam tag atau metadata dari suatu file lagu.
II.2 Perkembangan Music Information Retrieval Music information retrieval adalah disiplin ilmu yang relatif baru. Pada awalnya orang melakukan pencarian terhadap sebuah lagu berdasarkan tag metadata berbasis teks yang mengidentifikasi fitur-fitur tertentu, misalnya judul atau pencipta lagu. Pencarian
II - 4
seperti ini menyulitkan bagi orang yang tidak tahu isi dari metadata yang akan dicari. Ada kalanya seseorang tidak mengetahui metadata dari sebuah lagu tapi mengetahui fitur-fitur lainnya seperti melodi, instrumentasi atau harmonisasi dari lagu tersebut. Akan lebih baik jika pencarian pada terhadap sebuah lagu dilakukan berdasarkan isi (content based) dari lagu tersebut. Inilah yang melatarbelakangi lahirnya music information retrieval. Pencarian terhadap sebuah lagu secara content based pertama kali dilakukan berdasarkan melodi dari lagu tersebut. Aplikasi Themefinder [8], yang disponsori oleh Stanford University, menyimpan sekitar 20,000 lagu klasik, barok, renaissance dan lagulagu rakyat (folk song) Eropa. Pengguna melakukan pencarian terhadap sebuah lagu dengan cara memasukkan informasi mengenai kontur melodi pada sebuah antarmuka berbasis teks. Aplikasi Meldex [9], yang merupakan projek dari University Of Waikato, Selandia Baru, menyimpan sekitar 9,000 lagu rakyat Cina dan Eropa. Pengguna melakukan pencarian dengan cara memainkan melodi masukan pada sebuah kibord maya di halaman web Meldex. Meldex akan mengembalikan lagu-lagu yang dianggap memiliki melodi yang mirip dengan melodi masukan yang terurut berdasarkan kemiripan kepada pengguna. Aplikasi Shazam [11] melakukan pencarian dengan cara query by example. Pengguna memasukkan sampel lagu selama 10 detik. Shazam mengembalikan lagu-lagu yang mirip dengan sampel tersebut. Sampai saat ini pencarian terhadap sebuah lagu yang bersifat content based baru dilakukan berdasarkan melodi. Pada masa yang akan datang, diramalkan bahwa pencarian terhadap sebuah lagu dapat dilakukan berdasarkan aspekaspek lain seperti instrumentasi, harmoni, lirik, tanda birama, genre dan sebagainya.
II - 5
II.3 Pencarian Melodi Metode-metode yang digunakan untuk pencarian melodi dapat dibagi dalam tiga kategori, yaitu: 1. Pencarian melodi berbasis index term. Pengindeksan dapat meningkatkan performansi sebuah sistem IR karena semua informasi yang relevan sudah dibangkitkan
secara offline. Operasi pencarian dilakukan dengan cara
membandingkan query dengan indeks-indeks dalam sebuah dokumen. Pencarian dengan metode ini juga dapat diterapkan pada sebuah sistem MIR. Indeks dalam hal ini dapat dianalogikan dengan potongan melodi yang diekstraksi dari sebuah lagu. Salah satu metode ekstraksi melodi yang paling banyak digunakan adalah metode N-gram, yaitu dengan mengelompokkan setiap N nada yang berurutan menjadi satu segmen melodi. S. Downie dan M. Nelson [12], mencoba melakukan eksperimen dengan mengekstraksi lagu-lagu rakyat menjadi potongan-potongan melodi dengan metode N-gram. Eksperimen ini menghasilkan hasil pencarian yang bagus untuk query yang panjang. S. Doraisamy dan G. Widmer [13] mencoba melakukan pencarian melodi terhadap lagu-lagu polifonik dengan metode N-gram tanpa melakukan konversi ke melodi monofonik 2. Pencarian melodi berbasis sequence matching. Pada pencarian melodi berbasis sequence matching, melodi direpresentasikan dengan deretan angka-angka. Pencarian dilakukan dengan membandingan query dengan deretan angka-angka tersebut.
II - 6
Salah satu metode pencarian melodi berbasis sequence matching adalah dengan memperhatikan kontur melodi. Perpindahan dari satu nada ke nada lain dapat dibagi menjadi tiga jenis, yaitu: menaik, menurun dan tetap. A. Ghias, J. Logan, D. Chamberlain dan B.C. Smith [14] menggunakan metode ini untuk menangani ketidakcocokan yang mungkin timbul antara query yang dimasukkan dengan cara humming dengan lagu-lagu yang dibandingkan. Metode lain yang berbasis sequence matching adalah dengan cara menghitung edit distance. Edit distance antara dua melodi dapat didefinisikan sebagai jumlah minimum biaya (cost) yang diperlukan untuk mentransformasikan melodi sumber menjadi melodi sasaran dengan operasi-operasi penyuntingan yang tersedia. Operasi-operasi penyuntingan pada umumnya meliputi: -
Penyisipan, yaitu menyisipkan sebuah nada ke melodi sasaran.
-
Penghapusan, yaitu menghapus sebuah nada dari melodi sumber.
-
Penggantian, yaitu mengganti sebuah nada pada melodi sumber dengan nada dari melodi sasaran.
Pada
umumnya,
pencarian
melodi
berbasis
sequence
matching
hanya
memperhatikan pitch dan durasi nada. M. Robine, P. Hanna dan P. Ferraro [15] mencoba memperbaiki hasil pencarian dengan menghitung edit distance antara dua buah melodi dengan cara memperhitungkan elemen-elemen musik lainnya seperti tonalitas dan irama. 3. Pencarian melodi berbasis geometry matching. Pada pencarian melodi berbasis geometry
matching,
pembandingan
melodi
dilakukan
dengan
cara
mentranslasikan query dengan melodi yang direpresentasikan secara geometrik.
II - 7
Representasi melodi secara geometrik yang paling sering digunakan orang adalah representasi piano roll. Pada representasi piano roll, melodi dipetakan ke dalam diagram fungsi pitch terhadap waktu.
II.4 File MIDI MIDI adalah singkatan dari Musical Instrument Digital Interface dan sangat populer di kalangan musisi sejak ditemukan pertama kali pada tahun 1983. MIDI merupakan suatu protokol komunikasi yang memungkinkan alat-alat musik elektronik berkomunikasi satu sama lain. MIDI merupakan salah satu protokol yang paling efisien untuk merepresentasikan informasi musik. Hal ini menyebabkan protokol MIDI tidak hanya bermanfaat bagi para musisi, melainkan juga untuk aplikasi komputer yang menghasilkan suara seperti multimedia atau game. SMF (Standard MIDI File) adalah format file yang dirancang khusus untuk menyimpan data yang dimainkan atau direkam oleh sebuah alat musik, baik yang berbasis perangkat keras maupun yang berbasis perangkat lunak. Sebuah file MIDI menyimpan event yang mengatur nada-nada yang dimainkan, pemilihan alat musik yang dimainkan, tempo, tanda birama, tanda kunci dan sebagainya. Sebuah file MIDI menyimpan event yang menyatakan nada-nada yang dimainkan dalam beberapa channel. Sebuah file MIDI dapat menampung hingga 16 channel. Selain itu, file MIDI .juga dapat menyimpan informasi-informasi musik lainnya (termasuk nada-nada yang dimainkan pada sebuah channel tertentu) dalam beberapa track. Sebuah file MIDI dapat menampung hingga 65025 track. Sebuah track dapat dianalogikan dengan satu bagian dalam musik,
II - 8
seperti bagian trompet. Sebuah pattern dapat dianalogikan dengan semua bagian musik (trompet, piano, drum, dan sebagainya) pada sebuah lagu. Format SMF dirancang segenerik mungkin agar alat musik elektronik manapun dapat membaca atau membuat file dengan format SMF tanpa harus kehilangan data-data yang terpenting. Format SMF juga dirancang sefleksibel mungkin agar sebuah alat musik dapat menyimpan data yang hanya dapat dimengerti oleh alat musik itu sendiri dan tidak perlu dibaca oleh alat musik lain.
II.4.1 Chunk Data dalam file MIDI tersimpan dalam satuan-satuan yang disebut chunk. Sebuah file MIDI dapat menyimpan beberapa chunk. Setiap chunk memiliki ukuran yang berbeda-beda. Sebuah chunk adalah kumpulan dari byte-byte yang saling berhubungan. Sebuah file MIDI diawali dengan chunk MThd (header) diikuti oleh beberapa chunk MTrk (track). Struktur umum file MIDI dapat dilihat pada Tabel 2.2.
Tabel 2.2 Struktur File MIDI Chunk MThd Chunk MTrk Chunk MTrk … Chunk MTrk
Semua chunk diawali dengan ID sepanjang empat karakter (empat byte ASCII) yang menunjukkan tipe chunk tersebut. Empat byte berikutnya menunjukkan panjang
II - 9
chunk. Semua chunk harus dimulai dengan chunk header seperti di atas, yaitu jenis chunk diikuti dengan panjang chunk tersebut. Panjang chunk tidak mencakup delapan byte pertama pada chunk tersebut. Panjang chunk menyatakan jumlah byte yang terdapat dalam chunk tersebut setelah delapan byte pertama. Di bawah ini adalah contoh chunk header (byte direpresentasikan dalam bentuk heksadesimal): 4D 54 68 64 00 00 00 06 Pada contoh di atas, empat byte pertama jika diterjemahkan dalam ASCII akan menjadi MThd. Empat byte berikutnya menunjukkan bahwa ada 6 byte setelah chunk header tersebut. Semua file MIDI diawali dengan header MThd. Kita dapat mengetahui apakah sebuah file merupakan file MIDI atau bukan dengan melihat empat byte pertama pada file tersebut.
II.4.1.1 Chunk MTHd (Header) Sebuah chunk MThd memiliki ID chunk MThd dan panjang chunk sebesar 6 byte. Empat byte pertama dari chunk MThd adalah 4D 54 68 64 yang merupakan representasi ASCII dari ”M”, ”T”, ”h” dan ”d”. Empat byte berikutnya adalah 00 00 00 06 (panjang chunk MThd selalu 6 byte). Enam byte berikutnya terdiri atas informasiinformasi berikut: 1. Dua byte pertama menunjukkan format file MIDI. 00 00 menunjukkan format 0 00 01 menunjukkan format 1 00 10 menunjukkan format 2
II - 10
Pada format 0, file MIDI terdiri dari satu track dengan 16 channel. Pada format 1, file MIDI terdiri dari satu atau beberapa track yang dimainkan pada saat yang bersamaan. Pada format 2, file MIDI terdiri dari satu atau beberapa track yang dimainkan secara independen. Untuk keperluan tesis ini hanya akan digunakan file MIDI dengan format 0 dan 1. 2. Dua byte berikutnya menunjukkan banyaknya track dalam file. Pada file MIDI format 0, dua byte ini selalu 00 01 (1 track), sedangkan pada file MIDI format 1 atau 2, jumlah track bisa berbeda-beda. 3. Dua byte terakhir berisi jumlah pulsa per not seperempat (Pulse per Quarter Note / PPQN). Misalnya, jika alat musik yang digunakan memiliki 96 PPQN, maka dua byte ini akan berisi 00 60. Di bawah ini adalah contoh chunk MThd: 4D 54 68 64
ID MThd
00 00 00 06
Panjang chunk MThd selalu 6 byte
00 01
File MIDI format 1
00 02
Ada 2 chunk MTrk dalam file MIDI
00 60
Ada 96 pulsa pada setiap not seperempat
II.4.1.2 Chunk MTrk (Track) Chunk MThd diikuti oleh chunk MTrk. File MIDI format 0 hanya memiliki satu chunk MTrk, sedangkan file MIDI format 1 atau 2 dapat menampung hingga 65025 chunk MTrk.
II - 11
Header dari chunk MTrk selalu diawali dengan ID MTrk, diikuti dengan panjang chunk MTrk tersebut. Setiap chunk MTrk memiliki panjang yang berbeda-beda. Sebuah chunk MTrk berisi instruksi-instruksi dan informasi-informasi yang dibutuhkan untuk memainkan musik pada satu track. Instruski-instruksi ini diesbut event dan dinyatakan dengan kode biner tertentu.
II.4.1.3 Variable Length Quantity Variable length quantity merupakan suatu bentuk penyimpanan beberapa jenis data pada file MIDI. Variable length quantity terdiri dari sekumpulan byte yang berurutan dan pada tiap byte hanya 7 bit terakhir yang signifikan (bit kedua sampai bit kedelapan). Jika suatu byte adalah byte terakhir, maka bit pertama byte tersebut bernilai 0. Jika byte tersebut bukan byte terakhir, maka bit pertama bernilai 1. Contoh reprersentasi angka pada variable length quantity dapat dilihat pada Tabel 2.3.
Tabel 2.3 Beberapa Representasi Angka Pada Variable Length Quantity Angka
Variable Length Quantity
Angka
Variable Length Quantity
00000000
00
00003FFF
7F
00000040
40
00004000
81 80 00
00000080
81 00
00100000
C0 00 80
00002000
C0 00
0FFFFFFF
FF FF FF 7F
II.4.2 Event Event adalah informasi yang menunjukkan pemilihan tempo, alat musik yang dimainkan, instruksi untuk membunyikan nada dan sebagainya. Sebuah event pada file II - 12
MIDI selalu didahului oleh waktu terjadinya event tersebut (delta time). Delta time adalah durasi antara sebuah event dengan event sebelumnya. Waktu terjadinya sebuah event diacu dari waktu terjadinya event sebelumnya. Misalnya jika sebuah event muncul 4 satuan waktu setelah event sebelumnya, maka event tersebut memiliki delta time 04. Jika sebuah event muncul bersamaan dengan event sebelumnya, maka event ini memiliki delta time 00. Karena semua track dimulai dari waktu 0, maka delta time untuk event pertama diacu dari 0. Delta time disimpan dalam bentuk variable length quantity. Data yang tersimpan pada sebuah chunk MTrk adalah deretan event dan delta time dari event tersebut. Jadi sebuah chunk MTrk memiliki skema seperti di bawah ini: ID MTrk Panjang chunk MTrk delta time – event delta time – event delta time – event …. delta time – event delta time - end of chunk. Event dapat dibagi menjadi tiga kategori yaitu MIDI event, meta event dan SysEx event.
II.4.2.1 MIDI Event MIDI event merupakan event-event yang berhubungan dengan cara membunyikan sebuah nada. MIDI event diawali dengan byte dari 80 sampai EF. Empat bit pertama pada byte ini menunjukkan jenis event, sedangkan empat bit terakhir menunjukkan
II - 13
channel tempat event tersebut terjadi. Event-event yang tergolong dalam MIDI event dapat dilihat dalam Tabel 2.4.
Tabel 2.4 Jenis-jenis MIDI Event Status
Jumlah byte data setelah status
Jenis
80 – 8F
2
Note Off
90 – 9F
2
Note On
A0 – AF
2
After Touch
B0 – BF
2
Controller
C0 – CF
1
Program Change
D0 – DF
1
Channel Pressure
E0 – EF
2
Pitch Wheel
Ada 7 jenis MIDI event, yaitu : 1. Note Off, berfungsi untuk menghentikan bunyi suatu nada. Event ini diikuti oleh dua byte. Byte pertama menyatakan nomor nada (0 – 127), byte kedua menunujukkan besarnya tekanan (0 - 127) pada nada tersebut (velocity). 2. Note On, berfungsi untuk membunyikan suatu nada. Event ini diikuti oleh dua byte. Byte pertama menyatakan nomor nada (0 – 127), byte kedua menunujukkan besarnya velocity (0 – 127) pada nada tersebut. Event note off juga dapat dinyatakan dengan event note on yang memiliki velocity nol. 3. After Touch, berfungsi untuk mengubah nilai velocity suatu nada. Event ini diikuti oleh dua byte. Byte pertama menyatakan nomor nada (0 – 127), byte kedua menunujukkan besarnya velocity (0 – 127) pada nada tersebut.
II - 14
4. Controller, berfungsi untuk mengubah nilai sebuah kontrol tertentu. Event ini diikuti oleh dua byte. Byte pertama menyatakan jenis kontrol (0 – 127), byte kedua menunujukkan nilai kontrol (0 – 127). 5. Program Change, berfungsi untuk mengubah jenis suara atau alat musik. Event ini diikuti oleh satu byte data yang menyatakan nomor alat musik (0 – 127). 6. Channel Pressure, berfungsi untuk mengubah tekanan (pressure) pada sebuah channel. Event ini diikuti oleh satu byte data yang menunjukkan nilai tekanan (0 – 127). 7. Pitch Wheel, berfungsi untuk mengubah nilai pitch. Event ini diikuti oleh dua byte data yang menyatakan nilai pitch (0 – 127). Selain itu, terdapat pula sebuah event yang disebut running status. Event ini merupakan lanjutan dari event sebelumnya dan digunakan untuk mengurangi jumlah byte jika terjadi event dengan jenis yang sama secara berurutan. Sebuah event yang dinyatakan dengan running status dapat dikenali dari byte setelah delta time yang bernilai antara 00 sampai dengan 7F.
II.4.2.2 Meta Event Meta event berisi informasi-informasi seperti tanda birama (time signature), tanda kunci (key signature), tanda akhir dan sebagainya. Meta event pada umumnya bersifat optional, tapi ada juga meta event yang harus ada pada setiap chunk MTrk. Meta Event selalu diawali dengan byte FF. Semua meta event didahului dengan delta time seperti event-event lainnya sehingga kita dapat mencampur aduk MIDI event dengan meta event. Beberapa jenis meta event dapat dilihat pada Tabel 2.5.
II - 15
Tabel 2.5 Beberapa Jenis Meta Event Status
Nama
Data
Keterangan
00 02
Nomor sequencer
ss ss
01
Teks
len text
02
Hak cipta
len text
03
Nama track
len text
04
Nama instrumen
len text
05
Lirik
len text
06
Penanda
len text
07
Cue point
len text
20 01
MIDI channel
cc
cc = nomor channel
21 01
MIDI port
pp
pp = nomor port
51 03
Tempo
tt tt tt
tt tt tt = tempo lagu
54 05
SMPTE offset
hh mm ss fr ff
58 04
Tanda birama
nn dd cc bb
59 02
Tanda kunci
sf mi
2F 00
Akhir track
Menunjukkan waktu awal SMPTE nn = pembilang dd = penyebut cc bb = nilai metronom sf = banyaknya kres/mol pada tanda kunci mi = mayor/ minor Semua chunk MTrk harus diakhiri dengan event ini
Len menunjukkan banyaknya byte pada text (variable length quantity)
Berikut ini penjelasan mengenai meta event yang tercantum pada Tabel 2.5: 1. Nomor sequence. Event ini terjadi pada awal track sebelum terdapat delta time yang tidak nol dan sebelum terdapat event MIDI lainnya. Event ini menunjukkan nomor dari sebuah sequence. Event ini memiliki format FF 00 02 ss ss. Dua byte data ss ss menyatakan angka yang berhubungan dengan nomor sequece pada pesan MIDI Cue. II - 16
2. Teks. Event ini menampung teks yang dapat mendeskripsikan sesuatu. Dalam hal ini, teks harus berupa karakter ASCII yang dapat dicetak agar mudah dibaca. Event ini memiliki format FF 01
. len adalah jumlah byte yang terdapat dalam text dan dinyatakan dalam bentuk variable length quantity. 3. Hak cipta. Event ini berisi catatan hak cipta berupa teks ASCII yang dapat dicetak dan harus mengandung karakter ©, tahun hak cipta serta pemilik hak cipta. Event ini harus menjadi event pertama dalam chunk MTrk pertama pada waktu 0. Event ini memiliki format FF 02 . 4. Nama track. Event ini menunjukkan nama sequence pada file MIDI format 0 atau track pertama pada file MIDI format 1. Pada track lain, event ini menunjukkan nama track. Event ini memiliki format FF 03 . 5. Nama instrumen. Event ini mendeskripsikan tipe instrumen yang akan digunakan pada sebuah track. Event ini memiliki format FF 04 . 6. Lirik. Event ini berisi lirik lagu yang terdapat pada file MIDI. Event ini memiliki format FF 05 . 7. Penanda. Event ini memberi nama pada sebuah titik pada sequence. Event ini terdapat pada file MIDI format 0 atau track pertama file MIDI format 1. Event ini memiliki format FF 06 . 8. Cue point. Event ini mendeskripsikan sesuatu yang terjadi pada sebuah film atau layar video ketika partitur musik mencapai titik tersebut. Event ini memiliki format FF 07 . 9. MIDI channel. Event ini merupakan event tambahan yang biasanya terdapat pada awal track, yaitu sebelum delta time tidak nol dan sebelum meta event apapun
II - 17
kecuali event nomor sequence. Event ini berfungsi untuk menentukan channel yang akan digunakan oleh meta event atau system exclusive berikutnya. Event ini memiliki format FF 20 01 cc. Byte data cc menunjukkan nomor channel. 10. MIDI port. Event ini juga merupakan event tambahan, biasanya terdapat pada awal track sebelum delta time tidak nol dan sebelum event lainnya. Event ini berfungsi menspesifikasikan MIDI Port tempat mengirimkan event-event MIDI pada sebuah track. Event ini memiliki format FF 21 01 pp. Byte data pp menunjukkan nomor port, dengan 0 sebagai port pertama pada sistem MIDI. 11. Tempo. Event ini menunjukkan perubahan tempo. Event ini memiliki format FF 51 03 tt tt tt. Tiga byte data tt menunjukkan lamanya satu not seperempat dalam satuan mikrodetik. Misalnya jika byte data adalah 07 A1 20, maka setiap not seperempat memiliki panjang 07A120 heksadesimal atau 500000 mikrodetik. 12. SMPTE offset. Event ini menetapkan waktu SMPTE ketika chunk MTrk seharusnya dimulai. Event ini memiliki format FF 54 05 hh mm ss fr ff. Byte data hh menunjukkan jam, mm menunjukkan menit, ss menunjukkan detik, fr menunjukkan frame dan ff berisi fractional frame dalam satuan 1/100 frame. Event ini terletak pada awal track sebelum delta time tidak nol dan sebelum ada event MIDI lainnya. 13. Tanda birama. Event ini mendefinisikan besaran tanda birama (time signature) yang diwakili oleh empat angka. Event ini memiliki format FF 58 04 nn dd cc bb. Byte data nn dan dd menunjukkan pembilang (numerator) dan penyebut (denumerator) dari tanda birama. Penyebut adalah pangkat negatif dari 2,
II - 18
misalnya 2 = not seperempat, 3 = not seperdelapan dan seterusnya. Byte data cc menunjukkan jumlah clock MIDI dalam sebuah metronome click. Byte data bb menunjukkan jumlah not 1/32 dalam sebuah not seperempat. Event ini memungkinkan seseorang untuk mendefinisikan not seperempat dalam arti lain. Misalnya, birama 6/8 dengan metronome click pada setiap 3 not seperdelapan dan 24 clock per not seperempat dinyatakan oleh event FF 58 04 06 03 18 08. 14. Tanda kunci. Event ini mendefinisikan tanda kunci yang digunakan dalam lagu. Event ini memiliki format FF 59 02 sf mi. Byte data sf menunjukkan jumlah kres jika bernilai positif atau jumlah mol jika bernilai negatif. Byte data mi bernilai 0 untuk tanda kunci major, 1 untuk tanda kunci minor. 15. Data khusus. Event ini dapat digunakan untuk menyimpan data yang hanya dapat dibaca oleh program tertentu. Byte-byte awal (pada umumnya 4 byte awal) sebaiknya memuat identitas unik sehingga sebuah program dapat menentukan apakah event ini diperlukan atau tidak. Event ini memiliki format FF 7F . 16. Akhir track. Event ini menandakan akhir dari sebuah chunk MTrk. Semua chunk MTrk harus diakhiri dengan event ini dan event ini hanya boleh muncul sekali pada tiap chunk MTrk. Event ini memiliki format FF 2F 00.
II.4.2.3 SysEx Event SysEx adalah singkatan dari System Exclusive. Event ini fungsinya terbatas, tergantung pada pabirk alat musiknya. Pabrik alat musik yang berbeda akan menghasilkan alat musik dengan SysEx event yang berbeda pula. Sebuah SysEx event
II - 19
diawali dengan byte F0 dan diakhiri dengan byte F7. Event ini digunakan untuk menspesifikasikan pesan SysEx yang menunjukkan byte-byte data yang harus ditransmisikan.
II.4.3 Representasi Durasi Nada Durasi suatu nada didefinisikan sebagai beda waktu antara event note on dengan event note off pada nada tersebut. Untuk mengetahui beda waktu ini digunakan informasi jumlah PPQN dengan rumus sebagai berikut:
Jumlah durasi not seperempat = beda waktu / PPQN
Pada umumnya musisi mendefinisikan istilah tempo sebagai “jumlah not seperempat yang terjadi setiap menit”. Misalnya, pada lagu dengan tempo 100 BPM ada 100 not seperempat dalam satu menit. Pada file MIDI, tempo diperoleh dari meta event yang menyatakan tempo dalam bentuk data 3 byte (tt tt tt). Tiga byte tersebut menyatakan durasi sebuah not seperempat dalam satuan mikrodetik. Untuk mengonversi tempo pada file MIDI dalam bentuk tt tt tt menjadi BPM, digunakan rumus di bawah ini:
BPM = 60000000/(tttttt)
Sebagai contoh, tempo 120 BPM sama dengan 07A120 (heksadesimal) mikrodetik untuk setiap not seperempat. [6]
II - 20
Byte MIDI clock dikirimkan melalui MIDI untuk melakukan sinkronisasi terhadap dua peralatan, misalnya satu peralatan menghasilkan MIDI clock pada suatu tempo yang dihitung secara internal sedangkan peralatan lain melakukan sinkronisasi berdasarkan byte-byte MIDI clock tersebut. Untuk setiap not seperempat terdapat 24 MIDI clock. Oleh karena itu, panjang sebuah MIDI clock adalah tempo (dalam satuan mikrodetik) dibagi dengan 24.
II.5 Konversi Melodi Polifonik Menjadi Melodi Monofonik Ada beberapa algoritma yang dapat digunakan untuk mengonversi melodi polifonik menjadi melodi monofonik, yaitu [3]: 1. Pada alternatif algoritma pertama, semua nada yang dibunyikan pada file MIDI digabungkan ke dalam satu kumpulan event. Jika ada beberapa nada yang dibunyikan pada saat bersamaan, maka nada yang dipilih adalah nada yang paling tinggi. Pada algoritma ini, panjang nada tidak diperhatikan. Jika kemudian ada kumpulan nada lain yang dibunyikan, maka nada yang dipilih adalah nada tertinggi dari kumpulan nada yang baru meskipun mungkin nada terpilih yang lama lebih tinggi daripada kumpulan nada yang baru. Sebagai contoh, melodi pada Gambar 2.7 adalah hasil penerapan algoritma ini terhadap melodi pada Gambar 2.6. Seperti terlihat pada Gambar 2.7, kelemahan algoritma ini adalah kemungkinan munculnya nada-nada tambahan yang tidak diinginkan.
II - 21
Gambar 2.6 Contoh Melodi
Gambar 2.7 Hasil Penerapan Alternatif Algoritma I
2. Pada alternatif algoritma kedua, setiap channel pada file MIDI diproses secara terpisah. Melodi pada masing-masing channel diproses seperti pada algoritma pertama. Melodi yang dipilih adalah melodi pada channel yang memiliki rata-rata nada tertinggi. Kelemahan algoritma ini adalah mungkin saja melodi yang dipilih adalah melodi iringan (accompainment) yang kebetulan bernada tinggi. Hasil penerapan algoritma ini terhadap melodi pada Gambar 2.6 dapat dilihat pada Gambar 2.8.
Gambar 2.8 Hasil Penerapan Alternatif Algoritma II II - 22
3. Pada alternatif algoritma ketiga, setiap channel pada file MIDI diproses secara terpisah. Melodi pada masing-masing channel diproses seperti pada algoritma pertama. Jika ada beberapa nada yang dibunyikan pada saat bersamaan, maka nada yang dipilih adalah nada yang paling rendah. Kelemahan algoritma ini adalah mungkin saja melodi yang dipilih adalah melodi iringan jika pada sebuah channel terdapat melodi utama dan melodi iringan. Hasil penerapan algoritma ini terhadap melodi pada Gambar 2.6 dapat dilihat pada Gambar 2.9.
Gambar 2.9 Hasil Penerapan Alternatif Algoritma III
II - 23