2020-04-25 20:53:49 +02:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include <QObject>
|
|
|
|
#include <QString>
|
|
|
|
|
|
|
|
#include "rtmidi/RtMidi.h"
|
|
|
|
|
2022-12-27 20:54:38 +01:00
|
|
|
namespace midi { struct MidiMessage; }
|
2020-04-25 20:53:49 +02:00
|
|
|
|
|
|
|
class MidiInWrapper : public QObject
|
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
public:
|
|
|
|
MidiInWrapper(RtMidi::Api api = RtMidi::UNSPECIFIED,
|
2022-12-18 03:30:46 +01:00
|
|
|
const QString &clientName = "RtMidi Input Client",
|
|
|
|
unsigned int queueSizeLimit = 100,
|
|
|
|
QObject *parent = nullptr);
|
2020-04-25 20:53:49 +02:00
|
|
|
|
2022-12-17 21:56:23 +01:00
|
|
|
void openPort(unsigned int portNumber, const QString &portName);
|
2020-04-25 20:53:49 +02:00
|
|
|
void openVirtualPort(const QString &portName);
|
|
|
|
void closePort();
|
|
|
|
bool isPortOpen() const;
|
|
|
|
|
|
|
|
QStringList portNames();
|
|
|
|
|
|
|
|
signals:
|
2022-12-27 20:54:38 +01:00
|
|
|
void midiReceived(const midi::MidiMessage &message);
|
2023-06-10 21:31:50 +02:00
|
|
|
void onQuarterNote();
|
2020-04-25 20:53:49 +02:00
|
|
|
|
|
|
|
private:
|
|
|
|
static void mycallback(double deltatime, std::vector<unsigned char> *message, void *userData);
|
|
|
|
|
|
|
|
RtMidiIn midiIn;
|
2023-06-10 21:31:50 +02:00
|
|
|
|
|
|
|
int m_timerCounter{};
|
|
|
|
bool m_counting{true};
|
2020-04-25 20:53:49 +02:00
|
|
|
};
|