1 #ifndef _MIDI_SINK_H 2 #define _MIDI_SINK_H 3 4 #include <MidiEndpoint.h> 5 6 class BMidiDispatcher; 7 8 class BMidiConsumer : public BMidiEndpoint 9 { 10 public: 11 bigtime_t Latency() const; 12 13 private: 14 friend class BMidiLocalConsumer; 15 friend class BMidiLocalProducer; 16 friend class BMidiRoster; 17 18 BMidiConsumer(const char *name = NULL); 19 virtual ~BMidiConsumer(); 20 21 virtual void _Reserved1(); 22 virtual void _Reserved2(); 23 virtual void _Reserved3(); 24 virtual void _Reserved4(); 25 virtual void _Reserved5(); 26 virtual void _Reserved6(); 27 virtual void _Reserved7(); 28 virtual void _Reserved8(); 29 30 port_id fEventPort; 31 bigtime_t fLatency; 32 33 uint32 _reserved[2]; 34 }; 35 36 class BMidiLocalConsumer : public BMidiConsumer 37 { 38 public: 39 BMidiLocalConsumer(const char *name = NULL); 40 41 void SetLatency(bigtime_t latency); 42 43 void SetTimeout(bigtime_t when, void *data); 44 virtual void Timeout(void *data); 45 46 virtual void Data(uchar *data, size_t length, bool atomic, 47 bigtime_t time); 48 // Raw Midi data has been received. 49 // The default implementation calls one of the virtuals below: 50 51 virtual void NoteOff(uchar channel, uchar note, uchar velocity, 52 bigtime_t time); 53 virtual void NoteOn(uchar channel, uchar note, uchar velocity, 54 bigtime_t time); 55 virtual void KeyPressure(uchar channel, uchar note, uchar pressure, 56 bigtime_t time); 57 virtual void ControlChange(uchar channel, uchar controlNumber, 58 uchar controlValue, 59 bigtime_t time); 60 virtual void ProgramChange(uchar channel, uchar programNumber, 61 bigtime_t time); 62 virtual void ChannelPressure(uchar channel, uchar pressure, 63 bigtime_t time); 64 virtual void PitchBend(uchar channel, uchar lsb, uchar msb, 65 bigtime_t time); 66 virtual void SystemExclusive(void* data, size_t dataLength, 67 bigtime_t time); 68 virtual void SystemCommon(uchar statusByte, uchar data1, uchar data2, 69 bigtime_t time); 70 virtual void SystemRealTime(uchar statusByte, 71 bigtime_t time); 72 virtual void TempoChange(int32 bpm, 73 bigtime_t time); 74 virtual void AllNotesOff(bool justChannel, 75 bigtime_t time); 76 protected: 77 ~BMidiLocalConsumer(); 78 79 private: 80 81 friend class BMidiRoster; 82 83 virtual void _Reserved1(); 84 virtual void _Reserved2(); 85 virtual void _Reserved3(); 86 virtual void _Reserved4(); 87 virtual void _Reserved5(); 88 virtual void _Reserved6(); 89 virtual void _Reserved7(); 90 virtual void _Reserved8(); 91 92 BMidiDispatcher *fDispatcher; 93 bigtime_t fTimeout; 94 void *fTimeoutData; 95 96 uint32 _reserved[2]; 97 }; 98 99 #endif 100