本文整理汇总了C++中MidiDevice::getBanksByLSB方法的典型用法代码示例。如果您正苦于以下问题:C++ MidiDevice::getBanksByLSB方法的具体用法?C++ MidiDevice::getBanksByLSB怎么用?C++ MidiDevice::getBanksByLSB使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MidiDevice
的用法示例。
在下文中一共展示了MidiDevice::getBanksByLSB方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: getSelectedInstrument
void
MIDIInstrumentParameterPanel::slotSelectProgram(int index)
{
RG_DEBUG << "slotSelectProgram()";
if (!getSelectedInstrument())
return;
MidiDevice *md =
dynamic_cast<MidiDevice *>(getSelectedInstrument()->getDevice());
if (!md)
return;
const MidiProgram *prg = &m_programs[index];
// If there has been no change, bail.
if (getSelectedInstrument()->getProgramChange() == prg->getProgram())
return;
getSelectedInstrument()->setProgramChange(prg->getProgram());
// In Variations mode, select the 0th variation.
// In Variations mode, it's very easy to select an "invalid"
// program change. I.e. one for which the bank is not valid. Go
// from one program/variation to a program that doesn't have that
// variation. We need to handle that here by selecting the 0th
// variation. That's what the user expects.
if (md->getVariationType() == MidiDevice::VariationFromMSB) {
MidiBank bank = getSelectedInstrument()->getProgram().getBank();
// Get the list of MSB variations.
BankList bankList = md->getBanksByLSB(
getSelectedInstrument()->isPercussion(), bank.getLSB());
if (!bankList.empty()) {
// Pick the first MSB variation
getSelectedInstrument()->setMSB(bankList.front().getMSB());
}
}
if (md->getVariationType() == MidiDevice::VariationFromLSB) {
MidiBank bank = getSelectedInstrument()->getProgram().getBank();
// Get the list of LSB variations.
BankList bankList = md->getBanksByMSB(
getSelectedInstrument()->isPercussion(), bank.getMSB());
if (!bankList.empty()) {
// Pick the first LSB variation
getSelectedInstrument()->setLSB(bankList.front().getLSB());
}
}
getSelectedInstrument()->sendChannelSetup();
// Just one change notification for the two potential changes.
// See comments in slotSelectBank() for further discussion.
getSelectedInstrument()->changed();
}