MIDI DRUM CONTROLLER

ECE 476 Project -- Spring 2005

By Siew Im Low and Zheshen Zhuang

Home

Introduction

Design

Hardware

Software

Results & Conclusions

Appendix

 

[ DESIGN ]

Project Idea

Initially, we wanted to build a drum machine, which synthesize its own drum-sounds. We then learned about the MIDI protocol and the General MIDI (GM) Drum Specification from a friend who owns a music keyboard. We thought it would be more fun to be able to play “real” percussion sounds by striking physical drum pads instead of playing from the keyboard. Thus, the idea for the “ MIDI drum machine” was born.

Project Structure

An overview of our project setup is as follows:

When a drum-pad is hit, the z-axis accelerometer on the underside of the drum-pad would send an analog voltage waveform to the microcontroller. Using the ADC to track the peak voltage recorded by the drum hit, and de-bounce the “tail”, the microcontroller will then output the appropriate MIDI message through USART to a drum synthesizer or sound module to play the drum sounds. As we are using a Roland RS-70 keyboard as our sound module, we have to write our MIDI messages according to the Roland MIDI Exclusive Format for the keyboard to recognize the MIDI messages to generate the right drum sounds.

Hardware/ software Tradeoffs

Our basic drum-pads provide an alternative way of playing percussion sounds instead of playing from the keyboard. They have limited range of expressive drum performance. The drum-pads have limited velocity and volume control compared to playing percussion sounds on the keyboard. Since our simple drum-pads are small, they would not withstand drum sticks or mallets, but they would provide hours of entertainment of drum playing with fingers or hands.

Standards

MIDI (Musical Instrument Digital Interface)

MIDI is a digital communication language and hardware specification that allows multiple electronic instruments, music controllers, computers and other related devices to communicate with each other within a connected network. We specifically refer to the MIDI 1.0 Specification by the MIDI Manufacturer's Association, MMA to write our MIDI messages for detection by the RS-70 Sound Synthesizer.

The MIDI messages that are relevant in our project are the note-on, note-off, and program change message. Most MIDI messages consist of three bytes. The first byte is a status byte which identifies the message type such as note on or note off. The second byte is the value of the MIDI note of the drum triggered as shown in the GM Drum Key Map. The third byte is the velocity byte. The velocity byte denotes the loudness of a sounding note. When the velocity byte is zero, it is equivalent to a note off message.

General MIDI

General MIDI (GM) is a standard that assigns 128 instrument patches in a specific order. GM enables musicians to put Program Change messages in their MIDI song files, where the correct or originally intended instruments will be selected to play the song file. The percussive instrument patch relevant to our project is shown in the GM Patch Map with the Program Change number of 113 to 120. These numbers are used in our Program Change MIDI message.

GM Patch Map

PERCUSSIVE
Prog# Instrument

113

114

115

116

117

118

119

120

Tinkle Bell

Agogo

Steel Drums

Woodblock

Taiko Drum

Melodic Tom

Synth Drum

Reverse Cymbal

Usually a GM module will also have a “drum component ” with each MIDI note triggering a different drum sound. The assignments of drum sounds to specific MIDI notes are shown in the GM Drum Key Map. The drum module is usually set to receive MIDI message on Channel 10.

GM Drum Key Map

MIDI Note # Drum Sound

MIDI Note # Drum Sound

35 Acoustic Bass Drum

36 Bass Drum 1

37 Side Stick

38 Acoustic Snare

39 Hand Clap

40 Electric Snare

41 Low Floor Tom

42 Closed Hi-Hat

43 High Floor Tom

44 Pedal Hi-Hat

45 Low Tom

46 Open Hi-Hat

47 Low-Mid Tom

48 Hi-Mid Tom

49 Crash Cymbal 1

50 High Tom

51 Ride Cymbal 1

52 Chinese Cymbal

53 Ride Bell

54 Tambourine

55 Splash Cymbal

56 Cowbell

57 Crash Cymbal 2

58 Vibraslap

59 Ride Cymbal 2

60 Hi Bongo

61 Low Bongo

62 Mute Hi Conga

63 Open Hi Conga

64 Low Conga

65 High Timbale

66 Low Timbale

67 High Agogo

68 Low Agogo

69 Cabasa

70 Maracas

71 Short Whistle

72 Long Whistle

73 Short Guiro

74 Long Guiro

75 Claves

76 Hi Wood Block

77 Low Wood Block

78 Mute Cuica

79 Open Cuica

80 Mute Triangle

81 Open Triangle

Patents/ Copyrights/ Trademarks

The Roland RS-70 owner’s manual is the copyright property of Roland Corporation. We had to refer to the manual for the MIDI Exclusive Format for our MIDI messages to be recognized by the RS-70 Sound Synthesizer. The MIDI Exclusive Format contains exclusive messages used for exchanging patches and data information between compatible devices from Roland Corporation.

Our drum controller can also use the following addtional drum patches specific to Roland RS-70.

Roland Rhythm Set
Prog# Instrument Prog# Instrument

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

Standard Kit 1

Standard Kit 2

Standard Kit 3

RS Rock Kit

RS Funk Kit

RS Jazz Kit

RS Brush Kit

RS Orch Kit

R&B Kit 1

R&B Kit 2

Hip Hop Kit

Techno Kit

House Kit

Break Bts Kit

TR Kit

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

Perc Menu

Vox & Clap Menu

Fx Menu

Menu 1

Menu 2

Menu 3

GM2 Standard

GM2 Room

GM2 Power

GM2 Electric

GM2 Analog

GM2 Jazz

GM2 Brush

GM2 Orchestra

GM2 SFX

Home | Introduction | Design | Hardware | Software | Results & Conclusions | Appendix

Copyright @2005 Siew Im & Zheshen