Gemphet8 ; 8-polyphonic synthesizer control application

Dependencies:   MIDI REnc button mbed

Committer:
ChuckTimber
Date:
Mon Aug 11 07:14:46 2014 +0000
Revision:
4:c18cfcad2c48
working copy - MIDI class member version NG.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ChuckTimber 4:c18cfcad2c48 1 #ifndef SUB_MIDI_PROC_H
ChuckTimber 4:c18cfcad2c48 2 #define SUB_MIDI_PROC_H
ChuckTimber 4:c18cfcad2c48 3
ChuckTimber 4:c18cfcad2c48 4 #include "mbed.h"
ChuckTimber 4:c18cfcad2c48 5 #include "MIDI.h"
ChuckTimber 4:c18cfcad2c48 6
ChuckTimber 4:c18cfcad2c48 7 /** MIDI System message */
ChuckTimber 4:c18cfcad2c48 8 #define MIDI_ALL_NOTE_OFF 0x7B
ChuckTimber 4:c18cfcad2c48 9 #define MIDI_RESET_ALL_CONTROLLERS 0x79
ChuckTimber 4:c18cfcad2c48 10
ChuckTimber 4:c18cfcad2c48 11 #define POLYPHONICE_NOTES 8
ChuckTimber 4:c18cfcad2c48 12
ChuckTimber 4:c18cfcad2c48 13 namespace mbed
ChuckTimber 4:c18cfcad2c48 14 {
ChuckTimber 4:c18cfcad2c48 15
ChuckTimber 4:c18cfcad2c48 16 /** @structure MIDI Note management structure
ChuckTimber 4:c18cfcad2c48 17 *
ChuckTimber 4:c18cfcad2c48 18 */
ChuckTimber 4:c18cfcad2c48 19 typedef struct _MidiNote {
ChuckTimber 4:c18cfcad2c48 20 /// MIDI Note number
ChuckTimber 4:c18cfcad2c48 21 uint8_t Note;
ChuckTimber 4:c18cfcad2c48 22 /// MIDI Note velocity
ChuckTimber 4:c18cfcad2c48 23 uint8_t Velocity;
ChuckTimber 4:c18cfcad2c48 24 /// MIDI Note channel
ChuckTimber 4:c18cfcad2c48 25 uint8_t Channel;
ChuckTimber 4:c18cfcad2c48 26 /// pointer to the next _MidiNote object
ChuckTimber 4:c18cfcad2c48 27 struct _MidiNote *next;
ChuckTimber 4:c18cfcad2c48 28 } MN_t, *MN_p;
ChuckTimber 4:c18cfcad2c48 29
ChuckTimber 4:c18cfcad2c48 30 class MIDI_P
ChuckTimber 4:c18cfcad2c48 31 {
ChuckTimber 4:c18cfcad2c48 32
ChuckTimber 4:c18cfcad2c48 33 private:
ChuckTimber 4:c18cfcad2c48 34 MIDI _midi;
ChuckTimber 4:c18cfcad2c48 35
ChuckTimber 4:c18cfcad2c48 36 MN_t NoteEnd;
ChuckTimber 4:c18cfcad2c48 37 MN_t NoteStart;
ChuckTimber 4:c18cfcad2c48 38 MN_t MidiNotes[POLYPHONICE_NOTES];
ChuckTimber 4:c18cfcad2c48 39 uint16_t MidiNotesTag;
ChuckTimber 4:c18cfcad2c48 40 uint8_t NumOfNotes;
ChuckTimber 4:c18cfcad2c48 41
ChuckTimber 4:c18cfcad2c48 42 /** @brief Prototypes related to MIDI
ChuckTimber 4:c18cfcad2c48 43 *
ChuckTimber 4:c18cfcad2c48 44 */
ChuckTimber 4:c18cfcad2c48 45 MN_p allocN(void);
ChuckTimber 4:c18cfcad2c48 46 void freeN(MN_p addr);
ChuckTimber 4:c18cfcad2c48 47 void midi_allnoteoff(void);
ChuckTimber 4:c18cfcad2c48 48 void midi_resetcontrol(void);
ChuckTimber 4:c18cfcad2c48 49 void midi_sysreset(void);
ChuckTimber 4:c18cfcad2c48 50 void midi_noteoff(byte channel, byte note, byte velocity);
ChuckTimber 4:c18cfcad2c48 51 void midi_noteon(byte channel, byte note, byte velocity);
ChuckTimber 4:c18cfcad2c48 52 void midi_cc(byte channel, byte number, byte value);
ChuckTimber 4:c18cfcad2c48 53 void midi_pc(byte channel, byte number);
ChuckTimber 4:c18cfcad2c48 54 void midi_pbend(byte channel, int bend);
ChuckTimber 4:c18cfcad2c48 55
ChuckTimber 4:c18cfcad2c48 56 public:
ChuckTimber 4:c18cfcad2c48 57 MIDI_P(PinName tx, PinName rx);
ChuckTimber 4:c18cfcad2c48 58 ~MIDI_P() { };
ChuckTimber 4:c18cfcad2c48 59 void Init(void);
ChuckTimber 4:c18cfcad2c48 60
ChuckTimber 4:c18cfcad2c48 61 }; // end of class MIDI_P definition
ChuckTimber 4:c18cfcad2c48 62
ChuckTimber 4:c18cfcad2c48 63 } // end of namespace mbed
ChuckTimber 4:c18cfcad2c48 64 #endif