// Add controller CON at INDEX, shifting further controllers one // position forwards. // Used only by RemoveControlParameterCommand. void MidiDevice::addControlParameter(const ControlParameter &con, int index, bool propagateToInstruments) { ControlList controls; // if we're out of range just add the control if (index >= (int)m_controlList.size()) { addControlParameter(con, propagateToInstruments); return; } // Rebuild the ControlList entry by entry, placing CON at INDEX. // For entry INDEX we do two push_back's, for other entries we do // one. for (int i = 0; i < (int)m_controlList.size(); ++i) { if (index == i) { controls.push_back(con); // !!! This seems to do more than we need, since we // discard the original m_controlList. addControlParameter(con, propagateToInstruments); } controls.push_back(m_controlList[i]); } // Assign the ControlList we just made. m_controlList = controls; }
ControlList MidiDevice::getIPBControlParameters() const { ControlList retList; Rosegarden::MidiByte MIDI_CONTROLLER_VOLUME = 0x07; for (ControlList::const_iterator it = m_controlList.begin(); it != m_controlList.end(); ++it) { if (it->getIPBPosition() != -1 && it->getControllerValue() != MIDI_CONTROLLER_VOLUME) retList.push_back(*it); } return retList; }