📄 managemetronomedialog.cpp
字号:
tit != m_doc->getComposition().getTracks().end(); ++tit) { if (tit->second->getInstrument() == (*iit)->getId()) { used = true; break; } } // if (used) iname = i18n("%1 [used]").arg(iname); m_metronomeInstrument->insertItem(iname); if ((*iit)->getId() == metronome->getInstrument()) { position = count; } count++; } m_metronomeInstrument->setCurrentItem(position); slotInstrumentChanged(position); m_barPitch = metronome->getBarPitch(); m_beatPitch = metronome->getBeatPitch(); m_subBeatPitch = metronome->getSubBeatPitch(); slotPitchSelectorChanged(0); m_metronomeResolution->setCurrentItem(metronome->getDepth()); m_metronomeBarVely->setValue(metronome->getBarVelocity()); m_metronomeBeatVely->setValue(metronome->getBeatVelocity()); m_metronomeSubBeatVely->setValue(metronome->getSubBeatVelocity()); m_playEnabled->setChecked(m_doc->getComposition().usePlayMetronome()); m_recordEnabled->setChecked(m_doc->getComposition().useRecordMetronome()); slotResolutionChanged(metronome->getDepth()); }}voidManageMetronomeDialog::slotInstrumentChanged(int i){ if (!m_instrumentParameterBox) return ; int deviceIndex = m_metronomeDevice->currentItem(); DeviceList *devices = m_doc->getStudio().getDevices(); DeviceListConstIterator it; int count = 0; MidiDevice *dev = 0; for (it = devices->begin(); it != devices->end(); it++) { dev = dynamic_cast<MidiDevice*>(*it); if (dev && dev->getDirection() == MidiDevice::Play) { if (count == deviceIndex) break; count++; } } // sanity if (count < 0 || dev == 0) { m_instrumentParameterBox->useInstrument(0); return ; } // populate instrument list InstrumentList list = dev->getPresentationInstruments(); if (i < 0 || i >= (int)list.size()) return ; m_instrumentParameterBox->useInstrument(list[i]);}voidManageMetronomeDialog::slotOk(){ slotApply(); accept();}voidManageMetronomeDialog::slotSetModified(){ setModified(true);}voidManageMetronomeDialog::setModified(bool value){ if (m_modified == value) return ; if (value) { enableButtonApply(true); } else { enableButtonApply(false); } m_modified = value;}voidManageMetronomeDialog::slotApply(){ Studio &studio = m_doc->getStudio(); DeviceList *devices = m_doc->getStudio().getDevices(); DeviceListConstIterator it; int count = 0; MidiDevice *dev = 0; for (it = devices->begin(); it != devices->end(); it++) { dev = dynamic_cast<MidiDevice*>(*it); if (dev && dev->getDirection() == MidiDevice::Play) { if (count == m_metronomeDevice->currentItem()) break; count++; } } if (!dev) { std::cerr << "Warning: ManageMetronomeDialog::slotApply: no " << m_metronomeDevice->currentItem() << "th device" << std::endl; return ; } DeviceId deviceId = dev->getId(); studio.setMetronomeDevice(deviceId); if (dev->getMetronome() == 0) return ; MidiMetronome metronome(*dev->getMetronome()); // get instrument InstrumentList list = dev->getPresentationInstruments(); Instrument *inst = list[m_metronomeInstrument->currentItem()]; if (inst) { metronome.setInstrument(inst->getId()); } metronome.setBarPitch(m_barPitch); metronome.setBeatPitch(m_beatPitch); metronome.setSubBeatPitch(m_subBeatPitch); metronome.setDepth( m_metronomeResolution->currentItem()); metronome.setBarVelocity( MidiByte(m_metronomeBarVely->value())); metronome.setBeatVelocity( MidiByte(m_metronomeBeatVely->value())); metronome.setSubBeatVelocity( MidiByte(m_metronomeSubBeatVely->value())); dev->setMetronome(metronome); m_doc->getComposition().setPlayMetronome(m_playEnabled->isChecked()); m_doc->getComposition().setRecordMetronome(m_recordEnabled->isChecked()); m_doc->getSequenceManager()->metronomeChanged(inst->getId(), true); m_doc->slotDocumentModified(); setModified(false);}voidManageMetronomeDialog::slotPreviewPitch(int pitch){ RG_DEBUG << "ManageMetronomeDialog::slotPreviewPitch" << endl; DeviceList *devices = m_doc->getStudio().getDevices(); DeviceListConstIterator it; int count = 0; MidiDevice *dev = 0; for (it = devices->begin(); it != devices->end(); it++) { dev = dynamic_cast<MidiDevice*>(*it); if (dev && dev->getDirection() == MidiDevice::Play) { if (count == m_metronomeDevice->currentItem()) break; count++; } } if (!dev) return ; const MidiMetronome *metronome = dev->getMetronome(); if (metronome == 0) return ; InstrumentList list = dev->getPresentationInstruments(); Instrument *inst = list[m_metronomeInstrument->currentItem()]; if (inst) { RG_DEBUG << "ManageMetronomeDialog::slotPreviewPitch" << " - previewing" << endl; MappedEvent mE(inst->getId(), MappedEvent::MidiNoteOneShot, pitch, MidiMaxValue, RealTime::zeroTime, RealTime(0, 10000000), RealTime::zeroTime); StudioControl::sendMappedEvent(mE); }}voidManageMetronomeDialog::slotPitchChanged(int pitch){ switch (m_metronomePitchSelector->currentItem()) { case 0: m_barPitch = pitch; break; case 1: m_beatPitch = pitch; break; case 2: m_subBeatPitch = pitch; break; } setModified(true);}voidManageMetronomeDialog::slotPitchSelectorChanged(int selection){ switch (selection) { case 0: m_metronomePitch->slotSetPitch(m_barPitch); break; case 1: m_metronomePitch->slotSetPitch(m_beatPitch); break; case 2: m_metronomePitch->slotSetPitch(m_subBeatPitch); break; }}}#include "ManageMetronomeDialog.moc"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -