示例#1
0
文件: utils.cpp 项目: 87maxi/oom
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;
}
示例#2
0
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;
}
示例#3
0
文件: ccedit.cpp 项目: Adamiko/los
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)));
}
示例#4
0
文件: ccedit.cpp 项目: Adamiko/los
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);
	}
}