Esempio n. 1
0
void CtrlrPanel::setProgram(ValueTree programTree, const bool sendSnapshotNow)
{
	ValueTree program;

	if (programTree.hasType(Ids::panelState))
	{
		program = programTree;
	}
	else
	{
		if (programTree.getChildWithName(Ids::panelState).isValid())
		{
			program = programTree.getChildWithName(Ids::panelState);
		}
	}

	setProgramState (true);
	if (program.isValid())
	{
		for (int i=0; i<program.getNumChildren(); i++)
		{
			if (program.getChild(i).hasType(Ids::value))
			{
				CtrlrModulator *m = getModulator (program.getChild(i).getProperty(Ids::name));
				if (m)
				{
					m->setRestoreState (true);
					m->getProcessor().setValueFromGUI (program.getChild(i).getProperty(Ids::value), true);
					if (m->getComponent())
					{
						m->getComponent()->setComponentValue (program.getChild(i).getProperty(Ids::value), false);
					}
					m->getProcessor().handleUpdateNowIfNeeded();
					m->setRestoreState (false);
				}
			}
		}

		if ((bool)getProperty (Ids::panelMidiSnapshotAfterProgramChange) == true)
		{
			snapshot.sendSnapshot();
		}

		if (luaPanelProgramChangedCbk && !luaPanelProgramChangedCbk.wasObjectDeleted())
		{
			if (luaPanelProgramChangedCbk->isValid())
			{
				getCtrlrLuaManager().getMethodManager().call (luaPanelProgramChangedCbk);
			}
		}
	}

	setProgramState (false);

	if (sendSnapshotNow)
	{
		_DBG("CtrlrPanel::setProgram sendSnapshotNow");
		sendSnapshot();
	}
}
Esempio n. 2
0
void CtrlrMIDILibrary::addNewProgram (const String programName, const int number, ValueTree unitToAddTo)
{
	ValueTree program = createEmptyProgramTree();

	program.addChild (owner.getProgram(), -1, nullptr);

	program.setProperty (Ids::name, getDefaultProgramName(programName), nullptr);
	program.setProperty (Ids::description, String::empty, nullptr);
	program.setProperty (Ids::number, getCurrentProgramMIDINumber(number), nullptr);
	program.setProperty (Ids::uuid, Uuid().toString(), nullptr);

	if (unitToAddTo.isValid())
	{
		unitToAddTo.addChild (program, -1, 0);
	}
	else
	{
		if (isBank(getCurrentBank()))
		{
			getCurrentBank().addChild (program, -1, 0);
		}
		else
		{
			getRoot().addChild (program, -1, 0);
		}
	}

	listeners.call (&CtrlrMIDILibrary::Listener::programListChanged);
}
Esempio n. 3
0
bool CtrlrMIDILibrary::transactionCanHandle(const ValueTree &transactionState, const ValueTree transactionItem)
{
	if (transactionState.isValid() && transactionState.hasType(Ids::trans))
	{
		if (luaTransInfoCbk)
		{
			if (luaTransInfoCbk->isValid())
			{
				const int ret = owner.getCtrlrLuaManager().getMethodManager().callWithRet (luaTransInfoCbk, transactionState, transactionItem);
				if (ret < 0)
				{
					_WRN("CtrlrMIDILibrary::transactionCanHandle luaTransInfoCbk defined but failed to execute");
				}
				else
				{
					return (ret ? true : false);
				}
			}
		}
		else
		{
			return (transactionCanHandleType(transactionState, transactionItem));
		}
	}

	return (false);
}
Esempio n. 4
0
ValueTree CtrlrMIDILibrary::scanChildrenForMenuIndex(ValueTree item, int itemIndexToFind, int &currentIndex)
{
	_DBG("CtrlrMIDILibrary::scanChildrenForMenuIndex");
	if (isContainer (item))
	{
		_DBG("\tcontainer ["+item.getType().toString()+"]");
		ValueTree child;

		for (int topLevelIndex=0; topLevelIndex<item.getNumChildren(); topLevelIndex++)
		{
			child = scanChildrenForMenuIndex (item.getChild(topLevelIndex), itemIndexToFind, currentIndex);

			if (child.isValid())
			{
				_DBG("\t\tvalid child found ["+child.getType().toString()+"] parent:["+child.getParent().getType().toString()+"]");
				return (child);
			}

			currentIndex++;
		}
	}

	if (itemIndexToFind == currentIndex)
	{
		_DBG("\t\titemIndexToFind == currentIndex ["+item.getType().toString()+"]");
		return (item);
	}
	else
	{
		return (ValueTree());
	}
}
Esempio n. 5
0
bool MDLParser::parseMDLX(const File& f, bool onlyExtras)
{
    XmlElement* xml = XmlDocument::parse(f);
    if (xml != nullptr)
    {
        ValueTree mdlxTree = ValueTree::fromXml(*xml);
        if (onlyExtras)
        {
            ValueTree comments = mdlxTree.getChildWithName(Objects::comments);
            if(comments.isValid())
            {
                mdlxTree.removeChild(comments, nullptr);
                ValueTree tmp1 = mdlxTree.createCopy();
                ValueTree tmp2 = mdlFile.mdlRoot.createCopy();
                tmp1.setProperty(Ids::mdlName, "", nullptr);
                tmp1.setProperty(Ids::mdlPath, "", nullptr);
                tmp2.setProperty(Ids::mdlName, "", nullptr);
                tmp2.setProperty(Ids::mdlPath, "", nullptr);
                if(tmp1.isEquivalentTo(tmp2))
                    mdlFile.mdlRoot.addChild(comments, -1, nullptr);
            }
        }
        else
        {
            mdlFile.mdlRoot = mdlxTree.createCopy();
        }
        delete xml;
        return true;
    }
    return false;
}
Esempio n. 6
0
bool AppearanceSettings::readFromXML (const XmlElement& xml)
{
    if (xml.hasTagName (settings.getType().toString()))
    {
        const ValueTree newSettings (ValueTree::fromXml (xml));

        // we'll manually copy across the new properties to the existing tree so that
        // any open editors will be kept up to date..
        settings.copyPropertiesFrom (newSettings, nullptr);

        for (int i = settings.getNumChildren(); --i >= 0;)
        {
            ValueTree c (settings.getChild (i));

            const ValueTree newValue (newSettings.getChildWithProperty (Ids::name, c.getProperty (Ids::name)));

            if (newValue.isValid())
                c.copyPropertiesFrom (newValue, nullptr);
        }

        return true;
    }

    return false;
}
Esempio n. 7
0
void Project::updateOldStyleConfigList()
{
    ValueTree deprecatedConfigsList (projectRoot.getChildWithName (Ids::CONFIGURATIONS));

    if (deprecatedConfigsList.isValid())
    {
        projectRoot.removeChild (deprecatedConfigsList, nullptr);

        for (Project::ExporterIterator exporter (*this); exporter.next();)
        {
            if (exporter->getNumConfigurations() == 0)
            {
                ValueTree newConfigs (deprecatedConfigsList.createCopy());

                if (! exporter->isXcode())
                {
                    for (int j = newConfigs.getNumChildren(); --j >= 0;)
                    {
                        ValueTree config (newConfigs.getChild(j));

                        config.removeProperty (Ids::osxSDK, nullptr);
                        config.removeProperty (Ids::osxCompatibility, nullptr);
                        config.removeProperty (Ids::osxArchitecture, nullptr);
                    }
                }

                exporter->settings.addChild (newConfigs, 0, nullptr);
            }
        }
    }
}
//==============================================================================
void ITunesLibrary::setLibraryTree (ValueTree& newTreeToUse)
{
    if (! newTreeToUse.isValid()) 
        newTreeToUse = ValueTree (MusicColumns::libraryIdentifier);

    libraryTree = newTreeToUse;
}
Esempio n. 9
0
void CtrlrManager::openPanelInternal(const ValueTree &panelTree)
{
	if (panelTree.isValid())
	{
		addPanel(panelTree, true);
	}
}
void UnityProjectBuilder::updateBuildDirectories()
{
    if (buildDir.isEmpty())
        return;
    
    ValueTree exportsTree (project.getChildWithName (Ids::exportFormats));
    
    if (! exportsTree.isValid())
        return;
    
    const int numExports = exportsTree.getNumChildren();
    
    for (int i = 0; i < numExports; ++i)
    {
        ValueTree exporter (exportsTree.getChild (i));
        
        if (exporter.hasProperty (Ids::targetFolderProp))
        {
            logOutput ("Updating exporter " + exporter.getType().toString());
            const String oldTarget (exporter.getProperty (Ids::targetFolderProp).toString());
            String newTarget (buildDir);
            
            if (oldTarget.containsChar ('/'))
                 newTarget << oldTarget.fromLastOccurrenceOf ("/", true, false);
                
            exporter.setProperty (Ids::targetFolderProp, newTarget, nullptr);
        }
    }
}
/** Load plugin with settings from XML */
void ZenAutoTrimAudioProcessor::setStateInformation(const void* data, int sizeInBytes)
{
	//DBG("In ZenTrimAudioProcessor::setStateInformation(data, sizeInBytes) ");
	ValueTree tree = ValueTree::readFromData(data, sizeInBytes);
	if (tree.isValid()) 
	{
		params->state = tree;
	}
}
Esempio n. 12
0
void CtrlrMIDILibrary::addNewTransaction (const String transactionName, ValueTree unitToAddTo)
{
	ValueTree transaction = CtrlrMIDITransaction::createEmptyTransactionTree(transactionName);

	if (unitToAddTo.isValid())
	{
		unitToAddTo.addChild (transaction, -1, nullptr);
	}
}
Esempio n. 13
0
ValueTree DrawableShape::FillAndStrokeState::getFillState (const Identifier& fillOrStrokeType)
{
    ValueTree v (state.getChildWithName (fillOrStrokeType));
    if (v.isValid())
        return v;

    setFill (fillOrStrokeType, FillType (Colours::black), nullptr, nullptr);
    return getFillState (fillOrStrokeType);
}
Esempio n. 14
0
void CtrlrMIDILibrary::setProgram (const int programMenuIndex)
{
	ValueTree program = getProgramForMenuIndex (programMenuIndex);

	if (program.isValid())
	{
		setProgram (program);
	}
}
Esempio n. 15
0
void SeaboardVisualiser::seaboardDidGetNoteOff(const juce::MidiMessage &message)
{
	int channel = message.getChannel();
	String childName = kChannelNo + String(channel);
	ValueTree removeMe = theSeaboardData.getChildWithName(kChannelNo + String(channel));
	// We check if the channel number does have a current note (if the seabaord data tree has a child tree named after the relevant channel). If so, we remove it.
	if (removeMe.isValid())
	{
		theSeaboardData.removeChild(removeMe, 0);
	}
}
Esempio n. 16
0
void TrackInfoComponent::paint (Graphics& g)
{
    const int w = getWidth();
    const int h = getHeight();
    const int m = 5;

    g.setColour (Colours::white);
    g.setFont (20);
    
    ValueTree trackInfo (audioFilePlayer.getLibraryEntry());
    
    if (trackInfo.isValid())
    {
        String infoText;
        infoText << trackInfo[MusicColumns::columnNames[MusicColumns::Artist]].toString() << "\n";
        infoText << trackInfo[MusicColumns::columnNames[MusicColumns::Song]].toString() << "\n";
        infoText << trackInfo[MusicColumns::columnNames[MusicColumns::Album]].toString() << "\n";
        infoText << trackInfo[MusicColumns::columnNames[MusicColumns::BPM]].toString();
        
        g.setFont (16);
        g.drawText (trackInfo[MusicColumns::columnNames[MusicColumns::Artist]].toString(),
                    m, m, w - (2 * m), 16,
                    Justification::centredLeft,
                    true);

        g.setFont (20);
        g.drawText (trackInfo[MusicColumns::columnNames[MusicColumns::Song]].toString(),
                          m, 16 + (2 * m), w - (2 * m), 20,
                          Justification::centredLeft,
                          true);
        
        g.setColour (Colours::lightgrey);
        g.setFont (12);
        g.drawText (trackInfo[MusicColumns::columnNames[MusicColumns::Album]].toString(),
                    m, 36 + (3 * m), w - (2 * m), 12,
                    Justification::centredLeft,
                    true);
        
    }
    else
    {
        String displayText;
        if (audioFilePlayer.getTotalLength() > 0)
            displayText = "No Track Info Available";
        else
            displayText = "Drop Tracks Here to Begin...";
        
        g.drawFittedText (displayText,
                          0, 0, w, h,
                          Justification (Justification::centred),
                          2);
    }
}
Esempio n. 17
0
//==============================================================================
ValueTree Project::getJuceConfigNode()
{
    ValueTree configNode = projectRoot.getChildWithName (Tags::configGroup);

    if (! configNode.isValid())
    {
        configNode = ValueTree (Tags::configGroup);
        projectRoot.addChild (configNode, -1, 0);
    }

    return configNode;
}
Esempio n. 18
0
void CtrlrLuaManager::restoreState (const ValueTree &savedState)
{
	if (savedState.isValid())
	{
		if (savedState.getChildWithName(Ids::luaManagerMethods).isValid())
		{
			methodManager->restoreState (savedState.getChildWithName(Ids::luaManagerMethods));
		}
	}

	methodManager->wrapUtilities();
}
Esempio n. 19
0
//==============================================================================
ValueTree Project::getExporters()
{
    ValueTree exporters (projectRoot.getChildWithName (Tags::exporters));

    if (! exporters.isValid())
    {
        projectRoot.addChild (ValueTree (Tags::exporters), 0, getUndoManagerFor (projectRoot));
        exporters = getExporters();
    }

    return exporters;
}
Esempio n. 20
0
void SeaboardVisualiser::seaboardDidGetAftertouch(const juce::MidiMessage & message)
{
	int channel = message.getChannel();
	float aftertouch = message.getAfterTouchValue() / 127.f; //Normalise the aftertouch value between 0 and 1.
	String childName = kChannelNo + String(channel);
	
	ValueTree noteTree = theSeaboardData.getChildWithName(childName);
	if (noteTree.isValid())
	{
		noteTree.setProperty(kAftertouch, aftertouch, 0);
	}
}
Esempio n. 21
0
bool Mixer::addChannel(Identifier channels_id , ValueTree channel_store)
{
  // validate channels group GUI and storage
  Channels* channels = getChannels(channels_id) ;
  if (!channels || !channel_store.isValid()) return false ;

  // create channel GUI and update mixer layout
  bool was_added = channels->addChannel(channel_store) ;
  if (was_added && channels != this->masterChannels) resized() ;

  return was_added ;
}
Esempio n. 22
0
bool AppearanceSettings::getColour (const String& name, Colour& result) const
{
    const ValueTree colour (settings.getChildWithProperty (Ids::name, name));

    if (colour.isValid())
    {
        result = Colour::fromString (colour [Ids::colour].toString());
        return true;
    }

    return false;
}
Esempio n. 23
0
void SeaboardVisualiser::seaboardDidGetPitchBend(const juce::MidiMessage & message)
{
	int channel = message.getChannel();
	float pitchBend = (message.getPitchWheelValue() - 8192) / 8192.f; //Normalise the pitch bend value between -1 and 1.
	String childName = kChannelNo + String(channel);
	
	ValueTree noteTree = theSeaboardData.getChildWithName(childName);
	if (noteTree.isValid())
	{
		noteTree.setProperty(kPitchBend, pitchBend, 0);
	}
}
Esempio n. 24
0
void CtrlrManager::restoreState (const ValueTree &savedTree)
{
	if (savedTree.isValid())
	{
		ctrlrManagerRestoring = true;

		restoreProperties (savedTree, managerTree);

		if (owner->getOverrides().isValid())
		{
			for (int i=0; i<owner->getOverrides().getNumProperties(); i++)
			{
				setProperty (owner->getOverrides().getPropertyName(i), owner->getOverrides().getPropertyAsValue(owner->getOverrides().getPropertyName(i), 0));
			}
		}

		managerTree.removeAllChildren (0);
		managerTree.addChild (ctrlrMidiDeviceManager.getManagerTree(), -1, 0);
		managerTree.addChild (ctrlrWindowManager.getManagerTree(), -1, 0);

		if (savedTree.getChildWithName(Ids::midiDeviceManager).isValid())
		{
			ctrlrMidiDeviceManager.restoreState (savedTree.getChildWithName(Ids::midiDeviceManager));
		}

		if (savedTree.getChildWithName(Ids::uiWindowManager).isValid())
		{
			ctrlrWindowManager.restoreState (savedTree.getChildWithName(Ids::uiWindowManager));
		}

		if (getInstanceMode() != InstanceMulti && savedTree.hasType (Ids::panelState))
		{
			restoreInstanceState (savedTree);
			return;
		}

		for (int i=0; i<savedTree.getNumChildren(); i++)
		{
			if (savedTree.getChild(i).hasType (Ids::panel))
			{
				addPanel (savedTree.getChild(i));
			}
		}

		if (ctrlrEditor)
		{
			restoreEditorState();
		}

		ctrlrManagerRestoring = false;
	}
}
ValueTree AudioProcessorValueTreeState::getOrCreateChildValueTree (const String& paramID)
{
    ValueTree v (state.getChildWithProperty (idPropertyID, paramID));

    if (! v.isValid())
    {
        v = ValueTree (valueType);
        v.setProperty (idPropertyID, paramID, undoManager);
        state.addChild (v, -1, undoManager);
    }

    return v;
}
Esempio n. 26
0
Value AppearanceSettings::getColourValue (const String& colourName)
{
    ValueTree c (settings.getChildWithProperty (Ids::name, colourName));

    if (! c.isValid())
    {
        c = ValueTree ("COLOUR");
        c.setProperty (Ids::name, colourName, nullptr);
        settings.addChild (c, -1, nullptr);
    }

    return c.getPropertyAsValue (Ids::colour, nullptr);
}
    static void getValueTreePath (ValueTree v, const ValueTree& topLevelTree, Array<int>& path)
    {
        while (v != topLevelTree)
        {
            ValueTree parent (v.getParent());

            if (! parent.isValid())
                break;

            path.add (parent.indexOf (v));
            v = parent;
        }
    }
