Files
DrumMachine/midioutwrapper.cpp

62 lines
1.3 KiB
C++

#include "midioutwrapper.h"
#include <QDebug>
#include "midicontainers.h"
MidiOutWrapper::MidiOutWrapper(RtMidi::Api api, const QString &clientName, QObject *parent) :
QObject{parent},
midiOut{api, clientName.toStdString()}
{
}
void MidiOutWrapper::openPort(unsigned int portNumber, const QString &portName)
{
qDebug() << "opening" << QString::fromStdString(midiOut.getPortName(portNumber));
midiOut.openPort(portNumber, portName.toStdString());
if (!midiOut.isPortOpen())
qFatal("port did not open");
}
void MidiOutWrapper::openVirtualPort(const QString &portName)
{
midiOut.openVirtualPort(portName.toStdString());
}
void MidiOutWrapper::closePort()
{
midiOut.closePort();
}
bool MidiOutWrapper::isPortOpen() const
{
return midiOut.isPortOpen();
}
QStringList MidiOutWrapper::portNames()
{
QStringList names;
const auto count = midiOut.getPortCount();
for (unsigned int i = 0; i < count; i++)
names.append(QString::fromStdString(midiOut.getPortName(i)));
return names;
}
void MidiOutWrapper::sendMessage(const midi::MidiMessage &midiMsg)
{
union Helper {
Helper() {}
midi::MidiMessage midiMsg;
unsigned char buf[sizeof(midiMsg)];
};
Helper helper;
helper.midiMsg = midiMsg;
midiOut.sendMessage(helper.buf, sizeof(helper.buf));
}