QString midiControlToString(int ctrl) { QString name; switch(ctrl)/*{{{*/ { case CTRL_RECORD: name.append(QObject::tr("Record")); break; case CTRL_MUTE: name.append(QObject::tr("Mute")); break; case CTRL_SOLO: name.append(QObject::tr("Solo")); break; case CTRL_AUX1: name.append(QObject::tr("AuxSend 1")); break; case CTRL_AUX2: name.append(QObject::tr("AuxSend 2")); break; case CTRL_AUX3: name.append(QObject::tr("AuxSend 3")); break; case CTRL_AUX4: name.append(QObject::tr("AuxSend 4")); break; default: name.append(midiCtrlName(ctrl)); break; }/*}}}*/ return name; }
MidiController* MidiPort::midiController(int num) const { if (_instrument && _device && _device->isSynthPlugin() == false) { MidiControllerList* mcl = _instrument->controller(); for (iMidiController i = mcl->begin(); i != mcl->end(); ++i) { int cn = i->second->num(); if (cn == num) return i->second; // wildcard? if (((cn & 0xff) == 0xff) && ((cn & ~0xff) == (num & ~0xff))) return i->second; } } for (iMidiController i = defaultMidiController.begin(); i != defaultMidiController.end(); ++i) { int cn = i->second->num(); if (cn == num) return i->second; // wildcard? if (((cn & 0xff) == 0xff) && ((cn & ~0xff) == (num & ~0xff))) return i->second; } QString name = midiCtrlName(num); int min = 0; int max = 127; MidiController::ControllerType t = midiControllerType(num); switch (t) { case MidiController::RPN: case MidiController::NRPN: case MidiController::Controller7: max = 127; break; case MidiController::Controller14: case MidiController::RPN14: case MidiController::NRPN14: max = 16383; break; case MidiController::Program: max = 0xffffff; break; case MidiController::Pitch: max = 8191; min = -8192; break; case MidiController::Velo: // cannot happen break; } MidiController* c = new MidiController(name, num, min, max, 0); defaultMidiController.add(c); return c; }
CCEdit::CCEdit(QWidget* parent, CCInfo* n) : QFrame(parent) { setupUi(this); m_info = n; m_controlcombo->addItem(tr("Off"), -1); for(int i = 0; i < 128; ++i) { QString ctl(QString::number(i)+": "); m_controlcombo->addItem(ctl.append(midiCtrlName(i)), i); } updateValues(); connect(m_learn, SIGNAL(clicked()), this, SLOT(startLearning())); connect(m_channel, SIGNAL(valueChanged(int)), this, SLOT(channelChanged(int))); connect(m_controlcombo, SIGNAL(currentIndexChanged(int)), this, SLOT(controlChanged(int))); connect(m_chkRecord, SIGNAL(toggled(bool)), this, SLOT(recordOnlyChanged(bool))); connect(m_chkToggle, SIGNAL(toggled(bool)), this, SLOT(toggleChanged(bool))); connect(m_chkNRPN, SIGNAL(toggled(bool)), this, SLOT(toggleNRPN(bool))); connect(m_txtMSB, SIGNAL(valueChanged(int)), this, SLOT(msbChanged(int))); connect(m_txtLSB, SIGNAL(valueChanged(int)), this, SLOT(lsbChanged(int))); }
void CCEdit::updateValues() { if(!m_info) { QString l; l.append(QString::number(0)).append(": ").append(midiCtrlName(0)); label->setText(l); m_controlcombo->blockSignals(true); m_channel->blockSignals(true); m_chkRecord->blockSignals(true); m_chkToggle->blockSignals(true); m_txtMSB->blockSignals(true); m_txtLSB->blockSignals(true); m_chkNRPN->blockSignals(true); m_controlcombo->setCurrentIndex(0); m_channel->setValue(1); m_chkRecord->setChecked(false); m_chkToggle->setChecked(false); m_chkNRPN->setChecked(false); m_txtMSB->setVisible(false); m_txtLSB->setVisible(false); m_hexLabel->setVisible(false); m_txtMSB->setValue(-1); m_txtLSB->setValue(-1); m_controlcombo->setVisible(true); m_controlcombo->blockSignals(false); m_channel->blockSignals(false); m_chkRecord->blockSignals(false); m_chkToggle->blockSignals(false); m_txtMSB->blockSignals(false); m_txtLSB->blockSignals(false); m_chkNRPN->blockSignals(false); } else { QString l; if(m_info->controller() >= 0 && m_info->controller() <= 127) l.append(QString::number(m_info->controller())).append(": ").append(midiCtrlName(m_info->controller())); else l.append(midiControlToString(m_info->controller())); label->setText(l); m_controlcombo->blockSignals(true); m_channel->blockSignals(true); m_chkRecord->blockSignals(true); m_chkToggle->blockSignals(true); m_txtMSB->blockSignals(true); m_txtLSB->blockSignals(true); m_chkNRPN->blockSignals(true); m_controlcombo->setCurrentIndex(m_info->assignedControl()+1); m_channel->setValue(m_info->channel()+1); m_chkRecord->setChecked(m_info->recordOnly()); m_chkToggle->setChecked(m_info->fakeToggle()); m_chkNRPN->setChecked(m_info->nrpn()); m_txtMSB->setVisible(m_info->nrpn()); m_txtLSB->setVisible(m_info->nrpn()); m_txtMSB->setValue(m_info->msb()); m_txtLSB->setValue(m_info->lsb()); m_hexLabel->setVisible(m_info->nrpn()); m_hexLabel->setText(QString::number(calcNRPN7(m_info->msb(), m_info->lsb()))); m_controlcombo->setVisible(!m_info->nrpn()); m_chkRecord->blockSignals(false); m_channel->blockSignals(false); m_controlcombo->blockSignals(false); m_chkToggle->blockSignals(false); m_txtMSB->blockSignals(false); m_txtLSB->blockSignals(false); m_chkNRPN->blockSignals(false); } }