the most basic and simplest possible one octave midi controller. this is just to demonstrate the awesomeness of MIDI library and to show how easy it is to make a basic midi controller in just half an hour. more advanced versions coming soon :) YOUTUBE link: http://youtu.be/6qNmku_InRI Peace,

Dependencies:   TextLCD mbed

Committer:
AliBros
Date:
Sun Jan 30 02:19:25 2011 +0000
Revision:
0:1a0457675056

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AliBros 0:1a0457675056 1 /*Version 0.01 of my midi controller
AliBros 0:1a0457675056 2 Basic midi keyboard using 11 push
AliBros 0:1a0457675056 3 button to represent C0-B0.
AliBros 0:1a0457675056 4 Problems:
AliBros 0:1a0457675056 5 .:B0 sounds weird! and I can't understand why!
AliBros 0:1a0457675056 6 .:no polyphony for now!!
AliBros 0:1a0457675056 7
AliBros 0:1a0457675056 8 ********************************************************************************
AliBros 0:1a0457675056 9
AliBros 0:1a0457675056 10 WARNING: Use at your own risk, sadly this software comes with no guarantees.
AliBros 0:1a0457675056 11 This software is provided 'free' and in good faith, but the author does not
AliBros 0:1a0457675056 12 accept liability for any damage arising from its use.
AliBros 0:1a0457675056 13
AliBros 0:1a0457675056 14 ********************************************************************************
AliBros 0:1a0457675056 15 Ali Bros
AliBros 0:1a0457675056 16
AliBros 0:1a0457675056 17 */
AliBros 0:1a0457675056 18
AliBros 0:1a0457675056 19
AliBros 0:1a0457675056 20
AliBros 0:1a0457675056 21
AliBros 0:1a0457675056 22
AliBros 0:1a0457675056 23
AliBros 0:1a0457675056 24 #include "mbed.h"
AliBros 0:1a0457675056 25 #include "MIDI.h"
AliBros 0:1a0457675056 26 #include "TextLCD.h"
AliBros 0:1a0457675056 27 MIDI midi(p13, p14);
AliBros 0:1a0457675056 28 DigitalIn C(p21);
AliBros 0:1a0457675056 29 DigitalIn CSh(p22);
AliBros 0:1a0457675056 30 DigitalIn D(p23);
AliBros 0:1a0457675056 31 DigitalIn DSh(p24);
AliBros 0:1a0457675056 32 DigitalIn E(p25);
AliBros 0:1a0457675056 33 DigitalIn F(p26);
AliBros 0:1a0457675056 34 DigitalIn FSh(p27);
AliBros 0:1a0457675056 35 DigitalIn G(p28);
AliBros 0:1a0457675056 36 DigitalIn GSh(p29);
AliBros 0:1a0457675056 37 DigitalIn A(p30);
AliBros 0:1a0457675056 38 DigitalIn ASh(p11);
AliBros 0:1a0457675056 39 DigitalIn B(p12);
AliBros 0:1a0457675056 40
AliBros 0:1a0457675056 41 //DigitalOut led1(p25);
AliBros 0:1a0457675056 42 //DigitalOut led2(p26);
AliBros 0:1a0457675056 43 //DigitalOut led3(p27);
AliBros 0:1a0457675056 44 //DigitalOut led4(p28);
AliBros 0:1a0457675056 45 TextLCD lcd(p15, p16, p17, p18, p19, p20);
AliBros 0:1a0457675056 46 int main() {
AliBros 0:1a0457675056 47 int octave=12;
AliBros 0:1a0457675056 48 lcd.cls();
AliBros 0:1a0457675056 49 lcd.locate(0,0);
AliBros 0:1a0457675056 50 lcd.printf("MIDI SEND:");
AliBros 0:1a0457675056 51 lcd.locate(0,1);
AliBros 0:1a0457675056 52 lcd.printf("Note:");
AliBros 0:1a0457675056 53 while(1){
AliBros 0:1a0457675056 54 while(!C&&!CSh&&!D&&!DSh&&!E&&!F&&!FSh&&!G&&!GSh&&!A&&!ASh&&!B);
AliBros 0:1a0457675056 55
AliBros 0:1a0457675056 56 if (C)
AliBros 0:1a0457675056 57 {
AliBros 0:1a0457675056 58 lcd.locate(8,1);
AliBros 0:1a0457675056 59 lcd.printf("C0 ");
AliBros 0:1a0457675056 60 midi.noteon(48 + octave);
AliBros 0:1a0457675056 61 while(C);
AliBros 0:1a0457675056 62 midi.noteoff(48 + octave);
AliBros 0:1a0457675056 63 }
AliBros 0:1a0457675056 64 midi.noteoff(48 + octave);
AliBros 0:1a0457675056 65 while(!C&&!CSh&&!D&&!DSh&&!E&&!F&&!FSh&&!G&&!GSh&&!A&&!ASh&&!B);
AliBros 0:1a0457675056 66 midi.noteoff(48 + octave);
AliBros 0:1a0457675056 67 if (CSh)
AliBros 0:1a0457675056 68 {
AliBros 0:1a0457675056 69 lcd.locate(8,1);
AliBros 0:1a0457675056 70 lcd.printf("C#0");
AliBros 0:1a0457675056 71 midi.noteon(49 + octave);
AliBros 0:1a0457675056 72 while(CSh);
AliBros 0:1a0457675056 73 midi.noteoff(49 + octave);
AliBros 0:1a0457675056 74 }
AliBros 0:1a0457675056 75 while(!C&&!CSh&&!D&&!DSh&&!E&&!F&&!FSh&&!G&&!GSh&&!A&&!ASh&&!B);
AliBros 0:1a0457675056 76 if (D)
AliBros 0:1a0457675056 77 {
AliBros 0:1a0457675056 78 lcd.locate(8,1);
AliBros 0:1a0457675056 79 lcd.printf("D0 ");
AliBros 0:1a0457675056 80 midi.noteon(50 + octave);
AliBros 0:1a0457675056 81 while(D);
AliBros 0:1a0457675056 82 midi.noteoff(50 + octave);
AliBros 0:1a0457675056 83 }
AliBros 0:1a0457675056 84 midi.noteoff(50 + octave);
AliBros 0:1a0457675056 85 while(!C&&!CSh&&!D&&!DSh&&!E&&!F&&!FSh&&!G&&!GSh&&!A&&!ASh&&!B);
AliBros 0:1a0457675056 86 if (DSh)
AliBros 0:1a0457675056 87 {
AliBros 0:1a0457675056 88 lcd.locate(8,1);
AliBros 0:1a0457675056 89 lcd.printf("D#0");
AliBros 0:1a0457675056 90 midi.noteon(51 + octave);
AliBros 0:1a0457675056 91 while(DSh);
AliBros 0:1a0457675056 92 midi.noteoff(51 + octave);
AliBros 0:1a0457675056 93 }
AliBros 0:1a0457675056 94 while(!C&&!CSh&&!D&&!DSh&&!E&&!F&&!FSh&&!G&&!GSh&&!A&&!ASh&&!B);
AliBros 0:1a0457675056 95 if (E)
AliBros 0:1a0457675056 96 {
AliBros 0:1a0457675056 97 lcd.locate(8,1);
AliBros 0:1a0457675056 98 lcd.printf("E0 ");
AliBros 0:1a0457675056 99 midi.noteon(52 + octave);
AliBros 0:1a0457675056 100 while(E);
AliBros 0:1a0457675056 101 midi.noteoff(52 + octave);
AliBros 0:1a0457675056 102 }
AliBros 0:1a0457675056 103 while(!C&&!CSh&&!D&&!DSh&&!E&&!F&&!FSh&&!G&&!GSh&&!A&&!ASh&&!B);
AliBros 0:1a0457675056 104 if (F)
AliBros 0:1a0457675056 105 {
AliBros 0:1a0457675056 106 lcd.locate(8,1);
AliBros 0:1a0457675056 107 lcd.printf("F0 ");
AliBros 0:1a0457675056 108 midi.noteon(53 + octave);
AliBros 0:1a0457675056 109 while(F);
AliBros 0:1a0457675056 110 midi.noteoff(53 + octave);
AliBros 0:1a0457675056 111 }
AliBros 0:1a0457675056 112 while(!C&&!CSh&&!D&&!DSh&&!E&&!F&&!FSh&&!G&&!GSh&&!A&&!ASh&&!B);
AliBros 0:1a0457675056 113 if (FSh)
AliBros 0:1a0457675056 114 {
AliBros 0:1a0457675056 115 lcd.locate(8,1);
AliBros 0:1a0457675056 116 lcd.printf("F#0");
AliBros 0:1a0457675056 117 midi.noteon(54 + octave);
AliBros 0:1a0457675056 118 while(FSh);
AliBros 0:1a0457675056 119 midi.noteoff(54 + octave);
AliBros 0:1a0457675056 120 }
AliBros 0:1a0457675056 121 while(!C&&!CSh&&!D&&!DSh&&!E&&!F&&!FSh&&!G&&!GSh&&!A&&!ASh&&!B);
AliBros 0:1a0457675056 122 if (G)
AliBros 0:1a0457675056 123 {
AliBros 0:1a0457675056 124 lcd.locate(8,1);
AliBros 0:1a0457675056 125 lcd.printf("G0 ");
AliBros 0:1a0457675056 126 midi.noteon(55 + octave);
AliBros 0:1a0457675056 127 while(G);
AliBros 0:1a0457675056 128 midi.noteoff(55 + octave);
AliBros 0:1a0457675056 129 }
AliBros 0:1a0457675056 130 while(!C&&!CSh&&!D&&!DSh&&!E&&!F&&!FSh&&!G&&!GSh&&!A&&!ASh&&!B);
AliBros 0:1a0457675056 131 if (GSh)
AliBros 0:1a0457675056 132 {
AliBros 0:1a0457675056 133 lcd.locate(8,1);
AliBros 0:1a0457675056 134 lcd.printf("G#0");
AliBros 0:1a0457675056 135 midi.noteon(56 + octave);
AliBros 0:1a0457675056 136 while(GSh);
AliBros 0:1a0457675056 137 midi.noteoff(56 + octave);
AliBros 0:1a0457675056 138 }
AliBros 0:1a0457675056 139 while(!C&&!CSh&&!D&&!DSh&&!E&&!F&&!FSh&&!G&&!GSh&&!A&&!ASh&&!B);
AliBros 0:1a0457675056 140 if (A)
AliBros 0:1a0457675056 141 {
AliBros 0:1a0457675056 142 lcd.locate(8,1);
AliBros 0:1a0457675056 143 lcd.printf("A0 ");
AliBros 0:1a0457675056 144 midi.noteon(57 + octave);
AliBros 0:1a0457675056 145 while(A);
AliBros 0:1a0457675056 146 midi.noteoff(57 + octave);
AliBros 0:1a0457675056 147 }
AliBros 0:1a0457675056 148 while(!C&&!CSh&&!D&&!DSh&&!E&&!F&&!FSh&&!G&&!GSh&&!A&&!ASh&&!B);
AliBros 0:1a0457675056 149 if (ASh)
AliBros 0:1a0457675056 150 {
AliBros 0:1a0457675056 151 lcd.locate(8,1);
AliBros 0:1a0457675056 152 lcd.printf("A#0");
AliBros 0:1a0457675056 153 midi.noteon(58 + octave);
AliBros 0:1a0457675056 154 while(ASh);
AliBros 0:1a0457675056 155 midi.noteoff(58 + octave);
AliBros 0:1a0457675056 156 } while(!C&&!CSh&&!D&&!DSh&&!E&&!F&&!FSh&&!G&&!GSh&&!A&&!ASh&&!B);
AliBros 0:1a0457675056 157 if (B)
AliBros 0:1a0457675056 158 {
AliBros 0:1a0457675056 159 lcd.locate(8,1);
AliBros 0:1a0457675056 160 lcd.printf("B0 ");
AliBros 0:1a0457675056 161 midi.noteon(59 + octave);
AliBros 0:1a0457675056 162 while(DSh);
AliBros 0:1a0457675056 163 midi.noteoff(59 + octave);
AliBros 0:1a0457675056 164 }
AliBros 0:1a0457675056 165 }
AliBros 0:1a0457675056 166 }