Basic example for send MIDI messages

Dependencies:   mbed

Committer:
jose_23991
Date:
Mon Sep 29 15:45:18 2014 +0000
Revision:
0:2f27565123e1
Version 1.0

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jose_23991 0:2f27565123e1 1 #ifndef MIDII_h
jose_23991 0:2f27565123e1 2 #define MIDII_h
jose_23991 0:2f27565123e1 3
jose_23991 0:2f27565123e1 4 #include "mbed.h"
jose_23991 0:2f27565123e1 5
jose_23991 0:2f27565123e1 6 #define MIDI_VELOCITY 31250
jose_23991 0:2f27565123e1 7
jose_23991 0:2f27565123e1 8 #define NOTE_OFF 0x8 // B1000
jose_23991 0:2f27565123e1 9 #define NOTE_ON 0x9 // B1001
jose_23991 0:2f27565123e1 10 #define NOTE_POLY_AFTERTOUCH 0xA // B1010
jose_23991 0:2f27565123e1 11 #define NOTE_CONTROL_CHANGE 0xB // B1011
jose_23991 0:2f27565123e1 12 #define NOTE_PROGRAM_CHANGE 0xC // B1100
jose_23991 0:2f27565123e1 13 #define NOTE_AFTERTOUCH 0xD // B1101
jose_23991 0:2f27565123e1 14 #define NOTE_PITCH_BEND 0xE // B1110
jose_23991 0:2f27565123e1 15 #define NOTE_CONFIG 0xF // B1111
jose_23991 0:2f27565123e1 16
jose_23991 0:2f27565123e1 17 #define CH_1 0x0 // B0000
jose_23991 0:2f27565123e1 18 #define CH_2 0x1 // B0001
jose_23991 0:2f27565123e1 19 #define CH_3 0x2 // B0010
jose_23991 0:2f27565123e1 20 #define CH_4 0x3 // B0011
jose_23991 0:2f27565123e1 21 #define CH_5 0x4 // B0100
jose_23991 0:2f27565123e1 22 #define CH_6 0x5 // B0101
jose_23991 0:2f27565123e1 23 #define CH_7 0x6 // B0110
jose_23991 0:2f27565123e1 24 #define CH_8 0x7 // B0111
jose_23991 0:2f27565123e1 25 #define CH_9 0x8 // B1000
jose_23991 0:2f27565123e1 26 #define CH_10 0x9 // B1001
jose_23991 0:2f27565123e1 27 #define CH_11 0xA // B1010
jose_23991 0:2f27565123e1 28 #define CH_12 0xB // B1011
jose_23991 0:2f27565123e1 29 #define CH_13 0xC // B1100
jose_23991 0:2f27565123e1 30 #define CH_14 0xD // B1101
jose_23991 0:2f27565123e1 31 #define CH_15 0xE // B1110
jose_23991 0:2f27565123e1 32 #define CH_16 0xF // B1111
jose_23991 0:2f27565123e1 33
jose_23991 0:2f27565123e1 34 #define C 0
jose_23991 0:2f27565123e1 35 #define C_ 1
jose_23991 0:2f27565123e1 36 #define D 2
jose_23991 0:2f27565123e1 37 #define D_ 3
jose_23991 0:2f27565123e1 38 #define E 4
jose_23991 0:2f27565123e1 39 #define F 5
jose_23991 0:2f27565123e1 40 #define F_ 6
jose_23991 0:2f27565123e1 41 #define G 7
jose_23991 0:2f27565123e1 42 #define G_ 8
jose_23991 0:2f27565123e1 43 #define A 9
jose_23991 0:2f27565123e1 44 #define A_ 10
jose_23991 0:2f27565123e1 45 #define B 11
jose_23991 0:2f27565123e1 46
jose_23991 0:2f27565123e1 47 #define OCTAVE_0 0
jose_23991 0:2f27565123e1 48 #define OCTAVE_1 1
jose_23991 0:2f27565123e1 49 #define OCTAVE_2 2
jose_23991 0:2f27565123e1 50 #define OCTAVE_3 3
jose_23991 0:2f27565123e1 51 #define OCTAVE_4 4
jose_23991 0:2f27565123e1 52 #define OCTAVE_5 5
jose_23991 0:2f27565123e1 53 #define OCTAVE_6 6
jose_23991 0:2f27565123e1 54 #define OCTAVE_7 7
jose_23991 0:2f27565123e1 55 #define OCTAVE_8 8
jose_23991 0:2f27565123e1 56 #define OCTAVE_9 9
jose_23991 0:2f27565123e1 57 #define OCTAVE_10 10
jose_23991 0:2f27565123e1 58
jose_23991 0:2f27565123e1 59 #define NUMBER 12
jose_23991 0:2f27565123e1 60 #define OCTAVE 11
jose_23991 0:2f27565123e1 61
jose_23991 0:2f27565123e1 62 /*
jose_23991 0:2f27565123e1 63 Note Numbers
jose_23991 0:2f27565123e1 64 Octave C C# D D# E F F# G G# A A# B
jose_23991 0:2f27565123e1 65 0 0 1 2 3 4 5 6 7 8 9 10 11
jose_23991 0:2f27565123e1 66 1 12 13 14 15 16 17 18 19 20 21 22 23
jose_23991 0:2f27565123e1 67 2 24 25 26 27 28 29 30 31 32 33 34 35
jose_23991 0:2f27565123e1 68 3 36 37 38 39 40 41 42 43 44 45 46 47
jose_23991 0:2f27565123e1 69 4 48 49 50 51 52 53 54 55 56 57 58 59
jose_23991 0:2f27565123e1 70 5 60 61 62 63 64 65 66 67 68 69 70 71
jose_23991 0:2f27565123e1 71 6 72 73 74 75 76 77 78 79 80 81 82 83
jose_23991 0:2f27565123e1 72 7 84 85 86 87 88 89 90 91 92 93 94 95
jose_23991 0:2f27565123e1 73 8 96 97 98 99 100 101 102 103 104 105 106 107
jose_23991 0:2f27565123e1 74 9 108 109 110 111 112 113 114 115 116 117 118 119
jose_23991 0:2f27565123e1 75 10 120 121 122 123 124 125 126 127
jose_23991 0:2f27565123e1 76 */
jose_23991 0:2f27565123e1 77
jose_23991 0:2f27565123e1 78 /*typedef int n[OCTAVE][NUMBER] =
jose_23991 0:2f27565123e1 79 {
jose_23991 0:2f27565123e1 80 {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11},
jose_23991 0:2f27565123e1 81 {12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23},
jose_23991 0:2f27565123e1 82 {24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35},
jose_23991 0:2f27565123e1 83 {36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47},
jose_23991 0:2f27565123e1 84 {48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59},
jose_23991 0:2f27565123e1 85 {60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71},
jose_23991 0:2f27565123e1 86 {72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83},
jose_23991 0:2f27565123e1 87 {84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95},
jose_23991 0:2f27565123e1 88 {96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107},
jose_23991 0:2f27565123e1 89 {108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119},
jose_23991 0:2f27565123e1 90 {120, 121, 122, 123, 124, 125, 126, 127, 0, 0, 0, 0}
jose_23991 0:2f27565123e1 91 }NOTES;*/
jose_23991 0:2f27565123e1 92
jose_23991 0:2f27565123e1 93 class MIDII
jose_23991 0:2f27565123e1 94 {
jose_23991 0:2f27565123e1 95 public:
jose_23991 0:2f27565123e1 96 MIDII(PinName p_tx, PinName p_rx);
jose_23991 0:2f27565123e1 97 ~MIDII();
jose_23991 0:2f27565123e1 98 void noteOn(unsigned int channel, unsigned int key, unsigned int octave, unsigned int velocity);
jose_23991 0:2f27565123e1 99 void noteOff(unsigned int channel, unsigned int key, unsigned int octave, unsigned int velocity);
jose_23991 0:2f27565123e1 100 void programChange(unsigned int channel, unsigned int program);
jose_23991 0:2f27565123e1 101 void MIDImessage(unsigned int command, unsigned int channel, unsigned int note, unsigned int octave, unsigned int velocity);
jose_23991 0:2f27565123e1 102
jose_23991 0:2f27565123e1 103 private:
jose_23991 0:2f27565123e1 104 int note[OCTAVE][NUMBER];
jose_23991 0:2f27565123e1 105 Serial serial;
jose_23991 0:2f27565123e1 106
jose_23991 0:2f27565123e1 107 void notes_init();
jose_23991 0:2f27565123e1 108
jose_23991 0:2f27565123e1 109 };
jose_23991 0:2f27565123e1 110
jose_23991 0:2f27565123e1 111 #endif