void PadKontrol::exitNativeMode() { QString sysEx; sysEx = "F042406E08000000F7"; this->init=false; this->padMidiKontrol->sendSysEx(&sysEx); this->padMidiKontrol->closeInput(); disconnect(padMidiKontrol->midiListener,SIGNAL(midiMessage(QString)),this,SIGNAL(midiMessage(QString))); //disconnect(padMidiKontrol->midiListener,SIGNAL(midiMessage(QString)),this,SLOT(messageMapper(QString))); }
void PadKontrol::enterNativeMode() { if(this->init!=true) { QFile sourceDocument; sourceDocument.setFileName("./mappings.xml"); if (!sourceDocument.open(QIODevice::ReadOnly)) { std::cout << " Couldn't open the file." << std::endl; return; } QXmlStreamReader reader(&sourceDocument); this->mappings.clear(); QStringList mappingElement; QString test; bool output=false; while (!reader.atEnd()) { reader.readNext(); //std::cout << "parsing XML" << std::endl; if (reader.isStartElement()) { if(reader.name() == "output") output=true; if((reader.name() == "mapping")&&output){ mappingElement.append(reader.attributes().value("startWith").toString()); mappingElement.append(reader.attributes().value("sysEx").toString()); } } if(reader.isEndElement()){ if((reader.name() == "mapping")&&output){ this->mappings.append(mappingElement); mappingElement.clear(); } if(reader.name() == "output"){ break; } } } this->padMidiKontrol->listenInput(); connect(padMidiKontrol->midiListener,SIGNAL(midiMessage(QString)),this,SIGNAL(midiMessage(QString))); //connect(padMidiKontrol->midiListener,SIGNAL(midiMessage(QString)),this,SLOT(messageMapper(QString))); this->init=true; QString sysEx; sysEx = "F042406E08000001F7"; this->padMidiKontrol->sendSysEx(&sysEx); sysEx = "f042406e083f0a01000000000000000000F7"; this->padMidiKontrol->sendSysEx(&sysEx); sysEx = "f042406e0822040150574ef7"; this->padMidiKontrol->sendSysEx(&sysEx); sysEx = "f042406e083f2a00000505057f7e7f7f030a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0102030405060708090a0b0c0d0e0f10f7"; this->padMidiKontrol->sendSysEx(&sysEx); sysEx = "f042406e083f0a010000000000004B5450F7"; this->padMidiKontrol->sendSysEx(&sysEx); } }
void ofxThreadedMidiPlayer::dispatchMidiEvent( float currentTime, float timeDelta, vector<unsigned char>& message){ ofxMidiMessage midiMessage(&message); if((message.at(0)) >= MIDI_SYSEX) { midiMessage.status = (MidiStatus)(message.at(0) & 0xFF); midiMessage.channel = 0; } else { midiMessage.status = (MidiStatus) (message.at(0) & 0xF0); midiMessage.channel = (int) (message.at(0) & 0x0F)+1; } midiMessage.deltatime = timeDelta;// deltatime;// * 1000; // convert s to ms midiMessage.portNum = midiPort; // midiMessage.portName = portName; switch(midiMessage.status) { case MIDI_NOTE_ON : case MIDI_NOTE_OFF: midiMessage.pitch = (int) message.at(1); midiMessage.velocity = (int) message.at(2); break; case MIDI_CONTROL_CHANGE: midiMessage.control = (int) message.at(1); midiMessage.value = (int) message.at(2); break; case MIDI_PROGRAM_CHANGE: case MIDI_AFTERTOUCH: midiMessage.value = (int) message.at(1); break; case MIDI_PITCH_BEND: midiMessage.value = (int) (message.at(2) << 7) + (int) message.at(1); // msb + lsb break; case MIDI_POLY_AFTERTOUCH: midiMessage.pitch = (int) message.at(1); midiMessage.value = (int) message.at(2); break; default: break; } ofNotifyEvent(midiEvent, midiMessage, this); }
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); QStateMachine machine; MidiKontrol *midiKontrol = new MidiKontrol(); MidiKontrol *virtualMidi = new MidiKontrol(); QGroupBox *deviceInGroup = new QGroupBox(tr("Device In")); QLabel *deviceInLabel = new QLabel(tr("PadKontrol PORT A")); QComboBox *deviceInComboBox = new QComboBox; QMapIterator<int, QString> i(midiKontrol->getInputDevicesList()); while (i.hasNext()) { i.next(); deviceInComboBox->insertItem(i.key(),i.value()); //std::cout << i.key << i.value() << std::endl; } QGroupBox *deviceOutGroup = new QGroupBox(tr("Device Out")); QLabel *deviceOutLabel = new QLabel(tr("PadKontrol CTRL")); QComboBox *deviceOutComboBox = new QComboBox; //deviceOutComboBox->addItems(midiKontrol->getOutputDevicesList()); QMapIterator<int, QString> j(midiKontrol->getOutputDevicesList()); while (j.hasNext()) { j.next(); deviceOutComboBox->insertItem(j.key(),j.value()); //std::cout << j.key() << j.value() <<std::endl; } QGroupBox *midiInGroup = new QGroupBox(tr("Midi In")); QLabel *midiInLabel = new QLabel(tr("In from Virtual midi 2")); QComboBox *midiInComboBox = new QComboBox; QMapIterator<int, QString> k(virtualMidi->getInputDevicesList()); while (k.hasNext()) { k.next(); midiInComboBox->insertItem(k.key(),k.value()); } QGroupBox *midiOutGroup = new QGroupBox(tr("Midi Out")); QLabel *midiOutLabel = new QLabel(tr("Out to Virtual midi 1")); QComboBox *midiOutComboBox = new QComboBox; QMapIterator<int, QString> g(virtualMidi->getOutputDevicesList()); while (g.hasNext()) { g.next(); midiOutComboBox->insertItem(g.key(),g.value()); } QGridLayout *deviceOutLayout = new QGridLayout; deviceOutLayout->addWidget(deviceOutLabel, 0, 0); deviceOutLayout->addWidget(deviceOutComboBox, 0, 1); deviceOutGroup->setLayout(deviceOutLayout); QGridLayout *deviceInLayout = new QGridLayout; deviceInLayout->addWidget(deviceInLabel, 0, 0); deviceInLayout->addWidget(deviceInComboBox, 0, 1); deviceInGroup->setLayout(deviceInLayout); QGridLayout *midiOutLayout = new QGridLayout; midiOutLayout->addWidget(midiOutLabel, 0, 0); midiOutLayout->addWidget(midiOutComboBox, 0, 1); midiOutGroup->setLayout(midiOutLayout); QGridLayout *midiInLayout = new QGridLayout; midiInLayout->addWidget(midiInLabel, 0, 0); midiInLayout->addWidget(midiInComboBox, 0, 1); midiInGroup->setLayout(midiInLayout); QPushButton *nativeModeOnBtn = new QPushButton("Enter Native mode", this); QPushButton *nativeModeOffBtn = new QPushButton("Exit Native mode", this); QGridLayout *layout = new QGridLayout; layout->addWidget(deviceOutGroup, 0, 0); layout->addWidget(deviceInGroup, 0, 1); layout->addWidget(midiOutGroup, 1, 0); layout->addWidget(midiInGroup, 1, 1); layout->addWidget(nativeModeOnBtn,2,0); layout->addWidget(nativeModeOffBtn,2,1); centralWidget()->setLayout(layout); PadKontrol *padKontrol = new PadKontrol(); virtualMidiKontrol *vMidiKontrol = new virtualMidiKontrol(); connect(deviceInComboBox, SIGNAL(activated(int)), padKontrol, SLOT(connectPadIn(int))); connect(deviceOutComboBox, SIGNAL(activated(int)), padKontrol, SLOT(connectPadOut(int))); connect(midiInComboBox, SIGNAL(activated(int)), vMidiKontrol, SLOT(connectMidiIn(int))); connect(midiOutComboBox, SIGNAL(activated(int)), vMidiKontrol, SLOT(connectMidiOut(int))); connect(nativeModeOnBtn, SIGNAL(clicked()), padKontrol, SLOT(enterNativeMode())); connect(nativeModeOnBtn, SIGNAL(clicked()), vMidiKontrol, SLOT(enterNativeMode())); connect(nativeModeOffBtn, SIGNAL(clicked()), padKontrol, SLOT(exitNativeMode())); connect(nativeModeOffBtn, SIGNAL(clicked()), vMidiKontrol, SLOT(exitNativeMode())); setWindowTitle(tr("totalKontrol")); connect(padKontrol,SIGNAL(midiMessage(QString)),vMidiKontrol,SLOT(messageMapper(QString))); connect(vMidiKontrol,SIGNAL(midiMessage(QString)),padKontrol,SLOT(messageMapper(QString))); }