Universitas Kristen Maranatha i
Perancangan dan Realisasi MIDI Drum Pad
Menggunakan Mikrokontroler ATMega16
Design and Realization MIDI Drum Pad Using ATMega16
Microcontroller
Molly Sitompul/0722071
Jurusan Teknik Elektro, Fakultas Teknik, Universitas Kristen Maranatha
Jl. Prof. Drg. Suria Sumantri 65, Bandung 40164, Indonesia
ABSTRAK
Dalam Tugas Akhir ini, dibuat sebuah miniatur digital drum (drum pad)
dengan protokol MIDI (Musical Instrument Digital Interface) yang menggunakan
Mikrokontroler ATMega16. Drum pad yang direalisasikan ini menggunakan
piezoelectric sensor sebagai penangkap pukulan dari pemukul drum. Sensor
mendeteksi getaran dan menghasilkan tegangan dan selanjutnya disambungkan ke
rangkaian pengondisi sinyal. Tegangan keluaran dari rangkaian pengondisi sinyal
ini diterima oleh mikrokontroler melalui ADC (Analog to Digital Converter) dan
diolah menjadi data MIDI. Data MIDI dari mikrokontroler dikirim ke komputer
menggunakan komunikasi Serial RS232 dan selanjutnya diolah oleh komputer
melalui program synthesizer pada komputer sehingga dapat menghasilkan bunyi
sesuai instrumen yang diinginkan.
Pengujian dilakukan dengan menegukur tegangan keluaran sensor,
pengamatan MIDI Message, dan dengan memainkan tiga buah lagu dengan tempo
dan ketukan yang berbeda. Tegangan keluaran sensor dapat mencapai 15 volt dan
nilai velocity pada MIDI message jauh lebih kecil dari nilai maksimum yang
diinginkan (127 dalam decimal) dan terjadi delay sebesar ¼ ketukan pada lagu
dengan tempo 170 BPM.
Universitas Kristen Maranatha ii
Perancangan dan Realisasi MIDI Drum Pad
Menggunakan Mikrokontroler ATMega 16
Design and Realization MIDI Drum Pad Using ATMega16
Microcontroller
Molly Sitompul/0722071
Jurusan Teknik Elektro, Fakultas Teknik, Universitas Kristen Maranatha
Jl. Prof. Drg. Suria Sumantri 65, Bandung 40164, Indonesia
ABSTRACT
In this Final Project, a miniature of digital drum (drum pad) with MIDI protocol that using ATMega16 Microcontroller has been made. This drum pad uses piezoelectric sensor to sense the hit of drum stick. Piezoelectric sensor detect the vibration and generate the voltage and then connected to a signal conditioning circuit. The output voltage of the signal conditioning circuit is read by the microcontroller through the ADC (Analog to Digital Converter) and processed to be the MIDI data. The MIDI data from the microcontroller is sent to the computer using RS232 serial communication and then processed by computer by the synthesizer program so the computer can produce the desired instrument sound.
The test is done by measuring the output voltage of the sensors, observing the MIDI messages, and playing three songs with different tempo and different beats. The output voltage level of the sensor can be reached 15 volt, the velocity value of MIDI message is far under the desired value (127 on decimal) and there are ¼ beat delays on the song with 170 BPM tempo.
Universitas Kristen Maranatha
2.6.1 Channel Voice Message ... 10
2.6.1.1 Note On/Note Off ... 11
2.6.1.2 After Touch ... 12
2.6.1.3 Control Change... 12
Universitas Kristen Maranatha vi
2.6.1.5 Pitch Bend ... 12
2.6.2 Channel Mode Message ... 12
2.7 Komunikasi Serial ... 12
2.7.1 Komunikasi Asynchronous dan Synchronous ... 13
2.7.2 Format Data ... 13
3.1.1 Diagram Blok Perangkat Keras... 18
3.1.2 Skematik Rangkaian ... 18
3.1.2.1 Bagian Sensor ... 19
3.1.2.2 Bagian Signal Conditioning ... 20
3.1.2.3 Bagian Clock Eksternal ... 21
3.1.2.4 Bagian Komunikasi Serial ... 21
3.1.3 Program Pengolah Data pada ATMega 16 ... 22
3.2 Perangkat Lunak ... 28
3.2.1 Virtual MIDI Port ... 29
3.2.2 Serial to MIDI Converter ... 30
3.2.3 Perangkat Lunak Perekam Data MIDI ... 33
BAB IV DATA PENGAMATAN 4.1 Tegangan Keluaran Sensor ... 36
4.2 MIDI Message ... 37
4.3 Uji Ketepatan dalam Penggunaan ... 38
Universitas Kristen Maranatha vii
4.3.2 Lagu Sejak Yesus di Hatiku ... 41
4.3.3 Lagu Amelia ... 42
4.4 Analisa Data ... 44
BAB V KESIMPULAN DAN SARAN
5.1 Kesimpulan ... 45
5.2 Saran ... 45
DAFTAR PUSTAKA ... 46
Universitas Kristen Maranatha
Gambar 2.4 Rangkaian Pengganti Piezoelectric Sensor ... 8
Gambar 2.5 Respon Frekuensi Piezoelectric Sensor ... 9
Gambar 2.6 Piezoelectric Sensor Sebagai Sumber Tegangan ... 9
Gambar 2.7 Format Data Serial MIDI ... 10
Gambar 2.8 MIDI Message ... 10
Gambar 2.9 Transmisi Asynchronous dan Syncronous ... 14
Gambar 3.1a Diagram Blok Sistem ... 17
Gambar 3.1b Diagram Blok Perangkat Keras... 18
Gambar 3.2 Rangkaian MIDI Drum Pad ... 19
Gambar 3.3 Rangkaian Pembagi Tegangan ... 20
Gambar 3.4 Rangkaian IC MAX232 ... 22
Gambar 3.5a Diagram Alir Program Utama AVR ... 25
Gambar 3.5b Diagram Alir Fungsi untuk Membaca Tegangan ... 26
Gambar 3.5c Dialir Fungsi Pengirim Data ... 26
Gambar 3.6 Diagram Blok Perangkat Lunak yang Digunakan ... 29
Gambar 3.7 Tampilan Konfigurasi MIDI Yoke NT ... 30
Gambar 3.8 Pemilihan Serial Port pada Serial to MIDI Converter ... 31
Gambar 3.9 Pemilihan Baud Rate pada Serial to MIDI Converter ... 31
Gambar 3.10a MIDI Input Port pada Serial to MIDI Converter ... 32
Gambar 3.10b MIDI Output Port pada Serial to MIDI Converter ... 32
Gambar 3.11 Tampilan Utama pada Serial to MIDI Converter ... 33
Gambar 3.12 Tampilan Utama Cakewalk Pro Audio 9 ... 34
Gambar 3.13 Pengaturan MIDI Device pada Cakewalk Pro Audio 9 ... 34
Gambar 3.14 Track Properties pada Cakewalk Pro Audio 9 ... 35
Universitas Kristen Maranatha ix
DAFTAR TABEL
Tabel 2.1 Status Byte ... 4
Tabel 3.1 Keterangan Variabel pada Diagram Alir ... 27
Tabel 3.2 Pitch Byte pada Program Mikrokontroller ... 28
Tabel 4.1 Tegangan Keluaran Sensor ... 36
Tabel 4.2 MIDI Message ... 37
Tabel 4.3 Pengamatan Intro Lagu Allah Peduli ... 40
Tabel 4.4 Pengamatan Verse Lagu Allah Peduli ... 40
Tabel 4.5 Pengamatan Reff Lagu Allah Peduli ... 41
Tabel 4.6 Pengamatan Verse Lagu Sejak Yesus di Hatiku ... 42
Tabel 4.7 Pengamatan Reff Lagu Sejak Yesus di Hatiku ... 43
Tabel 4.8 Pengamatan Intro Lagu Amelia ... 43
Lampiran A
Gambar A.2. Skematik Rangkaian
Lampiran B
/*****************************************************
This program was produced by the CodeWizardAVR V1.25.3 Professional Automatic Program Generator
� Copyright 1998-2007 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com
// Standard Input/Output functions
#include <stdio.h>
#define ADC_VREF_TYPE 0x00
// Read the AD conversion result
unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff); // Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10; return ADCW; }
//function declare
int baca(int n);
int MaxPlayTime = 90; // counter untuk pembacaan pukulan
// Declare your global variables here void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization // Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTA=0x00;
DDRA=0x00;
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTB=0x00;
DDRB=0x00;
// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTC=0x00;
DDRC=0x00;
// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTD=0x00;
DDRD=0x00;
// Timer/Counter 0 initialization // Clock source: System Clock // Clock value: Timer 0 Stopped // Mode: Normal top=FFh
// OC0 output: Disconnected TCCR0=0x00;
TCNT0=0x00; OCR0=0x00;
// Timer/Counter 1 initialization // Clock source: System Clock // Clock value: Timer 1 Stopped // Mode: Normal top=FFFFh
// OC1A output: Discon. // OC1B output: Discon. // Noise Canceler: Off
// Input Capture on Falling Edge // Timer 1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off
TCCR1A=0x00;
// Timer/Counter 2 initialization // Clock source: System Clock // Clock value: Timer 2 Stopped // Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00; TCCR2=0x00; TCNT2=0x00; OCR2=0x00;
// External Interrupt(s) initialization // INT0: Off
// INT1: Off // INT2: Off MCUCR=0x00; MCUCSR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x00;
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity // USART Receiver: On
// USART Transmitter: On // USART Mode: Asynchronous // USART Baud rate: 57600 UCSRA=0x00;
UCSRB=0x18; UCSRC=0x86; UBRRH=0x00; UBRRL=0x0F;
// Analog Comparator initialization // Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80;
SFIOR=0x00;
// ADC initialization
// ADC Voltage Reference: AREF pin // ADC Auto Trigger Source: None ADMUX=ADC_VREF_TYPE & 0xff;
Lampiran C
Gambar C – 3. Penempatan dan Dudukan Sensor
Gambar C – 4. Rangkaian Mikrokontroler
Lampiran D
D - 1
Table 1: MIDI 1.0 Specification Message Summary Status
D7----D0
Data Byte(s) D7----D0
Description
Channel Voice Messages [nnnn = 0-15 (MIDI Channel Number 1-16)] 1000nnnn 0kkkkkkk
0vvvvvvv
Note Off event.
This message is sent when a note is released (ended). (kkkkkkk) is the key (note) number. (vvvvvvv) is the velocity.
1001nnnn 0kkkkkkk 0vvvvvvv
Note On event.
This message is sent when a note is depressed (start). (kkkkkkk) is the key (note) number. (vvvvvvv) is the velocity.
1010nnnn 0kkkkkkk 0vvvvvvv
Polyphonic Key Pressure (Aftertouch).
This message is most often sent by pressing down on the key after it "bottoms out". (kkkkkkk) is the key (note) number. (vvvvvvv) is the pressure value.
1011nnnn 0ccccccc 0vvvvvvv
Control Change.
This message is sent when a controller value changes. Controllers include devices such as pedals and levers. Controller numbers 120-127 are reserved as "Channel Mode Messages" (below). (ccccccc) is the controller number (0-119). (vvvvvvv) is the controller value (0-127). 1100nnnn 0ppppppp Program Change. This message sent when the
patch number changes. (ppppppp) is the new program number.
1101nnnn 0vvvvvvv Channel Pressure (After-touch). This message is most often sent by pressing down on the key after it "bottoms out". This message is different from polyphonic after-touch. Use this message to send the single greatest pressure value (of all the current depressed keys). (vvvvvvv) is the pressure value.
1110nnnn 0lllllll
0mmmmmmm
Pitch Wheel Change. 0mmmmmmm This message is sent to indicate a change in the pitch wheel. The pitch wheel is measured by a fourteen bit value. Center (no pitch change) is 2000H.
D – 2
Table 2: Expanded Status Bytes List
STATUS BYTE DATA BYTES
1st Byte Value
Binary |Hex| Dec
Function 2nd Byte 3rd Byte
Lampiran E
E – 4
Lampiran F
Lampiran G
Lampiran H
Lampiran I
Lampiran J
Lampiran K
Universitas Kristen Maranatha 1
BAB I
PENDAHULUAN
1.1. Latar Belakang
Perkembangan dunia musik untuk masa sekarang sudah sangat pesat.
Perkembangan tersebut meliputi perkembangan alat-alat musik,
perkembangan teknik bermain musik, bahkan perkembangan alat-alat
musik. Alat-alat musik listrik tidak lagi sebatas analog saja (contoh: gitar
listrik dan bass listrik), tetapi sudah ada yang bekerja secara digital, misal:
digital keyboard, digital drum, dan lainnya. Alat musik digital sudah
banyak digunakan dalam industri musik bahkan dalam kebutuhan musik
harian. Kemudahan pemrosesan pada alat musik digital merupakan salah
satu alasan para pemusik untuk mau menggunakan alat musik digital.
Pada tugas akhir ini dilakukan perancangan dan realisasi drum pad
atau digital drum berbasis MIDI (Musical Instrument Digital Interface).
Dengan mempelajari MIDI dan membuat sebuah alat musik berbasis MIDI
menggunakan Mikrokontroler ATMega 16, Tugas Akhir ini diharapkan
mampu menjadi sesuatu yang bermanfaat bagi para musisi, penelitian, dan
perkembangan dunia pendidikan tentunya.
1.2. Perumusan Masalah
Permasalahan yang akan dibahas dalam tugas akhir ini meliputi :
1. Bagaimana membuat sebuah alat musik drum pad berbasis MIDI
dengan menggunakan Mikrokontroler ATMega16.
2. Bagaimana mengaplikasikan Mikrokontroler ATMega16 untuk
mengendalikan data MIDI.
1.3. Tujuan
Tujuan yang ingin dicapai dari tugas akhir ini adalah:
Universitas Kristen Maranatha 2
2. Membuat alat musik digital berupa drum pad yang berbasis MIDI
menggunakan ATMega 16.
1.4. Batasan Masalah
1. Membuat alat drum pad (alat input) yang terdiri dari snare, bass,
crash cymbal, ride cymbal 2, hi hat, midlle tom 1, middle tom 2, dan low tom 3 sebagai pengganti drum non-elektrik biasanya.
2. Menggunakan Mikrokontroler ATMega16 sebagai pengolah data
input menjadi data MIDI.
3. Menggunakan synthesizer dari komputer
4. Menggunakan sensor piezoelectric sebagai pendeteksi pukulan dari
pemukul.
5. Menggunakan perangkat lunak Serial To MIDI converter sebagai
converter data serial ke data MIDI, MIDI Yoke sebagai virtual MIDI port, dan Cakewalk Pro Audio 9 sebagai perangkat lunak perekam
data MIDI.
6. Jarak penenmpatan antar sensor dan konstruksi dudukan sensor tidak
diperhitungkan.
1.5. Sistematika Penulisan
Sistematika penulisan laporan kerja praktek ini disusun menjadi lima
bab, yaitu sebagai berikut:
Bab 1 Pendahuluan
Bab ini membahas mengenai latar belakang, perumusan masalah,
tujuan, dan sistematika penulisan.
Bab 2 Landasan Teori
Bab ini membahas mengenai Drum Kit, Teori Dasar Musik,
Piezoelectric Sensor, Mikrokontroler ATMega 16, IC MAX 232, MIDI,
Universitas Kristen Maranatha 3
Lunak yang digunakan untuk Tugas Akhir ini.
Bab 3 Perancangan
Bab ini membahas mengenai perancangan dan realisasi perangkat
keras serta penggunaan perangkat lunak. Pembahasan perangkat keras
meliputi diagram blok perangkat keras, skema rangkaian, dan program
pada mikrokontroler ATMega 16. Pembahasan perangkat lunak meliputi
perangkat lunak yang digunakan, yaitu Virtual MIDI Port, perangkat lunak
pengkonversi serial ke MIDI, dan perangkat lunak perekam data MIDI.
Bab 4 Data Pengamatan
Bab ini membahas hasil uji coba dari alat yang dibuat. Uji coba
meliputi yang dilakukan meliputi tegangan keluaran sensor, MIDI
Message, dan uji coba ketepatan dalam penggunaan dengan memainkan
lagu.
Bab 5 Kesimpulan dan Saran
Bab ini berisi kesimpulan yang dapat diambil dari proses pembuatan
Universitas Kristen Maranatha
dengan berbasis MIDI dan menggunakan ATMega 16 berhasil
dilakukan.
2. Nilai velocity yang dihasilkan masih jauh dari maksimum. Nilai
velocity maksimum adalah 127 dalam desimal. Velocity dengan
nilai ini terdengar cukup jelas ketika dilakukan perekaman MIDI
dan ketika MIDI file dimainkan. Hal ini terjadi karena pada saat
pencuplikan tegangan pada port ADC, nilai tegangan tertinggi
yang dibaca mikrokontroller tidak benar-benar pada tegangan
tertinggi pada bagian keluaran signal conditioning.
3. Dari beberapa jenis lagu yang direkam, dapat diamati bahwa delay
akan semakin terasa ketika tempo semakin cepat. Hal ini terjadi
karena banyaknya perangkat lunak yang digunakan dalam
pengolahan data MIDI pada komputer.
5.2. Saran
1. Algoritma program pada mikrokontroler dapat diperbaiki untuk
dapat membaca dan mendapatkan nilai tegangan tertinggi dari
bagian keluaran signal conditioning.
2. Untuk mengurangi kemungkinan terjadinya delay akibat
penggunaan perangkat lunak yang terdiri dari banyak tahap (Serial
to MIDI Converter, Virtual MIDI Port, dan Perekam Data MIDI),
perlu digunakan perangkat lunak yang lebih efeisien dan
Universitas Kristen Maranatha
46
DAFTAR PUSTAKA
1. Axelson, Jan. 2007. Serial Port Complete: COM Ports, USB Virtual COM
Ports, and Ports for Embedded System Second Edition. Madison, Wisconsin:
Lakeview Research LLC.
2. Andrianto, Heri. 2008. Pemrograman Mikrokontroller AVR ATMega16
Menggunakan Bahasa C (Code Vision AVR). Bandung: Informatika
3. Atmadja, Rei Suryana. 1998. Alat Pemain Ulang Data MIDI Interaktif.
Bandung: Jurusan Teknik Elektri Fakultas Teknik Universitas Kristen
Maranatha.
4. Drum KitKit. http://www.spikenzielabs.com/SpikenzieLabs/DrumKitKit.html.
Diakses Tanggal 26 Juni 2011.
5. General MIDI. http://en.wikipedia.org/wiki/General_MIDI. Diakses Tanggal
25 Oktober 2011.
6. MIDI Message Table. http://www.midi.org/techspecs/midimessages.php.
Diakses Tanggal 25 Oktober 2011.
7. Musical Instrument Digital Interface.
http://en.wikipedia.org/wiki/Musical_Instrument_Digital_Interface. Diakses
Tanggal 26 Juni 2011.
8. Piezoelectricity. http://en.wikipedia.org/wiki/Piezoelectric_effect. Diakses
Tanggal 25 Oktober 2011.
9. Piezoelectric Snensor. http://en.wikipedia.org/wiki/Piezoelectric_sensor.
Diakses Tanggal, 28 Oktober 2011.
10.Serial MIDI. http://www.spikenzielabs.com/SpikenzieLabs/Serial_MIDI.html.