Entropy Piano Tuner  1.1.3 (documentation not yet complete)
An open-source experimental software for piano tuning by entropy minimization
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
RtMidiimplementation.h
Go to the documentation of this file.
1 /*****************************************************************************
2  * Copyright 2015 Haye Hinrichsen, Christoph Wick
3  *
4  * This file is part of Entropy Piano Tuner.
5  *
6  * Entropy Piano Tuner is free software: you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by the
8  * Free Software Foundation, either version 3 of the License, or (at your
9  * option) any later version.
10  *
11  * Entropy Piano Tuner is distributed in the hope that it will be useful, but
12  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
13  * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
14  * more details.
15  *
16  * You should have received a copy of the GNU General Public License along with
17  * Entropy Piano Tuner. If not, see http://www.gnu.org/licenses/.
18  *****************************************************************************/
19 
20 //=============================================================================
21 // MIDI implementaion for various platforms
22 //=============================================================================
23 
24 #ifndef RTMIDIIMPLEMENTATION_H
25 #define RTMIDIIMPLEMENTATION_H
26 #include "../../config.h"
27 #include "midiadapter.h"
28 #include <memory>
29 
30 // so not forget to set PREDEFINED = CONFIG_ENABLE_RTMIDI in Doxyfile
31 // in order to include this class in the doxygen documentation.
32 
33 #if CONFIG_ENABLE_RTMIDI
34 
35 #include "../../thirdparty/RtMidi/RtMidi.h"
36 
51 
53 {
54 public:
57 
58  void init() override final;
59  void exit() override final;
60 
61  int GetNumberOfPorts() override final;
62  std::string GetPortName(int i) override final;
63  std::string GetPortNames() override final;
64  bool OpenPort (int i, std::string AppName="") override final;
65  bool OpenPort (std::string AppName="")override final;
66  int getCurrentPort() const override final {return mCurrentPort;}
67 
68 private:
69  void ClearQueue ();
70  std::unique_ptr<RtMidiIn> mRtMidi;
72 
74  static void StaticCallback (double deltatime, std::vector< unsigned char > *message, void *);
75 };
76 
77 #endif // CONFIG_ENABLE_RTMIDI
78 #endif // RTMIDIIMPLEMENTATION_H
RtMidiImplementation()
Constructor without functionality.
int mCurrentPort
The current port that is used or -1 of none.
void init() overridefinal
Initialize RtMidi implementation.
std::unique_ptr< RtMidiIn > mRtMidi
Instance of the third-party MIDI interface.
~RtMidiImplementation()
Destructor without functionality.
std::string GetPortName(int i) overridefinal
Get the name of device number i (starting with zero)
int getCurrentPort() const overridefinal
Get the current port number.
Interface for reading an externally connected MIDI keyboard.
std::string GetPortNames() overridefinal
Get a list of all available input devices.
static void StaticCallback(double deltatime, std::vector< unsigned char > *message, void *)
Static callback function (private)
void exit() overridefinal
Shut down RtMidi implementation.
int GetNumberOfPorts() overridefinal
Get the number of available MIDI input ports.
Adapter class for reading an externally connected MIDI keyboard.
Definition: midiadapter.h:43
bool OpenPort(int i, std::string AppName="") overridefinal
Open MIDI input device number i.
void ClearQueue()
Clear the MIDI input queue.