BAB 2 LANDASAN TEORI
2.1 Pengertian MIDI Musical Instrument Digital Interface (MIDI) adalah suatu bahasa musik standar yang diterima secara umum dalam dunia musik digital. (Tim Penelitian dan Pengembangan Wahana Komputer, 2004, p2). MIDI adalah interface untuk perangkat musik elektronik dengan perangkat-perangkat yang berkaitan. (Casabona, Helen and David Frederick, 1987, p5). Beberapa definisi MIDI berdasarkan Paul Messick (1998, p3). MIDI adalah:
Media untuk menghubungkan antara perangkat musik, komputer, dan perangkat lainnya.
Media untuk memainkan suara yang telah diolah
Media untuk standarisasi protokol komunikasi
Berguna sebagai media untuk mengendalikan perangkat non musikal, seperti sistem pencahayaan pada sebuah pertunjukan teater, tape rekorder, dan lainlain.
Sebuah kegiatan yang berhubungan erat dengan proses tetapi tidak dengan audio.
Bentuk nyata dari proses pembuatan musik.
Media yang dapat diubah-ubah. (Dengan mudah dapat diubah-ubah untuk mengganti not, waktu, dan bahkan bunyi yang dihasilkan oleh instrumen).
MIDI bukan merupakan: 6
7
Media berbentuk audio.
Media berupa gelombang audio.
Media yang hanya digunakan sound card pada komputer.
Media yang lambat dalam hitungan waktu yang sebenarnya.
Media yang kecepatan tidak terbatas (tetap dapat membuat delay).
Pada dasarnya, MIDI tidak lebih dari protokol komunikasi. MIDI digunakan untuk mengirim informasi mengenai proses kinerja musikal. MIDI tidak mengenal bunyi dari not yang dihasilkan, akan tetapi MIDI dapat mengenali not apa yang dimainkan menurut waktu dan cara not tersebut dihasilkan. Sumber bunyi, seperti synthesizer, menerima data MIDI dan menghasilkan suara sebagai respon. Jika synthesizer diatur untuk membunyikan suara terompet, maka MIDI events membuat itu untuk menjadi suara yang menyerupai terompet. Dalam hal ini, MIDI seperti partitur musik, bukan berupa suara. Namun tidak sepenuhnya seperti partitur musik, MIDI messages dapat mengalir melalui kabel dan menyebabkan synthesizer menghasilkan suara seperti yang diinginkan.
2.2 Konfigurasi MIDI dan Pendukungnya
8
Gambar 2.1 A Possible MIDI Configuration Sumber : java.sun.com Dalam contoh ini, aplikasi program diatas memainkan musik dengan memuat musical score yang ada pada disk. Standart MIDI files memiliki track yang juga merupakan bagian dari MIDI events. Sebagian events memainkan not baik yang berisi melodi maupun ritme. MIDI file yang ada dibaca dan dimainkan oleh piranti lunak berbentuk sequencer. Sequencer tersebut memainkan musiknya dengan mengirimkan MIDI messages kepada perangkat lainnya seperti internal atau eksternal synsthesizer. Synthesizer itu sendiri akan membaca data berupa kumpulan suara termasuk instruksi untuk mengemulasikan suara dari jenis instrumen musik tertentu. Jika tidak demikian maka synthesizer akan memainkan not yang tersimpan di MIDI file dengan menggunakan suara yang telah ada pada sythesizer tersebut.
9 Seperti pada Gambar 2.1, MIDI events harus diterjemahkan kedalam bentuk MIDI yang polos ( bukan dalam format time tagged ). Sebelum dikirimkan melalui MIDI output port ke synthesizer eksternal. Data raw MIDI masuk ke dalam komputer dari sumber MIDI eksternal (gambar keyboard dalam diagram) akan diterjemahkan kepada time-tagged MIDI messages yang dapat mengontrol synthesizer, atau yang disimpan
sequencer
untuk
digunakan
kemudian.
(http://java.sun.com/j2se/1.4.2/docs/guide/sound/programmer_guide/chapter1.html
-
112483 ).
2.2.1 Kabel MIDI Menurut Tim Penelitian dan Pengembangan Wahana Komputer (2004, p3), kabel MIDI adalah komponen utama yang digunakan untuk membuat, mentransfer, dan menerima perintah MIDI serta segala pemberian efek atau program track yang dibutuhkan untuk membuat lagu.
Gambar 2.2 Kabel MIDI Sumber : www.audiofitter.com
10 2.2.2 MIDI Port
Menurut Tim Penelitian dan Pengembangan Wahana Komputer (2004, p5), Dalam beberapa perangkat seperti keyboard dapat ditemukan tiga port yaitu: MIDI IN, MIDI OUT dan MIDI THRU yang dapat terhubung dengan perangkat lain. Fungsi dari ketiga port ini adalah : 1. MIDI IN : Port ini berfungsi sebagai penerima perintah MIDI dari suatu perangkat ke perangkat lain yang terhubung. 2. MIDI OUT : Port ini berfungsi sebagai pengirim perintah MIDI dari suatu perangkat ke perangkat lain yang terhubung. 3. MIDI THRU : Port ini berfungsi untuk meneruskan perintah MIDI yang diterima kepada perangkat lain.
Gambar 2.3. MIDI port pada MIDI Controller Sumber : encyclopedia.quickseek.com
11 Pemasangan port pada masing – masing perangkat harus tersusun dengan benar. Contohnya pada keyboard 1 ujung kabelnya dihubungkan ke port MIDI OUT dan pada keyboard 2 ujung kabelnya yang lain dihubungkan ke port MIDI IN. Maka setelah penekanan tuts pada keyboard 1 perintah akan dikirim ke keyboard 2. Apabila keyboard 1 memprogram suara piano dan keyboard 2 memprogram suara slow string, maka akan keluar suara dari keyboard 2 dengan suara tersebut, tetapi keyboard 1 tetap akan mengeluarkan suara piano ditambah dengan suara slow string dari keyboard 2. Keyboard 2 yang menerima kedua program suara tersebut akan memainkannya secara bersamaan. Apabila ingin menghubungkan alat musik yang lain dengan kedua alat musik tersebut, ujung kabel port MIDI THRU harus dihubungkan ke keyboard 2 dan ujung yang lain ke port MIDI IN pada keyboard ketiga. Dengan konfigurasi ini apabila tuts ditekan dari keyboard 1 yang diprogram piano maka keyboard 2 juga akan memainkan piano dan diselingi dengan slow string. Jika pada keyboard 3 diprogram dengan suara helikopter maka suara dari perangkat ketiga yaitu piano, slow string dan helikopter akan dimainkan bersamaan dengan nada yang sama pula jika set nada yang ada tidak diubah.
2.2.3
MIDI Controller Terdapat 2 jenis pengertian mengenai MIDI Controller. Pengertian pertama
berupa perangkat keras atau piranti lunak yang dapat menghasilkan dan mengirim data MIDI kepada perangkat MIDI yang sesuai, pengertian yang kedua adalah sebuah perangkat keras yang sering digunakan untuk mengontrol sebuah permainan, tetapi tidak tersambung langsung dengan event note on/ note off. Contohnya, pengaturan slider untuk menetapkan perintah membuka dan menutup filter pada frekuensi rendah (Low pass filter) ditetapkan pada sebuah synthesizer dengan controller 18. Setelah ditetapkan,
12 maka
akan
terdapat
perbedaan
pengaturan
dengan
controller
yang
lain.
(http://en.wikipedia.org/wiki/MIDI_controller)
Gambar 2.4 Implentasi MIDI keyboard controller Sumber : en.wikipedia.org
Controller pada MIDI tidak hanya berbentuk keyboard. Seiring dengan perkembangan jaman dan inovasi, telah lahir controller pada MIDI dalam bentuk gitar MIDI, alat – alat tiup dengan MIDI analyzer, dan juga terdapat alat musik pukul seperti drum MIDI.
13
Gambar 2.5 Yamaha WX5 MIDI Wind Controller Sumber : www.bluezone.nl 2.2.4
Sequencer
Gambar 2.6 Analog Sequencer Sumber : www.buzzclick-music.com Sequencer adalah sebuah perangkat untuk merekam dan memainkan sebuah sequence MIDI event. Sequencer mempunyai transmitter, karena sequencer bertugas
14 untuk mengirimkan MIDI messages yang tersimpan di dalam sequence, kepada perangkat lain seperti synthesizer atau MIDI output port. Sequencer juga mempunyai receiver karena salah satu tugasnya adalah merekam MIDI dan menyimpannya dalam sebuah sequence. (http://java.sun.com/j2se/1.4.2/docs/guide/sound/programmer_guide/chapter8.html#118 862 )
2.2.5
Synthesizer Synthesizer adalah alat untuk menghasilkan suara. Suatu synthesizer dapat
menampung serangkaian objek dari MIDI Channel khususnya 16 channel MIDI yang ada,
sampai
objek
MIDI
tersebut
memanggil
16
channel
yang
ada.
(http://java.sun.com/j2se/1.4.2/docs/guide/sound/programmer_guide/chapter8.html#118 862 )
Gambar 2.7 Virtual Synthesizer Sumber : www.geniator.com
15 Synthesizer
adalah
instrumen
musik
elektronik
yang
didesain
untuk
memproduksi suara secara elektronik dengan menggunakan teknik tertentu seperti additive, subtractive, FM, physical modeling synthesis, phase distortion atau scanned synthesis. (http://en.wikipedia.org/wiki/synthesizer)
Gambar 2.8 Synthesizer dalam perangkat keras Sumber : www.synthesizer.de
2.3 Protokol pada MIDI Menurut Paul Messick (1998, p14), MIDI adalah protokol berbentuk serial dimana setiap informasi dikemas dalam bentuk bit dan dikirimkan melalui kabel dan bit berikutnya mengikuti, dan seterusnya. Setiap byte yang dikirim pada 31.250 baud yang didalamnya terdapat 10 bit, terdiri atas start bit, 8 data bit, dan stop bit. Jadi 31.250 byte dapat dikirimkan setiap detik atau setiap byte memerlukan waktu 320 microsecond untuk dikirim.
16
2.4 MIDI Messages Menurut Paul Messick (1998, p14) MIDI message adalah kumpulan data yang memiliki spesifikasi secara penuh dalam sebuah event. Sebagian besar messages memiliki panjang satu, dua atau tiga bytes atau lebih dari itu. Setiap tiga-byte message dihasilkan sebuah Note On. Contohnya: memerlukan 960 microsecond, hampir mendekati satu millisecond untuk mengirim. Pada intinya, lebih dari sekitar 1000 not dapat dikirim dalam waktu satu detik. Selain itu, MIDI messages juga memiliki satu status byte dan nol atau lebih data byte. Nilai numerik dari satu status byte selalu terpaut antara 128 dan 255 sedangkan semua data bytes terpaut diantara 0 sampai dengan 127. Perbedaan ini memudahkan proses identifikasi antara status dan data, tetapi batas dari nilai satu data berisi atas tujuh bit. Pada dasarnya MIDI messages terdapat dua jenis yaitu: 1. Channel Messages 2. System Messages Channel messages lebih mengarah kepada hal – hal yang bersifat detail dan dibagi atas Channel Voice messages (untuk mengidentifikasi not) dan Channel Mode messages (untuk mengidentifikasi penerima). System messages sendiri terbagi tiga yaitu, System Common messages ( berisi data untuk mengenali perangkat yang ada dalam sebuah sistem), System Real Time messages ( menangani waktu dalam satu event yang berhubungan ) , System Exclusive messages ( messages untuk menangani semua yang belum terpikirkan oleh pembuat MIDI).
17
Gambar 2.9 Pembagian MIDI messages Sumber : www.saxmusicplus.com
2.4.1 Channel Voice Messages Sejauh ini sebagian besar cara pengiriman data yang menggunakan MIDI adalah Channel Voice messages atau sering disebut Channel messages. Messages ini dapat diarahkan ke dalam perangkat detail yang diinginkan (dengan cara mengatur channel yang ada). Semua Channel messages mengidentifikasikan informasi dari permainan seperti not yang dimainkan dan bagaimana jenis suara yang dihasilkan oleh not tersebut. Contohnya sebuah Note on message dapat mengenali not apa yang dimainkan serta bagaimana cara not tersebut dimainkan, dan Pitch Bend message akan mempengaruhi pitch dari not yang berbunyi.
18 Empat bit status byte dari Channel messages menentukan channel dari masing – masing not tersebut sedangkan empat bit yang lain mengindikasikan seperti apa channel messages yang ada. Untuk meminimalkan jumlah bit yang dibutuhkan channel satu sampai dengan enam belas ditetapkan sebagai nol sampai dengan lima belas (0x00 – 0x0F) dalam empat bit yang ada pada awal status bytes. Pada Tabel 2.1 di bawah ini terlampir spesifikasi MIDI messages dalam 8 data bit.
Tabel 2.1 Channel Voice Messages
(Sumber : Maximum MIDI)
Status byte (Hex)*
Data Byte
Message
0x8n
NOTE, VEL
Note Off
0x9n
NOTE, VEL
Note On
0xAn
NOTE, PREASURE
Key Aftertouch
0xBn
CTRL, VALUE
Control Change
0xCn
PROG#
Program Change
0xDn
PRESSURE
Channel Aftertouch
0xEn
LSB, MSB
Pitch Bend
* n = channel , 0 for channel 1, F for channel 16
2.4.1.1 Note On/Off Dua messages ini adalah sumber suara dalam MIDI. Masing – masing memiliki pitch dari setiap note dan velocity. Pada umumnya nada C pada tengah – tengah keyboard mempunyai nilai not MIDI 60. Beberapa pitch diluar jangkauan dengar yang terdeteksi bisa dimainkan dengan MIDI, contohnya seperti canine (frekuensi suara yang hanya bisa ditangkap oleh hewan seperti anjing atau kelelawar) atau bunyi gerak
19 aktivitas dalam bumi. Velocity memiliki pengertian secara umum sebagai sesuatu yang berhubungan terhadap keras-lembutnya bunyi: 0 untuk diam, 64 untuk mezzopiano (mp), dan 127 untuk fortississimo (fff). Note On akan membunyikan not pada pitch yang ditentukan. Sekali dimulai, sebuah not harus dihentikan, kalau tidak akan menjadi not yang terperangkap (bunyi terus menerus). MIDI memiliki dua cara untuk menghentikan sebuat not dari bunyi: Note Off message dan Note On message dengan velocity 0 (nol). Note Off message sama dengan Note On message. Hal tersebut mengdeteksi not-not yang dituju dan velocity. Bagaimana pun, velocity dapat mendeteksi bagaimana sebuah not bisa dibunyikan pada saat ditekan atau berhenti pada saat dilepas. Note On pada velocity 0 (nol) dapat bekerja dengan baik. Apabila velocity berhubungan dengan keras-lembutnya suara, maka akan mungkin pada velocity 0 (nol) akan menghasilkan diam. Mengakhiri sebuah not dengan menggunakan Note On message pada velocity 0 (nol) merupakan hal yang sudah umum digunakan. Note On dan Note Off , keduanya memiliki status nilai yang sama. Hal ini dapat terjadi pada running status yang ditujukan mengurangi sejumlah bytes yang dibutuhkan untuk memulai dan mengakhiri setiap not. Durasi dari sebuah not adalah waktu yang terkait antara Note On dan Note Off yang sama (atau Note On dengan velocity 0 (nol).
2.4.1.2 Aftertouch Aftertouch messages dikirimkan oleh beberapa keyboard setelah tuts pada keyboard tersebut dilepas. Terdapat beberapa tekanan horisontal dan vertikal pada sebuah not selama not itu sendiri berbunyi dan menghasilkan beberapa aftertouch messages. Pada instrumen – instrumen tertentu, messages ini mungkin sudah ditetapkan
20 sesuai dengan bunyi instrumen itu sendiri. Salah satu dari contoh penggunaan aftertouch messages ini adalah terciptanya bunyi polyphonic dan monophonic.
2.4.1.3 Control Change Control change messages digunakan untuk menaik-turunkan volume, pan. portamento time, modulation, dan untuk membuat bunyi lain pada perangkat MIDI. Control Change mempunyai 120 pilihan untuk dapat menghasilkan bunyi seperti yang kita inginkan, dan sebagian besar tidak terdefinisi. Controller bernomor 0 sampai dengan 31 yang menentukan the Most Significant Byte(MSB) dari controller yang telah diberikan, mempunyai resolusi tujuh bit. Jika dibutuhkan extra-control, controller bernomor 32 sampai dengan 63 memberikan tujuh bit tambahan untuk controller 0 sampai dengan 31 yang telah ada. Controller bernomor 120 sampai dengan 127 telah ditetapkan untuk Channel Mode Messages (yang akan dibahas selanjutnya).
Tabel 2.2 Control Change Messages
(Sumber : Maximum MIDI)
Controller (Decimal)
Function
Controller (Decimal)
Function
0
Bank Select
69
Hold 2
1
Modulation Wheel
70
Sound Controller 1 (sound variation)
2
Breath Controller
71
Sound Controller 2 (timbre/harmonic
3
Undefined
4
Foot Controller
72
Sound Controller 3 (release time)
5
Portamento Time
73
Sound Controller 4 (attack time)
6
Data Entry MSB
74
Sound Controller 4 (brightness)
7
Channel Volume
75 – 79
Sound Controller 5 –10
Intensity )
21 8
Balance
80 – 83
General purposes controllers
9
Undefined
84
Portemento control
10
Pan
85 – 90
Undefined
11
Expression controller
91
Effect 1 Depth
12
Effect control 1
92
Effect 2 Depth
13
Effect control 2
93
Effect 3 Depth
14 – 15
Undefined
94
Effect 4 Depth
16 – 19
General
95
Effect 5 Depth
Purposes
controllers 20 – 31
Undefined
96
Data increament
32 – 63
LSB for controller 0 - 31
97
Data decreament
64
Damper Pedal (Sustain)
98
Non-register parameter LSB
65
Portamento on/off
99
Non-register parameter MSB
66
Sostenuto
100
Register parameter LSB
67
Soft Pedal
101
Register parameter MSB
68
Legato foorswitch
120 – 127
Reserved for channel mode messages
Nomor - nomor controller yang berada di atas 63, digunakan sebagai “switch”(on/off), dimana nilai dibawah 64 akan merespon kepada “off”, sedangkan di atas atau sama dengan 46 adalah “on”. Tetapi fasilitas yang ada pada MIDI dapat membuat controller tersebut untuk melanjutkan controller yang ada sebelumnya.
2.4.1.4 Program Change Channel messages ini menentukan program yang diinginkan atau patch (Sumber suara asli) pada instrumen yang menerimanya. Dengan mengubah program (program change), alat musik seperti flute dapat berubah menjadi saxophone atau bahkan pipe organ dan instrumen – instrumen lain yang mempunyai bunyi. Sebuah nomor program tidak mempunyai informasi yang mengaitkan suatu bunyi dengan bunyi sebenarnya.
22 Angka 0 pada control change messages, pertama kali akan menjalankan program untuk memilih instrumen yang diterima.
2.4.1.5 Pitch Bend Pitch Bend messages bertujuan untuk mengatur semua not yang dimainkan pada channel masing – masing dan disesuaikan dengan pitch yang diinginkan. Pitch yang ada mempunyai 14 bit angka terdiri atas dua 7 bit bytes. Jadi sebuah MIDI messages yang dikirimkan ke penerima (receiver) dengan batas bend lima dapat membelokkan nada yang dikirimkan menjadi naik dan turun sebesar lima semitones. Batas bend dari masing – masing instrumen dapat diatur dari panel depan yang ada.
2.4.2 Channel Mode Messages Menurut Paul Messick (1998, p18), Channel mode messages dapat mengganti kebiasaan penerima (receiver) dalam menerima messages. Sebagian dari messages tersebut dapat mengubah penerima menjadi state khusus sementara yang lain menerima lanjutan dari channel voice messages. Seperti yang telah dibicarakan bahwa channel mode messages adalah bagian dari control change messages dari control change messages dengan lanjutan nomor 120 – 127 (Tabel 2.2).
23 Tabel 2.3 Channel Mode Messages (Sumber : Maximum MIDI)
Mode Messages (decimal)
Status/Data Bytes*
All Sound Off (120)
0xBn 0x78 0x00
Reset All Controller (121)
0xBn 0x79 0x00
Local Control (122)
0xBn 0x7A VAL
All Notes Off (123)
0xBn 0x7B 0x00
Omni Off (124)
0xBn 0x7C 0x00
Omni On (125)
0xBn 0x7D 0x00
Mono On (Poly off ) (126)
0xBn 0x7E VAL
Usage
VAL = 0 for off, VAL =127 for on
VAL = number of channel, or 0 to set the number of channels to the number of voices available
Poly On (Mono Off) (127)
0xBn 0x7F 0x00
*n = Basic Channel, 0 for channel 1, F for channel 16
Channel mode messages akan dikirimkan ke basic channel dari masing – masing instrumen penerima. Basic channel (atau sering disebut dengan global channel) adalah channel tertentu dari sebuah perangkat yang sudah ditentukan oleh perangkat tersebut (secara permanen) atau yang dapat diatur oleh pengguna pada panel depan dari perangkat tersebut. Dengan mengatur basic channel tersebut maka Channel Mode messages yang dikirimkan pada channel lain akan diabaikan. Perangkat penerima (receiving device) dapat mempunyai satu dari empat jenis mode, yaitu omni on, omni off, mono on, poly on. Seperti pada Tabel 2.4 di bawah ini :
24 Tabel 2.4 Tabel Penerimaan (Sumber : Maximum MIDI) Poly
Omni On
Omni Off
Mono
Mode 1
Mode 2
Omny On
Omny On
Poly
Mono
Mode 3
Mode 4
Omny Off
Omny Off
Poly
Mono
Contohnya untuk memilih Mode 1 pada penerima, kirim Omni On message diikuti oleh poly on messages. Mengaktifkan omni on memberikan penerima untuk merespon messages yang ada pada semua channel. Sedangkan omni off akan memberikan messages untuk penerima hanya pada basic channel, dan akan mengabaikan semua messages yang yang dikirimkan ke channel lainnya. Poly adalah kependekan dari polyphonic. Instrumen yang mempunyai karakteristik polyphonic dapat membunyikan lebih dari satu nada dalam satu waktu. Sedangkan memilih mono akan membatasi instrumen untuk membunyikan satu not pada satu waktu. Penggunaan poly atau mono biasanya bergantung pada tipe dan karakter suatu instrumen tersebut dimainkan. Piano adalah instrumen polyphonic, sedangkan memainkan chord di tuba adalah hal yang paling sulit ( karena tuba memiliki sifat mono). Terdapat empat channel mode messages yang lain sebagai tambahan dari empat mode messages yang telah dijelaskan sebelumnya. Mengatur ulang ( reset ) controller
25 akan membuat semua controller yang ada (seperti pitch bend dan modulation wheel) kembali ke posisi awal mereka, dan semua note off
messages yang ada akan
memberhentikan semua nada yang sedang berbunyi atau messages yang berada di tengah – tangah. Bagaiman pun, dua messages ini akan diabaikan oleh penerima (receiver) yang mempunyai mode omni on. Karena itu semua note off sering digunakan untuk tombol panik (panic button). Sama halnya seperti note off messages, Sound off messages juga digunakan untuk memberhentikan semua not yang sedang dimainkan. sound off mesages baru - baru ini ditambahkan pada MIDI, sehingga beberapa perangkat yang sudah berumur mungkin tidak merespon pesan ini. Dalam situasi yang tidak stabil, cara paling meyakinkan untuk menghilangkan not yang berada ditengah – tengah (stuck notes) adalah dengan mengirimkan perintah note off (atau note on dengan velocity nol) untuk 128 not dan kepada 16 channel.
2.4.3 System (Common) Messages
Tabel 2.5 System Common Messages (Sumber : Maximum MIDI) Status Byte ( Hex )
Data Byte(s)
Message
0xF1
VAL
MIDI Time Code Quarter Frame
0XF2
LSB, MSB
Song Position Pointer
0XF3
SONG#
Song Select
0XF4
-
Undefined
0XF5
-
Undefined
0XF6
-
Tune Request
0XF7
-
EOX (End of Exclusive)
26 Menurut Paul Messick (1998, p20), System Common messages digunakan untuk mengkoordinasi kegiatan yang berhubungan dengan semua perangkat yang terhubung oleh sistem yang diberikan. Di antara dua dari tujuh System Common messages yang ada, adalah tidak terdefinisi. EOX( End Of Exclusive ) messages dan MIDI Time Code Quarter Frame messages akan dijelaskan berikutnya. The Song Position Pointer (SPP) bertugas memberitahu sequencer atau drum machine dimana posisi playback ditempatkan. Posisi yang mempunyai nilai sebanyak 14-bit adalah perhitungan waktu dari permulaan urutan. Masing – masing dari unit waktu tersebut sama dengan enam MIDI clock. Sejak ada 24 MIDI clock dari seperempat not, satu waktu unit SPP terdiri atas enam belas not. Karena itu SPP messages menentukan posisi dari enam belas not berurutan. Messages ini telah dikirim sebelum System Real-Time messages seperti Start atau Continue. Tetapi messages ini tidak mempunyai arti jika sistem MIDI tidak bersinkronisasi dengan MIDI sync. Tune Request adalah messages yang tidak lagi dimiliki oleh synthesizer analog. Instrumen ini sangat sensitif dengan frekuensi out of tune, dan Tune Request akan membuat frekuensi tersebut untuk kembali memusat pada oscillator. Messages ini sering digunakan pada masa ini terhadap sebagian besar synthesizer dan modul bunyinya akan sedikit lebih baik jika dibandingkan dengan komputer dengan output audio.
2.4.4 System Real-Time Messages Menurut Paul Messick (1998, p21), System Real Time Messages bertugas memberi indikasi bahwa suatu proses sedang terjadi pada saat ini. Messages ini berbentuk single-byte, mempunyai sifat yang unik untuk muncul dimana saja bahkan antara status byte dan data byte dari MIDI messages yang ada.
27 MIDI Timing Clock messages, atau sering disebut dengan MIDI Clock messages, dikirimkan ketika sistem sedang mensinkronisasi waktu dengan perangkat MIDI lainnya. Biasanya, jenis dari MIDI sync ini digunakan dengan drum machine dan dengan beberapa tipe dari tape synchronization. Dua puluh empat MIDI Clock dikirimkan untuk setiap seperempat not. Tingkat pengiriman messages ini tergantung dari kecepatan tempo. Faktor lain juga terdapat pada MIDI sync yang berguna untuk mengurangi kerja MIDI Clock yang berjalan. Dengan hanya 24 clocks per ketukan akan banyak sekali kemungkinan untuk terjadi Error. Start (0xFA), Continue (0xFB) dan Stop (0xFC) adalah real-time messages yang mengatur sinkronisasi saat menggunakan MIDI sync. Start messages mengindikasikan waktu mulai pada awal dari sebuah sequence yang sedang terjadi. Stop messages akan segera memberhentikan playback atau record. Walaupun MIDI clocks terus – menerus menerima messages, penerima (receiver) akan menahan posisi tersebut sekarang dan mengabaikan MIDI Clocks sampai pesan start atau continue diterima. Continue messages akan menyebabkan timing yang sedang berjalan melanjutkan dari posisi yang sudah ada ke perintah MIDI Clocks yang selanjutnya. Messages ini memberikan sequence untuk dihentikan sementara (dengan menggunakan stop messages) dan melanjutkannya kembali. Mengirimkan Start messages setelah Stop messages akan menyebabkan siklus sequence berhenti dan memulai lagi dari paling awal. System reset messages adalah pesan yang juga sering digunakan oleh MIDI messages. Jika diterima dan dikenali oleh sebuah perangkat, System reset messages ini bertugas untuk membuat sebuah perangkat kembali seperti posisi power dinyalakan. Tidak ada status yang berjalan, mematikan semua not yang berbunyi, menyalakan
28 kendali lokal, dan membuat semua bagian – bagian yang ada pada waktu kondisi sebuah perangkat dinyalakan.
2.4.5 System Exclusive Messages Menurut Paul Messick ( 1998, p22 ), sistem ini adalah kambing hitam dari MIDI protocol. Pesan – pesan ini adalah pesan baru yang dapat digunakan untuk tujuan yang akan datang dan dapat dibayangkan. Pada awalnya, sistem ini telah didesain sebagai suatu method untuk mentransfer semua pengaturan penyimpanan dari satu instrumen ke instrumen lain. Semua sysex messages mempunyai struktur yang sederhana. Dimulai dengan System Exclusive status byte, 0xF0. Satu sampai tiga byte Manufacturer ID ( kode pabrik) untuk mengidentifikasi instrumen mana yang dituju. Jika bit pertama adalah nol maka diikuti oleh bentuk bit kedua yaitu ID dengan 16 bit. Semua nomor pada data bytes dapat dimasukkan (Semua 7 bit, dengan bit ke delapan dibuat menjadi nol). Biasanya, Satu atau lebih data bytes awal akan menentukan jenis instrumen dan jenis dari sysex messages.
2.5 General MIDI Menurut Tim Penelitian dan Pengembangan Wahana Komputer, General MIDI (GM) adalah standar format dalam dunia musik dan di dalam pembuatan MIDI. GM adalah spesifikasi format MIDI pada tiap keyboard yang mengadopsinya. Kegunaan GM adalah untuk memanggil atau loading dan memainkan perintah MIDI yang telah disimpan dengan format Standart MIDI files ( SMF ).
29 Di dalam beberapa jenis keyboard dan soundcard yang memiliki tanda dan logo GM kompatibel tersebut biasanya memiliki sound set GM dengan pengaturan beragam dari suara – suara yang sama pada beberapa keyboard yang memiliki logo GM tersebut. GM memiliki 128 suara alat musik, drum set dan beberapa sound effect dari tiap – tiap alat musik, tergantung jenisnya. Menurut Paul Messick (1998, p26), General MIDI dapat menentukan kapasitas minimum yang ada dari modul suara (sound module) yang harus disediakan. Modul suara tidak harus mendukung General MIDI, tetapi jika masing – masing perangkat atau keyboard mempunyai logo GM, maka user dapat merekam atau memainkan sequences tanpa harus mengkhawatirkan bagaimana suara yang dihasilkan oleh sistem lainnya.
Gambar 2.10 Logo General MIDI Sumber : www.audiomaster.it
2.5.1 General MIDI Mode Menurut Paul Messick (1998, p26), untuk dapat mencapai standar General MIDI maka jumlah minimum modul jenis suara harus dipenuhi. Diantaranya adalah harus mempunyai 128 jenis suara instrumen yang berbeda (sound set), atau preset yang disusun secara khusus. Selain itu GM sound set harus mempunyai set suara drum secara terpisah yang dipetakan (mapping) secara berbeda ke dalam masing – masing key
30 number. Semua suara yang ada, baik presets maupun drum harus dapat dimainkan dengan aturan – aturan tertentu, dan akan dipengaruhi oleh set minimal dari controllers dan MIDI messages yang lain. Dari beberapa fasilitas yang ada, maka pembuat musik dapat membuat MIDI files yang akan berbunyi sama ketika dimainkan dengan bermacam – macam sistem yang ada. Menurut Paul Messick (1998, p27), General MIDI termasuk sebuah bentuk (mode). Instrumen pada General MIDI mempunyai beberapa sound set dan cara mengoperasikannya. General MIDI tidak membatasi apa yang bisa dilakukan oleh instrumen yang dipilih. Karena terdapat dua System Exclusive messages yang mengatur masuk dan keluarnya sebuah instrumen dari General MIDI mode. Pesan – pesan yang ada adalah : 1. General MIDI On : F0 7E
09 01 F7 Pesan ini akan menyalakan General MIDI mode. Sebuah instrumen akan menyediakan paling tidak set minimum yang ada pada General MIDI, dan menggunakan GM Sound Set dan Percussion Map adalah salah satu list yang harus terdaftar pada suara yang tersedia. 2. General MIDI Off : F0 7E 09 01 F7 Pesan ini akan mematikan fungsi General MIDI mode yang ada. Instrumen yang menerima akan melakukan aktifitasnya seperti biasa. Dalam kedua kasus diatas “< identitas perangkat >” , berlaku untuk ditujukan kepada satu instrumen atau menyebarluaskan pesan itu ke semua perangkat yang ada.
31 2.5.2 General MIDI Requirement Menurut Paul Messick (1998, p27 ), suara yang ada pada GM harus mempunyai sedikitnya 24 suara yang secara dinamis dapat dialokasikan kepada 16 MIDI channel yang ada. Masing – masing channel dapat ditentukan untuk suara yang berbeda – beda. Channel 10 dalam GM selalu digunakan untuk suara perkusi, 24 suara lainnya juga dapat dialokasikan dengan dinamis menuju semua 16 channel yang ada (termasuk suara perkusi), atau 8 dari 24 suara dapat dialokasikan untuk suara perkusi, sedangkan 16 suara lainnya dapat dialokasikan ke channel yang lain.
Tabel 2.6 General MIDI Controller (Sumber : Maximum MIDI) Controller
Description
1
Modulation
7
Volume
10
Pan
11
Expression
64
Sustain Pedal
121
Reset All Controllers
123
All Notes Off
Semua channel yang ada akan merespon kepada Pitch Bend, Aftertouch, dan minimum set dari controller. perangkat yang diberikan akan merespon kepada range MIDI messages yang lebih lebar saat berada dalam GM mode. Tetapi pada intinya semua perangkat suara yang ada pada general MIDI akan merespon semua perintahnya.
2.5.3 General MIDI Soundset
32 Menurut Paul Messick (1998, p28), suara yang ada pada General MIDI terbagi atas 16 grup yang berbeda. Masing – masing grup terdiri atas 8 preset. Jenis suara yang ada bertindak sebagai pusat instrumen lainnya yang mempunyai jenis sama. Jadi dalam satu grup, jenis suara yang satu akan berbeda dengan jenis suara yang lain. Modul suara bebas diproduksi dengan arsitektur yang berbeda dan metode suara sintesis dalam pembuatan produknya. Dengan begitu, maka kualitas suara yang ada mungkin mengalami perbedaan antara satu perangkat dengan perangkat lainnya, tetapi suara trumpet tetap diidentifikasi sebagai suara trumpet dan suara violin akan diidentifikasi sebagai suara violin pula.
2.5.4 Percussion Map Menurut Paul Messick (1998, p28), untuk chromatic percussion presets dalam program 9 sampai 16, semua suara perkusi akan dimainkan pada channel 10. Masing – masing suara ini dipetakan kepada masing – masing kunci terntentu, contohnya not bernomor 36 mempunyai suara bass drum dan not dengan nomor 70 memainkan maracas. Keseluruhan dari suara perkusi yang ada berjumlah 47 yang menyediakan dasar – dasar perkusi yang sesuai untuk sebagian besar musik. Tabel 2.7 General MIDI Instrument group (Sumber : Maximum MIDI) Preset
Instrument group
Preset
Instrument group
1- 8
Piano
65 – 72
Reed
9 – 16
Chromatic Percussion
73 – 80
Pipe
17 – 24
Organ
81 – 88
Synth Lead
25 – 32
Guitar
89 – 96
Synth Pad
33 – 40
Bass
97 – 104
Synth Effects
41 – 48
Strings
105 – 112
Ethnic
33 49 – 56
Ensemble
113 – 120
Percussive
57 – 64
Brass
121 – 128
Sound Effect
Copyright ♥ 1991, 1994 MIDI Manufacturers Association
Tabel 2.8 General MIDI Sound Set (Sumber : MIDI Manufacturers Association) No
Sound
No
Sound
No
Sound
No
Sound
1
Acoustic Grand Piano
33
Acoustic Bass
65
Soprano Sax
97
Fx 1 (train)
2
Bright Acoustic Piano
34
Electric Bass (finger)
66
Alto Sax
98
Fx 2 (soundtrack)
3
Electric Grand Piano
35
Electric Bass (Pick)
67
Tenor Sax
99
Fx 3 (crystal)
4
Honky-tonk Piano
36
Fretless Bass
68
Baritone Sax
100
Fx 4 (atmosphere)
5
Electric Piano 1
37
Slap Bass 1
69
Oboe
101
Fx 5 (brightness)
6
Electric Piano 2
38
Slap Bass 2
70
English Horn
102
Fx 6 (goblins)
7
Harpsicord
39
Synth Bass 1
71
Bassoon
103
Fx 7 (echoes)
8
Clavi
40
Synth Bass 2
72
Clarinet
104
Fx 8 (sci-fi)
9
Celesta
41
Violin
73
Piccolo
105
Sitar
10
Glockenspiel
42
Viola
74
Flute
106
Banjo
11
Music Box
43
Cello
75
Recorder
107
Shamisen
12
Vibraphone
44
Contrabass
76
Pan Flute
108
Koto
13
Marimba
45
Tremolo Strings
77
Blown Bottle
109
Kalimba
14
Xylophone
46
Pizzicato Strings
78
Shakuhachi
110
Bag Pipe
15
Tubular Bell
47
Orchestral Harp
79
Whistle
111
Fiddle
16
Dulcimer
48
Timpani
80
Ocarina
112
Shanai
17
Drawbar Organ
49
String Ensemble 1
81
Lead 1 (square)
113
Tinkle Bell
18
Percussive Organ
50
String Ensemble 2
82
Lead 2 (sawtooth)
114
Agogo
19
Rock Organ
51
Synthstrings 1
83
Lead 3 (calliope)
115
Steel Drums
20
Church Organ
52
Synthstrings 2
84
Lead 4 (chiff)
116
Woodblock
21
Reed Organ
53
Choir Aahs
85
Lead 5 (charang)
117
Taiko Drum
22
Accordion
54
Choir Oohs
86
Lead 6 (voice)
118
Melodic Tom
23
Harmonica
55
Synth Voice
87
Lead 7 (fifths)
119
Synth Drum
24
Tango Accordion
56
Orchestra Hit
88
Lead 8 (bass + lead)
120
Reverse Cymbal
25
Acoustic Guitar (nylon)
57
Trumpet
89
Pad 1 (new age)
121
Guitar Fret Noise
26
Acoustic Guitar (Steel)
58
Trombone
90
Pad 2 (warm)
122
Breath Noise
27
Electric Guitar (jazz)
59
Tuba
91
Pad 3 (polysynth)
123
Seashore
28
Electric Guitar (clean)
60
Muted Trumpet
92
Pad 4 (choir)
124
Bird Tweet
29
Electric Guitar (muted)
61
French Horn
93
Pad 5 (bowed)
125
Telephone Ring
30
Overdriven Guitar
62
Brass Section
94
Pad 6 (metallic)
126
Helicopter
31
Distortion Guitar
63
SynthBrass 1
95
Pad 7 (Halo)
127
Applause
32
Guitar Harmonics
64
SynthBrass 2
96
Pad 8 (Sweep)
128
Gunshot
Copyright ♥ 1991, 1994 MIDI Manufacturers Association
34 Tabel 2.9 Percussion Map (Sumber : Maximum MIDI )
Key
Drum Sound
Key
Drum Sound
Key
Drum Sound
35
Acoustic bass drum
51
Ride Cymbal 1
67
High Agogo
36
Bass drum 1
52
Chinese Cymbal
68
Low Agogo
37
Side Stick
53
Ride Bell
69
Cabasa
38
Acoustic Snare
54
Tambourine
70
Maracas
39
Hand Clap
55
Splash Cymbal
71
Short Whistle
40
Electric Snare
56
Cowbell
72
Long Whistle
41
Low Floor Tom
57
Crash Cymbal 2
73
Short Guiro
42
Closed Hi Hat
58
Vibraslap
74
Long Guiro
43
High floor tom
59
Ride Cymbal 2
75
Claves
44
Pedal Hi Hat
60
Hi Bongo
76
Hi Wood Block
45
Low Tom
61
Low Bongo
77
Low Wood Block
46
Open Hi Hat
62
Mute Hi Conga
78
Mute Cuica
47
Low-Mid Tom
63
Open Hi Conga
79
Open Cuica
48
Hi-Mid Tom
64
Low Conga
80
Mute Triangle
49
Crash Cymbal 1
65
High Timbale
81
Open Triangle
50
High Tom
66
Low Timbale
Copyright ♥ 1991, 1994 MIDI Manufacturers Association
2.6 Arsitektur Client Server 2.6.1 Pendahuluan Istilah Client Server pertama kali digunakan pada tahun 1980-an sebagai referensi pada PC (Personal Computer) pada sebuah jaringan. Model client server yang sebenarnya mulai diterima dan diterapkan pada akhir tahun 80-an. Arsitektur piranti lunak client server bersifat versatile, message-based dan infrastruktur modular yang dimaksudkan untuk meningkatkan kegunaan (usability), fleksibilitas, interoperabilitas
35 dan skalabilitas dibandingkan dengan sistem tersentralisasi, mainframe, atau time sharing computing (Sadoski,1997). Client adalah sisi yang me-request servis dan server adalah sisi yang menyediakan servis. Sebuah komputer bisa menjadi client maupun server tergantung dari konfigurasi perangkat lunak yang dimiliki (Sadoski,1997).
2.6.2 Keunggulan Arsitektur Client-Server Keunggulan arsitektur client sever dapat kita tinjau dengan melihat asal muasal mengapa arsitektur client server merupakan pengembangan dari arsitektur – arsitektur software sebelumnya (Sadoski,1997).
2.6.2.1 Arsitektur Mainframe Dengan arsitektur mainframe, semua pengetahuan berada pada host komputer pusat. User berinteraksi dengan host pusat tersebut melalui sebuah terminal yang menangkap penekanan tombol dan mengirimkan informasi tersebut ke host pusat Arsitektur mainframe tidak terhubung pada sebuah perangkat keras. Interaksi user dapat dilakukan dengan menggunakan workstation PC atau UNIX. Keterbatasan arsitektur mainframe adalah arsitektur ini tidak mendukung GUI (Graphical User Interface) atau akses ke database yang banyak, dan secara geografis situsnya terpisah. Pada beberapa tahun terakhir, mainframe telah menemukan kegunaan barunya yaitu sebagai server pada arsitektur client server yang terdistrubusi (Sadoski,1997).
36 2.6.2.2 Arsitektur File Sharing Jaringan komputer yang asli didasarkan pada arsitektur file sharing, dimana server mendownload file dari lokasi yang di share di desktop. Task yang di-request oleh user kemudian berjalan di desktop. Arsitektur file sharing bekerja jika penggunaan share rendah. Pada tahun 90-an, LAN (Local Area Network) computing berubah karena kapasitas dari file sharing dibatasi oleh jumlah online user yang meningkat, dan GUI menjadi semakin populer. Saat ini, PC populer dengan menggunakan arsitektur client server (Sadoski 1997).
2.6.2.3 Arsitektur Client Server Dengan adanya batasan pada arsitektur file sharing, arsitektur client server mulai muncul. Pendekatan ini memperkenalkan database server sebagai pengganti dari file server. Dengan menggunakan DBMS (Database Mabagement System) relasional, query dari user dapat ditampilkan secara langsung. Arsitektur client server menurunkan traffic jaringan dengan menyediakan respon query dibandingkan dengan transfer file total. Ini meningkatkan multi-user updating melalui GUI front end menuju ke database yang di-share. Pada arsitektur client server, Statement Remote Procedure Calls (RPCs) atau Standard Query Language (SQL) biasanya digunakan untuk mengkomunikasikan antara client dan server. Arsitektur client server dimaksudkan untuk menyediakan arsitektur yang bisa diukur pada setiap komputer atau proses dalam jaringan, baik itu adalah sebuah client atau server. Piranti lunak pada server secara umum, berjalan komputer yang powerful, yang ditujukan untuk penggunaan khusus untuk menjalankan aplikasi bisnis.
37 Piranti lunak client di lain hal, umumnya berjalan pada PC atau workstation biasa. Client mendapatkan semua atau sebagian besar dari informasi dan mengandalkan pada aplikasi server untuk hal – hal seperti konfigurasi file, stock quote, program aplikasi bisnis atau untuk memindahkan task load yang intensif dari sebuah PC kembali ke server, dengan tujuan untuk menjaga komputer client dan user-nya agar bebas untuk menjalankan task – task yang lain (Sadoski, 1997).
2.6.3 Properti Client-Server Properti dari sebuah server adalah (Anonim, 2006): a. Passive (Slave) b. Menunggu request (waiting) c. Merespon client dengan melayani client dan mengirim reply ke client untuk apa yang mereka minta. Properti dari sebuah client adalah (Anonim, 2006): a. Active (Master) b. Mengirim (request) c. Menunggu sampai reply datang Server dapat mempunyai status atau tidak mempunyai status sama sekali. Server yang tidak mempunyai status tidak menyimpan informasi apa pun di antara request yang ada. Sebagai contoh: sebuah server HTTP untuk halaman HTML yang statik, server yang mempunyai status dapat mengingat informasi antara request yang ada. Ruang lingkup informasi ini adalah global atau session. Contoh: Apache Tomcat Jenis lain dari arsitektur jaringan yang lain dikenal sebagai arsitektur peer-topeer, karena setiap node atau instance dari program yang dijalankan adalah keduanya
38 bisa menjadi client dan sekaligus juga menjadi server dan setiap komponen mempunyai tanggung jawab yang ekuivalen. Kedua arsitektur, client, server dan peer-to-peer digunakan secara luas. Masing-masing dari arsitektur memiliki keunggulan dan kelemahan (Anonim, 2006).
2.6.4 Arsitektur n-tier Arsitektur client server memiliki tingkatan-tingkatan. Tingkatan-tingkatan ini (tier) menentukan bagaimana arsitektur ini akan diterapkan berikut apa saja yang diperlukan untuk memenuhi arsitektur client server ini. Selama ini arsitektur yang sering digunakan adalah two tier arsitektur dan three tier arsitektur, dan pada arsitektur tersebut biasa diterapkan beberapa implementasi yang berbeda (Sadoski, 1997).
2.7 Pemrograman Socket 2.7.1 Definisi Socket Socket adalah kombinasi antara alamat IP dan port. (Veeramani, 2005). Socket juga dapat dikatakan sebagai bentuk komunikasi antar proses yang digunakan untuk membentuk koneksi dari komunikasi dua arah antar dua aplikasi, biasanya melalui jaringan komputer. Namun dapat terjadi pada komputer yang sama. Ada dua jenis socket yaitu internet socket dan local socket. Internet Socket adalah socket yang mengikat port yang diberikan, kemudian menyerahkannya pada transport layer untuk mengidentifikasi aplikasi mana sebagai tujuan pengiriman data. Local socket adalah socket yang digunakan untuk komunikasi antar proses pada host yang sama, bukan pada host yang berbeda. (http://en.wikipedia.org/wiki/Socket)
39 2.7.2 Java Networking Java menggunakan banyak mekanisme berbasis stream ke keseluruhan bahasa untuk menerima I/O. Sebagai contoh, semua file I/O dan memori I/O pada Java diterima dengan stream. Pada umumnya pengiriman data juga dibawa dengan menggunakan stream, walaupun implementasi datagram juga mendukung. Kelas-kelas pada Java disediakan untuk internet working antara client dan server (Golding, 1997).
2.8 Media Streaming Media Streaming adalah media yang terus menerus diterima dan ditampilkan kepada user pada saat provider sedang mengirimkannya (belum selesai). Metode pengiriman yang digunakan, sangat bergantung dari jenis media yang dikirimkan. Streaming biasanya diterapkan pada media yang mempunyai jaringan telekomunikasi. Pada umumnya sistem pengiriman terbagi dua, yaitu yang berkaitan dengan streaming (televisi, radio), atau yang tidak berkaitan dengan streaming (audio CD, video cassetes).(http://en.wikipedia.org/wiki/Streaming_media)
2.9 Diagram Alir (Flow Chart) Diagram alir (flowchart) adalah representasi grafis dari serangkaian aktivitas operasi, pergerakan, inspeksi, delay, keputusan dan penyimpanan dari sebuah proses. Diagram alir menggunakan simbol-simbol untuk merepresentasikan jenis operasi atau proses yang sedang berjalan. Bentuk yang sudah distandarisasi menyediakan metode yang umum dipakai oleh banyak orang untuk memvisualisasikan masalah dengan cara yang sama dan lebih mudah (Hansen, 2005). Simbol-simbol yang digunakan dalam diagram alir adalah sebagai berikut:
40 1. Proses, dibagi menjadi 2 macam: a.
Berupa proses/ pengolahan
b.
Predefined process
2.
Operasi input/output
3.
Decision, berupa pertanyaan atau penentuan suatu keputusan
4.
Terminal, untuk menandai awal dan akhir program
5.
Preparation, untuk instalasi suatu nilai.
6.
Panah, sebagai penghubung antar komponen dan penunjuk arah.
7.
Manual input, sebagai input dari pengguna
8. Penghubung: a.
On page connector, sebagai penghubung dalam 1 halaman
b.
Off page connector, sebagai penghubung antar halaman yang berbeda
41 Berikut ini adalah contoh penggunaan flowchart pada sebuah proses:
Gambar 2.11 Penggunaan Flowchart Sumber : www.enfoldsystems.com