Пример #1
0
void MainWindow::onValueChanged()
{
    if(bridge) {
        bridge->deleteLater();
        QThread::yieldCurrentThread(); // Try and get any signals from the bridge sent sooner not later
        QCoreApplication::processEvents();
        bridge = NULL;
    }
    Settings::setLastMidiIn(ui->cmbMidiIn->currentText());
    Settings::setLastMidiOut(ui->cmbMidiOut->currentText());
    Settings::setLastSerialPort(ui->cmbSerial->currentText());
    if(!ui->chk_on->isChecked()
            || ( ui->cmbSerial->currentIndex() == 0
                    && ui->cmbMidiIn->currentIndex() == 0
                    && ui->cmbMidiOut->currentIndex() == 0 )) {
        return;
    }
    ui->lst_debug->clear();
    int midiIn =ui->cmbMidiIn->currentIndex()-1;
    int midiOut = ui->cmbMidiOut->currentIndex()-1;
    ui->lst_debug->addItem("Starting MIDI<->Serial Bridge...");
    bridge = new Bridge();
    connect(bridge, SIGNAL(debugMessage(QString)), SLOT(onDebugMessage(QString)));
    connect(bridge, SIGNAL(displayMessage(QString)), SLOT(onDisplayMessage(QString)));
    connect(bridge, SIGNAL(midiReceived()), ui->led_midiin, SLOT(blinkOn()));
    connect(bridge, SIGNAL(midiSent()), ui->led_midiout, SLOT(blinkOn()));
    connect(bridge, SIGNAL(serialTraffic()), ui->led_serial, SLOT(blinkOn()));
    bridge->attach(ui->cmbSerial->itemData(ui->cmbSerial->currentIndex()).toString(), Settings::getPortSettings(), midiIn, midiOut, workerThread);
}
Пример #2
0
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    qDebug() << "discoFever starting...";

    g_appParameters = new QtKApplicationParameters(0,QString("discoFever"));

    if(g_appParameters->fileLoad(false))
    {
            setDefaultParameters();
            QString msg = "discoFever.cfg not found!\r\nSetting default configuration.";
            qDebug() << msg;
            a.exit();
    }

    if(!g_appParameters->loadParam(QString("aplicacion"),QString("fileLog"),0).compare("1"))
    {
        qInstallMessageHandler(debugLogger);
    }

    qtkVirtualMIDI midi;
    networkThread network(QHostAddress(g_appParameters->loadParam(QString("network"),QString("udpHost"),0)),
                          (quint16)g_appParameters->loadParam(QString("network"),QString("udpPort"),0).toInt(),
                          (quint8)g_appParameters->loadParam(QString("network"),QString("statusRepeat"),0).toInt(),
                          (quint8)g_appParameters->loadParam(QString("network"),QString("midiOffIgnore"),0).toInt(),
                          (quint8)g_appParameters->loadParam(QString("network"),QString("midiChannelFilter"),0).toInt(),
                          (quint8)g_appParameters->loadParam(QString("network"),QString("midiChannelFilterEnable"),0).toInt(),
                          (quint8)g_appParameters->loadParam(QString("network"),QString("midiNoteOffset"),0).toInt());

    switch(midi.getStatus())
    {
        case stReady:
            QObject::connect(&midi,SIGNAL(midiReceived(midiMessage)),&network, SLOT(OnMidiReceived(midiMessage)));
            network.start();
            qDebug() << "discoFever is ready to dance!";
            return a.exec();
            break;

        case stUnknown:
        case stClosed:
        case stError:
        default:
            qDebug() << "qtkVirtualMIDI error, status: " << midi.getStatus();
            qDebug() << "discoFever will exit now...";
            break;
    }

    return 0;
}
Пример #3
0
void Bridge::onMidiIn(double timeStamp, QByteArray message)
{
    QString description = describeMIDI(message);

    QString translatedmessage = translateMIDItoSerialCommand(message);

    QByteArray ba = translatedmessage.toLocal8Bit();
    const char *translatedmessagetosend = ba.data();

    emit debugMessage(applyTimeStamp(QString("MIDI In: %1").arg((QString) translatedmessage)));
    emit midiReceived();
    if(serial && serial->isOpen()) {        
          serial->write(translatedmessagetosend);
//          serial->write(message);
        emit serialTraffic();
    }
}