⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 managemetronomedialog.cpp

📁 LINUX下的混音软件
💻 CPP
📖 第 1 页 / 共 2 页
字号:
                    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 + -