AudioProcessorParameter* AudioProcessorValueTreeState::createAndAddParameter (String paramID, String paramName, String labelText,
                                                                              NormalisableRange<float> r, float defaultVal,
                                                                              std::function<String (float)> valueToTextFunction,
                                                                              std::function<float (const String&)> textToValueFunction)
{
    // All parameters must be created before giving this manager a ValueTree state!
    jassert (! state.isValid());
    jassert (MessageManager::getInstance()->isThisTheMessageThread());

    Parameter* p = new Parameter (*this, paramID, paramName, labelText, r,
                                  defaultVal, valueToTextFunction, textToValueFunction);
    processor.addParameter (p);
    return p;
}
Esempio n. 29
0
void CtrlrMIDILibrary::deleteCurrentSnapshot()
{
	if (getCurrentSnapshot().isValid())
	{
		ValueTree parent = getCurrentSnapshot().getParent();

		if (parent.isValid())
		{
			parent.removeChild (getCurrentSnapshot(), nullptr);
			currentSnapshot = ValueTree();
		}

		listeners.call (&CtrlrMIDILibrary::Listener::programListChanged);
	}
}
Esempio n. 30
0
void CtrlrMIDILibrary::deleteCurrentBank()
{
	if (isBank (getCurrentBank()) && getRoot() != getCurrentBank())
	{
		ValueTree parent = getCurrentBank().getParent();
		if (parent.isValid())
		{
			parent.removeChild (getCurrentBank(), nullptr);

			setProperty (Ids::midiLibraryBank, String::empty, false);
		}

		listeners.call (&CtrlrMIDILibrary::Listener::programListChanged);
	}
}