Pulling the latest commit of QMidi library

master
Yohann Dedy 2017-02-28 23:43:09 +01:00
parent a3d97b4f7f
commit 8403e8be05
6 changed files with 46 additions and 0 deletions

View File

@ -36,6 +36,14 @@ void QMidiIn::openPort(QString name)
}
}
}
void QMidiIn::closePort()
{
_midiIn->closePort();
}
bool QMidiIn::isPortOpen()
{
return _midiIn->isPortOpen();
}
void QMidiIn::setIgnoreTypes(bool sysex, bool time, bool sense)
{
_midiIn->ignoreTypes(sysex, time, sense);
@ -85,6 +93,9 @@ void QMidiIn::callback(double deltatime, std::vector<unsigned char> *message, vo
midiMessage->setPitch((unsigned int) message->at(1));
midiMessage->setValue((unsigned int) message->at(2));
break;
case MIDI_SYSEX:
midiMessage->setSysExData(*message);
break;
default:
break;
}

View File

@ -16,6 +16,8 @@ public:
void openPort(QString name);
void openPort(unsigned int index);
void openVirtualPort(QString name);
void closePort();
bool isPortOpen();
void setIgnoreTypes(bool sysex = true, bool time = true, bool sense = true);
private:
void onMidiMessageReceive(QMidiMessage *msg);

View File

@ -19,6 +19,7 @@ QMidiMessage::QMidiMessage(const QMidiMessage &other)
_control = other._control;
_value = other._value;
_deltaTime = other._deltaTime;
_sysExData = other._sysExData;
_rawMessage = other._rawMessage;
}
@ -31,6 +32,7 @@ QMidiMessage *QMidiMessage::clear()
_control = 0;
_value = 0;
_deltaTime = 0;
_sysExData.clear();
_rawMessage.clear();
}
@ -69,6 +71,11 @@ double QMidiMessage::getDeltaTime()
return _deltaTime;
}
std::vector<unsigned char> QMidiMessage::getSysExData()
{
return _sysExData;
}
QMidiMessage *QMidiMessage::setStatus(QMidiStatus status)
{
_status = status;
@ -117,6 +124,11 @@ QMidiMessage *QMidiMessage::setRawMessage(std::vector<unsigned char> rawMessage)
return this;
}
QMidiMessage *QMidiMessage::setSysExData(std::vector<unsigned char> sysExData){
_sysExData = sysExData;
return this;
}
std::vector<unsigned char> QMidiMessage::getRawMessage()
{
if(_rawMessage.size() == 0)
@ -147,7 +159,14 @@ std::vector<unsigned char> QMidiMessage::getRawMessage()
_rawMessage.push_back(_value);
break;
}
case MIDI_SYSEX:{
_rawMessage = _sysExData;
if(_sysExData.back() != MIDI_SYSEX_END) _rawMessage.push_back(MIDI_SYSEX_END);
break;
}
//TODO: check protocol and implement other cases
default:{
break;
}

View File

@ -54,6 +54,8 @@ public:
unsigned int getControl();
unsigned int getValue();
double getDeltaTime();
std::vector<unsigned char> getSysExData();
QMidiMessage* setStatus(QMidiStatus status);
QMidiMessage* setChannel(unsigned int channel);
@ -62,6 +64,7 @@ public:
QMidiMessage* setControl(unsigned int control);
QMidiMessage* setValue(unsigned int value);
QMidiMessage* setDeltaTime(double deltaTime);
QMidiMessage* setSysExData(std::vector<unsigned char> sysExData);
QMidiMessage* setRawMessage(std::vector<unsigned char> rawMessage);
std::vector<unsigned char> getRawMessage();
@ -74,6 +77,7 @@ public:
unsigned int _control;
unsigned int _value;
double _deltaTime;
std::vector<unsigned char> _sysExData;
std::vector<unsigned char> _rawMessage;
signals:

View File

@ -24,6 +24,14 @@ void QMidiOut::openVirtualPort(QString name)
{
_midiOut->openVirtualPort(name.toStdString());
}
void QMidiOut::closePort()
{
_midiOut->closePort();
}
bool QMidiOut::isPortOpen()
{
return _midiOut->isPortOpen();
}
void QMidiOut::sendNoteOn(unsigned int channel, unsigned int pitch, unsigned int velocity)
{
std::vector<unsigned char> message;

View File

@ -19,6 +19,8 @@ public:
void sendRawMessage(std::vector<unsigned char> &message);
void openPort(unsigned int index);
void openVirtualPort(QString name);
void closePort();
bool isPortOpen();
private:
RtMidiOut *_midiOut;