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) void QMidiIn::setIgnoreTypes(bool sysex, bool time, bool sense)
{ {
_midiIn->ignoreTypes(sysex, time, 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->setPitch((unsigned int) message->at(1));
midiMessage->setValue((unsigned int) message->at(2)); midiMessage->setValue((unsigned int) message->at(2));
break; break;
case MIDI_SYSEX:
midiMessage->setSysExData(*message);
break;
default: default:
break; break;
} }

View File

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

View File

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

View File

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

View File

@ -24,6 +24,14 @@ void QMidiOut::openVirtualPort(QString name)
{ {
_midiOut->openVirtualPort(name.toStdString()); _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) void QMidiOut::sendNoteOn(unsigned int channel, unsigned int pitch, unsigned int velocity)
{ {
std::vector<unsigned char> message; std::vector<unsigned char> message;

View File

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