MIDIInput.h
Go to the documentation of this file.
1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
2 
3 /*
4  Sonic Visualiser
5  An audio file viewer and annotation editor.
6  Centre for Digital Music, Queen Mary, University of London.
7  This file copyright 2006-2009 Chris Cannam and QMUL.
8 
9  This program is free software; you can redistribute it and/or
10  modify it under the terms of the GNU General Public License as
11  published by the Free Software Foundation; either version 2 of the
12  License, or (at your option) any later version. See the file
13  COPYING included with this distribution for more information.
14 */
15 
16 #ifndef SV_MIDI_INPUT_H
17 #define SV_MIDI_INPUT_H
18 
19 #include <QObject>
20 #include "MIDIEvent.h"
21 
22 #include <vector>
23 #include "base/RingBuffer.h"
24 #include "base/FrameTimer.h"
25 
26 class RtMidiIn;
27 
28 class MIDIInput : public QObject
29 {
30  Q_OBJECT
31 
32 public:
33  MIDIInput(QString name, FrameTimer *timer);
34  virtual ~MIDIInput();
35 
36  bool isOK() const { return m_rtmidi != 0; }
37 
38  bool isEmpty() const { return getEventsAvailable() == 0; }
39  int getEventsAvailable() const { return m_buffer.getReadSpace(); }
41 
42 signals:
43  void eventsAvailable();
44 
45 protected:
46  RtMidiIn *m_rtmidi;
48 
49  static void staticCallback(double, std::vector<unsigned char> *, void *);
50  void callback(double, std::vector<unsigned char> *);
51 
52  void postEvent(MIDIEvent);
54 };
55 
56 #endif
57 
bool isOK() const
Definition: MIDIInput.h:36
RingBuffer< MIDIEvent * > m_buffer
Definition: MIDIInput.h:53
FrameTimer * m_frameTimer
Definition: MIDIInput.h:47
void eventsAvailable()
int getEventsAvailable() const
Definition: MIDIInput.h:39
bool isEmpty() const
Definition: MIDIInput.h:38
virtual ~MIDIInput()
Definition: MIDIInput.cpp:74
MIDIEvent readEvent()
Definition: MIDIInput.cpp:105
MIDIInput(QString name, FrameTimer *timer)
Definition: MIDIInput.cpp:22
A trivial interface for things that permit retrieving "the current frame".
Definition: FrameTimer.h:27
int getReadSpace(int R=0) const
Return the amount of data available for reading by reader R, in samples.
Definition: RingBuffer.h:236
static void staticCallback(double, std::vector< unsigned char > *, void *)
Definition: MIDIInput.cpp:80
RtMidiIn * m_rtmidi
Definition: MIDIInput.h:46
void postEvent(MIDIEvent)
Definition: MIDIInput.cpp:114
void callback(double, std::vector< unsigned char > *)
Definition: MIDIInput.cpp:87