📄 audiomixerwindow.cpp
字号:
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 + -