00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __JackCoreMidiInputPort__
00021 #define __JackCoreMidiInputPort__
00022
00023 #include "JackCoreMidiPort.h"
00024 #include "JackMidiAsyncQueue.h"
00025 #include "JackMidiBufferWriteQueue.h"
00026
00027 namespace Jack {
00028
00029 class JackCoreMidiInputPort: public JackCoreMidiPort {
00030
00031 private:
00032
00033 jack_nframes_t
00034 GetFramesFromTimeStamp(MIDITimeStamp timestamp);
00035
00036 jack_midi_event_t *jack_event;
00037 jack_midi_data_t *sysex_buffer;
00038 size_t sysex_bytes_sent;
00039 JackMidiAsyncQueue *thread_queue;
00040 JackMidiBufferWriteQueue *write_queue;
00041
00042 protected:
00043
00044 void
00045 Initialize(const char *alias_name, const char *client_name,
00046 const char *driver_name, int index,
00047 MIDIEndpointRef endpoint);
00048
00049 public:
00050
00051 JackCoreMidiInputPort(double time_ratio, size_t max_bytes=4096,
00052 size_t max_messages=1024);
00053
00054 virtual
00055 ~JackCoreMidiInputPort();
00056
00057 void
00058 ProcessCoreMidi(const MIDIPacketList *packet_list);
00059
00060 void
00061 ProcessJack(JackMidiBuffer *port_buffer, jack_nframes_t frames);
00062
00063 bool
00064 Start();
00065
00066 bool
00067 Stop();
00068
00069 };
00070
00071 }
00072
00073 #endif