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

📄 audiomixerwindow.cpp

📁 LINUX下的混音软件
💻 CPP
📖 第 1 页 / 共 4 页
字号:
    if (rec && container) {        for (unsigned int i = 0; i < rec->m_plugins.size(); i++) {            bool used = false;            bool bypass = false;            QColor pluginBgColour =                kapp->palette().color(QPalette::Active, QColorGroup::Light);            rec->m_plugins[i]->show();            AudioPluginInstance *inst = container->getPlugin(i);            if (inst && inst->isAssigned()) {                AudioPlugin *pluginClass                = m_document->getPluginManager()->getPlugin(                      m_document->getPluginManager()->                      getPositionByIdentifier(inst->getIdentifier().c_str()));                if (pluginClass) {                    rec->m_plugins[i]->setText(pluginClass->getLabel());                    QToolTip::add                        (rec->m_plugins[i], pluginClass->getLabel());                    pluginBgColour = pluginClass->getColour();                }                used = true;                bypass = inst->isBypassed();            } else {                rec->m_plugins[i]->setText(i18n("<none>"));                QToolTip::add                    (rec->m_plugins[i], i18n("<no plugin>"));                if (inst)                    bypass = inst->isBypassed();            }            if (bypass) {                rec->m_plugins[i]->setPaletteForegroundColor                (kapp->palette().                 color(QPalette::Active, QColorGroup::Button));                rec->m_plugins[i]->setPaletteBackgroundColor                (kapp->palette().                 color(QPalette::Active, QColorGroup::ButtonText));            } else if (used) {                rec->m_plugins[i]->setPaletteForegroundColor(Qt::white);                rec->m_plugins[i]->setPaletteBackgroundColor(pluginBgColour);            } else {                rec->m_plugins[i]->setPaletteForegroundColor                (kapp->palette().                 color(QPalette::Active, QColorGroup::ButtonText));                rec->m_plugins[i]->setPaletteBackgroundColor                (kapp->palette().                 color(QPalette::Active, QColorGroup::Button));            }        }    }}voidAudioMixerWindow::slotSelectPlugin(){    const QObject *s = sender();    for (FaderMap::iterator i = m_faders.begin();            i != m_faders.end(); ++i) {        int index = 0;        if (!i->second.m_populated || !i->second.m_pluginBox)            continue;        for (std::vector<QPushButton *>::iterator pli = i->second.m_plugins.begin();                pli != i->second.m_plugins.end(); ++pli) {            if (*pli == s) {                emit selectPlugin(this, i->first, index);                return ;            }            ++index;        }    }    int b = 1;    for (FaderVector::iterator i = m_submasters.begin();            i != m_submasters.end(); ++i) {        int index = 0;        if (!i->m_populated || !i->m_pluginBox)            continue;        for (std::vector<QPushButton *>::iterator pli = i->m_plugins.begin();                pli != i->m_plugins.end(); ++pli) {            if (*pli == s) {                emit selectPlugin(this, b, index);                return ;            }            ++index;        }        ++b;    }}voidAudioMixerWindow::slotInputChanged(){    const QObject *s = sender();    for (FaderMap::iterator i = m_faders.begin();            i != m_faders.end(); ++i) {        if (i->second.m_input == s)            emit instrumentParametersChanged(i->first);    }}voidAudioMixerWindow::slotOutputChanged(){    const QObject *s = sender();    for (FaderMap::iterator i = m_faders.begin();            i != m_faders.end(); ++i) {        if (i->second.m_output == s)            emit instrumentParametersChanged(i->first);    }}voidAudioMixerWindow::sendControllerRefresh(){    //!!! really want some notification of whether we have an external controller!    int controllerChannel = 0;    for (FaderMap::iterator i = m_faders.begin(); i != m_faders.end(); ++i) {        if (controllerChannel >= 16)            break;        Instrument *instrument =            m_studio->getInstrumentById(i->first);        int value = AudioLevel::dB_to_fader                    (instrument->getLevel(), 127, AudioLevel::LongFader);        MappedEvent mE(instrument->getId(),                       MappedEvent::MidiController,                       MIDI_CONTROLLER_VOLUME,                       MidiByte(value));        mE.setRecordedChannel(controllerChannel);        mE.setRecordedDevice(Device::CONTROL_DEVICE);        StudioControl::sendMappedEvent(mE);        int ipan = (int(instrument->getPan()) * 64) / 100;        if (ipan < 0)            ipan = 0;        if (ipan > 127)            ipan = 127;        MappedEvent mEp(instrument->getId(),                        MappedEvent::MidiController,                        MIDI_CONTROLLER_PAN,                        MidiByte(ipan));        mEp.setRecordedChannel(controllerChannel);        mEp.setRecordedDevice(Device::CONTROL_DEVICE);        StudioControl::sendMappedEvent(mEp);        ++controllerChannel;    }}voidAudioMixerWindow::slotFaderLevelChanged(float dB){    const QObject *s = sender();    BussList busses = m_studio->getBusses();    if (m_master.m_fader == s) {        if (busses.size() > 0) {            StudioControl::setStudioObjectProperty            (MappedObjectId(busses[0]->getMappedId()),             MappedAudioBuss::Level,             MappedObjectValue(dB));            busses[0]->setLevel(dB);        }        return ;    }    int index = 1;    for (FaderVector::iterator i = m_submasters.begin();            i != m_submasters.end(); ++i) {        if (i->m_fader == s) {            if ((int)busses.size() > index) {                StudioControl::setStudioObjectProperty                (MappedObjectId(busses[index]->getMappedId()),                 MappedAudioBuss::Level,                 MappedObjectValue(dB));                busses[index]->setLevel(dB);            }            return ;        }        ++index;    }    int controllerChannel = 0;    for (FaderMap::iterator i = m_faders.begin();            i != m_faders.end(); ++i) {        if (i->second.m_fader == s) {            Instrument *instrument =                m_studio->getInstrumentById(i->first);            if (instrument) {                StudioControl::setStudioObjectProperty                (MappedObjectId                 (instrument->getMappedId()),                 MappedAudioFader::FaderLevel,                 MappedObjectValue(dB));                instrument->setLevel(dB);            }            // send out to external controllers as well.            //!!! really want some notification of whether we have any!            if (controllerChannel < 16) {                int value = AudioLevel::dB_to_fader                            (dB, 127, AudioLevel::LongFader);                MappedEvent mE(instrument->getId(),                               MappedEvent::MidiController,                               MIDI_CONTROLLER_VOLUME,                               MidiByte(value));                mE.setRecordedChannel(controllerChannel);                mE.setRecordedDevice(Device::CONTROL_DEVICE);                StudioControl::sendMappedEvent(mE);            }            emit instrumentParametersChanged(i->first);        }        ++controllerChannel;    }}voidAudioMixerWindow::slotPanChanged(float pan){    const QObject *s = sender();    BussList busses = m_studio->getBusses();    int index = 1;    for (FaderVector::iterator i = m_submasters.begin();            i != m_submasters.end(); ++i) {        if (i->m_pan == s) {            if ((int)busses.size() > index) {                StudioControl::setStudioObjectProperty                (MappedObjectId(busses[index]->getMappedId()),                 MappedAudioBuss::Pan,                 MappedObjectValue(pan));                busses[index]->setPan(MidiByte(pan + 100.0));            }            return ;        }        ++index;    }    int controllerChannel = 0;    for (FaderMap::iterator i = m_faders.begin();            i != m_faders.end(); ++i) {        if (i->second.m_pan == s) {            Instrument *instrument =                m_studio->getInstrumentById(i->first);            if (instrument) {                StudioControl::setStudioObjectProperty                (instrument->getMappedId(),                 MappedAudioFader::Pan,                 MappedObjectValue(pan));                instrument->setPan(MidiByte(pan + 100.0));            }            // send out to external controllers as well.            //!!! really want some notification of whether we have any!            if (controllerChannel < 16) {                int ipan = (int(instrument->getPan()) * 64) / 100;                if (ipan < 0)                    ipan = 0;                if (ipan > 127)                    ipan = 127;                MappedEvent mE(instrument->getId(),                               MappedEvent::MidiController,                               MIDI_CONTROLLER_PAN,                               MidiByte(ipan));                mE.setRecordedChannel(controllerChannel);                mE.setRecordedDevice(Device::CONTROL_DEVICE);                StudioControl::sendMappedEvent(mE);            }            emit instrumentParametersChanged(i->first);        }        ++controllerChannel;    }}voidAudioMixerWindow::slotChannelsChanged(){    const QObject *s = sender();    // channels are only switchable on instruments    //!!! need to reconnect input, or change input channel number anyway    for (FaderMap::iterator i = m_faders.begin();            i != m_faders.end(); ++i) {        if (s == i->second.m_stereoButton) {            Instrument *instrument =                m_studio->getInstrumentById(i->first);            if (instrument) {                instrument->setAudioChannels                ((instrument->getAudioChannels() > 1) ? 1 : 2);                updateStereoButton(instrument->getId());                updateRouteButtons(instrument->getId());                emit instrumentParametersChanged(i->first);                return ;            }        }    }}voidAudioMixerWindow::slotSoloChanged(){    //...}voidAudioMixerWindow::slotMuteChanged(){    //...}voidAudioMixerWindow::slotRecordChanged(){    //...}voidAudioMixerWindow::updateMeters(SequencerMapper *mapper){    for (FaderMap::iterator i = m_faders.begin(); i != m_faders.end(); ++i) {        InstrumentId id = i->first;        FaderRec &rec = i->second;        if (!rec.m_populated)            continue;        LevelInfo info;        if (mapper->getInstrumentLevelForMixer(id, info)) {            // The values passed through are long-fader values            float dBleft = AudioLevel::fader_to_dB                           (info.level, 127, AudioLevel::LongFader);            if (rec.m_stereoness) {                float dBright = AudioLevel::fader_to_dB                                (info.levelRight, 127, AudioLevel::LongFader);                rec.m_meter->setLevel(dBleft, dBright);            } else {                rec.m_meter->setLevel(dBleft);            }        }    }    for (unsigned int i = 0; i < m_submasters.size(); ++i) {        FaderRec &rec = m_submasters[i];        LevelInfo info;        if (!mapper->getSubmasterLevel(i, info))            continue;        // The values passed through are long-fader values        float dBleft = AudioLevel::fader_to_dB                       (info.level, 127, AudioLevel::LongFader);        float dBright = AudioLevel::fader_to_dB                        (info.levelRight, 127, AudioLevel::LongFader);        rec.m_meter->setLevel(dBleft, dBright);    }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -