Ejemplo n.º 1
0
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)));
}
Ejemplo n.º 2
0
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);
    
}
Ejemplo n.º 4
0
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)));
}