![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Gemphet8 ; 8-polyphonic synthesizer control application
Dependencies: MIDI REnc button mbed
MIDI_Proc/midi_proc.h@4:c18cfcad2c48, 2014-08-11 (annotated)
- 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?
User | Revision | Line number | New 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 |