void CtrlrPanel::bootstrapPanel(const bool setInitialProgram) { _DBG("CtrlrPanel::bootstrapPanel"); if (getRestoreState()) return; boostrapStateStatus = true; if (setInitialProgram) setProgram (initialProgram); for (int i=0; i<ctrlrModulators.size(); i++) { ctrlrModulators[i]->allModulatorsInitialized(); } if (luaPanelLoadedCbk && !luaPanelLoadedCbk.wasObjectDeleted()) { if (luaPanelLoadedCbk->isValid()) { getCtrlrLuaManager().getMethodManager().call (luaPanelLoadedCbk); } } if ((bool)getProperty (Ids::panelMidiSendProgramChangeOnLoad) == true) { sendMidiProgramChange(); } editModeChanged(getProperty(Ids::uiPanelEditMode)); sendSnapshotOnLoad(); boostrapStateStatus = false; }
void InstanceProcessor::processBlock(AudioSampleBuffer& buffer, MidiBuffer& midiMessages) { for(int i = getTotalNumInputChannels(); i < getTotalNumOutputChannels(); ++i) { buffer.clear(i, 0, buffer.getNumSamples()); } bool infos = false; AudioPlayHead* playhead = getPlayHead(); if(playhead && m_patch_tie) { infos = playhead->getCurrentPosition(m_playinfos); } lock(); { m_midi.clear(); if(infos) { m_playing_list.setFloat(0, m_playinfos.isPlaying); m_playing_list.setFloat(1, m_playinfos.timeInSeconds); sendMessageAnything(m_patch_tie, s_playing, m_playing_list); m_measure_list.setFloat(0, m_playinfos.bpm); m_measure_list.setFloat(1, m_playinfos.timeSigNumerator); m_measure_list.setFloat(2, m_playinfos.timeSigDenominator); m_measure_list.setFloat(3, m_playinfos.ppqPosition); m_measure_list.setFloat(4, m_playinfos.ppqPositionOfLastBarStart); sendMessageAnything(m_patch_tie, s_measure, m_measure_list); } for(size_t i = 0; i < m_parameters.size() && m_parameters[i].isValid(); ++i) { sendMessageFloat(m_parameters[i].getTie(), m_parameters[i].getValueNonNormalized()); } MidiMessage message; MidiBuffer::Iterator it(midiMessages); int position = midiMessages.getFirstEventTime(); while(it.getNextEvent(message, position)) { if(message.isNoteOnOrOff()) { sendMidiNote(message.getChannel(), message.getNoteNumber(), message.getVelocity()); } else if(message.isController()) { sendMidiControlChange(message.getChannel(), message.getControllerNumber(), message.getControllerValue()); } else if(message.isPitchWheel()) { sendMidiPitchBend(message.getChannel(), message.getPitchWheelValue()); } else if(message.isChannelPressure()) { sendMidiAfterTouch(message.getChannel(), message.getChannelPressureValue()); } else if(message.isAftertouch()) { sendMidiPolyAfterTouch(message.getChannel(), message.getNoteNumber(), message.getAfterTouchValue()); } else if(message.isProgramChange()) { sendMidiProgramChange(message.getChannel(), message.getProgramChangeNumber()); } } } midiMessages.clear(); performDsp(buffer.getNumSamples(), getTotalNumInputChannels(), buffer.getArrayOfReadPointers(), getTotalNumOutputChannels(), buffer.getArrayOfWritePointers()); midiMessages.swapWith(m_midi); unlock(); }
void CtrlrPanel::valueTreePropertyChanged (ValueTree &treeWhosePropertyHasChanged, const Identifier &property) { if (treeWhosePropertyHasChanged.hasType(Ids::modulator) || treeWhosePropertyHasChanged.hasType(Ids::midiLibrary)) { return; } else if (property == Ids::panelMidiInputDevice) { if (getProperty(property).toString() == String::empty || getProperty(property).toString() == COMBO_ITEM_NONE) { midiInputThread.closeInputDevice(); } else { const bool result = midiInputThread.openInputDevice (getProperty(property)); if (getEditor()) { notify ( STR(result ? "Open OK: [" : "Open FAILED: [") + getProperty(property).toString() + "]", nullptr, result ? NotifySuccess : NotifyFailure); } } } else if (property == Ids::panelMidiOutputDevice) { if (getProperty(property).toString() == String::empty || getProperty(property).toString() == COMBO_ITEM_NONE) { if (outputDevice) outputDevice->closeDevice(); } else { outputDevice = owner.getCtrlrMidiDeviceManager().getDeviceByName(getProperty(property).toString(), CtrlrMidiDeviceManager::outputDevice, true); if (getEditor()) { notify ( STR(outputDevice ? "Open OK: [" : "Open FAILED: [") + getProperty(property).toString() + "]", nullptr, outputDevice ? NotifySuccess : NotifyFailure); } } } else if (property == Ids::panelMidiControllerDevice) { if (getProperty(property).toString() == String::empty || getProperty(property).toString() == COMBO_ITEM_NONE) { midiControllerInputThread.closeInputDevice(); } else { midiControllerInputThread.openInputDevice (getProperty(property)); } } else if ( property == Ids::panelMidiInputChannelDevice || property == Ids::panelMidiOutputChannelDevice || property == Ids::panelMidiInputChannelHost || property == Ids::panelMidiOutputChannelHost || property == Ids::panelMidiControllerChannelDevice ) { setMidiChannel (midiChannelFromString(property), (uint8) (int)getProperty(property)); } else if (property == Ids::panelMidiInputFromHost || property == Ids::panelMidiInputFromHostCompare || property == Ids::panelMidiOutputToHost || property == Ids::panelMidiThruH2H || property == Ids::panelMidiThruH2HChannelize || property == Ids::panelMidiThruH2D || property == Ids::panelMidiThruH2DChannelize || property == Ids::panelMidiThruD2D || property == Ids::panelMidiThruD2DChannelize || property == Ids::panelMidiThruD2H || property == Ids::panelMidiThruD2HChannelize || property == Ids::panelMidiRealtimeIgnore ) { setMidiOptionBool (midiOptionFromString(property), getProperty(property)); } else if (property == Ids::name) { if (ctrlrPanelEditor) { ctrlrPanelEditor->setProperty (Ids::name, getProperty(Ids::name)); } } else if (property == Ids::luaPanelMidiReceived) { if (getProperty(property) == String::empty) return; luaPanelMidiReceivedCbk = getCtrlrLuaManager().getMethodManager().getMethod(getProperty(property)); } else if (property == Ids::luaPanelMidiChannelChanged) { if (getProperty(property) == String::empty) return; luaPanelMidiChannelChangedCbk = getCtrlrLuaManager().getMethodManager().getMethod(getProperty(property)); } else if (property == Ids::luaPanelMessageHandler) { if (getProperty(property) == String::empty) return; luaPanelMessageHandlerCbk = getCtrlrLuaManager().getMethodManager().getMethod(getProperty(property)); } else if (property == Ids::luaPanelSaved) { if (getProperty(property) == String::empty) return; luaPanelSavedCbk = getCtrlrLuaManager().getMethodManager().getMethod(getProperty(property)); } else if (property == Ids::luaPanelLoaded) { if (getProperty(property) == String::empty) return; luaPanelLoadedCbk = getCtrlrLuaManager().getMethodManager().getMethod(getProperty(property)); } else if (property == Ids::luaPanelGlobalChanged) { if (getProperty(property) == String::empty) return; luaPanelGlobalChangedCbk = getCtrlrLuaManager().getMethodManager().getMethod(getProperty(property)); } else if (property == Ids::luaPanelBeforeLoad) { if (getProperty(property) == String::empty) return; luaPanelBeforeLoadCbk = getCtrlrLuaManager().getMethodManager().getMethod(getProperty(property)); } else if (property == Ids::luaPanelProgramChanged) { if (getProperty(property) == String::empty) return; luaPanelProgramChangedCbk = getCtrlrLuaManager().getMethodManager().getMethod(getProperty(property)); } else if (property == Ids::luaPanelResourcesLoaded) { if (getProperty(property) == String::empty) return; luaPanelResourcesLoadedCbk = getCtrlrLuaManager().getMethodManager().getMethod(getProperty(property)); } else if (property == Ids::panelGlobalVariables) { globalVariables = globalsFromString (getProperty(property)); } else if (property == Ids::panelResources) { panelResources = globalsFromString (getProperty(property)); } else if (property == Ids::panelMidiSnapshotDelay) { snapshot.setDelay(getProperty(property)); } else if (property == Ids::panelMidiProgram || property == Ids::panelMidiBankLsb || property == Ids::panelMidiBankMsb) { sendMidiProgramChange(); } else if (property == Ids::panelUID) { resourceManager.panelUIDChanged(); } else if (property == Ids::panelMidiGlobalDelay) { globalMidiDelay = getProperty(property); } }