QStringList CMidiDeviceRt::getMidiPortList(midiType_t type)
{
    unsigned int nPorts;
    QString name;
    RtMidi* midiDevice;
    QStringList portNameList;

    if (type == MIDI_INPUT)
        midiDevice = m_midiin;
    else
        midiDevice = m_midiout;

    nPorts = midiDevice->getPortCount();

    for(unsigned int i=0; i< nPorts; i++)
    {
        // kotechnology creating indexed string from the post name
        name = addIndexToString(midiDevice->getPortName(i).c_str(),i);
        if (name.contains("RtMidi Output Client"))
            continue;
        if (name.contains("RtMidi Input Client"))
            continue;
         portNameList << name;
    }


    return portNameList;
}
bool CMidiDeviceRt::openMidiPort(midiType_t type, QString portName)
{
    unsigned int nPorts;
    QString name;
    RtMidi* midiDevice;


    if (portName.length() == 0)
        return false;

    int dev;
    if (type == MIDI_INPUT)
    {
        midiDevice = m_midiin;
        dev = 0;
    }
    else
    {
        midiDevice = m_midiout;
        dev = 1;
    }

    nPorts = midiDevice->getPortCount();

    for(unsigned int i=0; i< nPorts; i++)
    {
        // kotechnology creating indexed string from the post name
        name = addIndexToString(midiDevice->getPortName(i).c_str(),i);
        if (name == portName) // Test for a match
        {
            if (m_midiPorts[dev] >= 0)
                midiDevice->closePort();

            m_midiPorts[dev] = i;
            m_rawDataIndex = 0;

            midiDevice->openPort( i );
            return true;
        }
    }
    return false;
}
Beispiel #3
0
unsigned int rtmidi_get_port_count (RtMidiPtr device)
{
#if defined(__NO_EXCEPTIONS__)
    RtMidi* rtm = (RtMidi*) device->ptr;
    rtm->resetError();
    unsigned int ports = rtm->getPortCount();
    if (rtm->isError()) {
        device->ok  = false;
        device->msg = rtm->getError().what ();
        return -1;
    }
    return ports;
#else
    try {
        return ((RtMidi*) device->ptr)->getPortCount ();

    } catch (const RtMidiError & err) {
        device->ok  = false;
        device->msg = err.what ();
        return -1;
    }
#endif
}