Exemplo n.º 1
0
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;
}
Exemplo n.º 2
0
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();
}
Exemplo n.º 3
0
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);
	}
}