void update() { const AudioProcessorGraph::Node::Ptr f (graph.getNodeForId (filterID)); if (f == nullptr) { delete this; return; } numIns = f->getProcessor()->getNumInputChannels(); if (f->getProcessor()->acceptsMidi()) ++numIns; numOuts = f->getProcessor()->getNumOutputChannels(); if (f->getProcessor()->producesMidi()) ++numOuts; int w = 100; int h = 60; w = jmax (w, (jmax (numIns, numOuts) + 1) * 20); const int textWidth = font.getStringWidth (f->getProcessor()->getName()); w = jmax (w, 16 + jmin (textWidth, 300)); if (textWidth > 300) h = 100; setSize (w, h); setName (f->getProcessor()->getName()); { double x, y; graph.getNodePosition (filterID, x, y); setCentreRelative ((float) x, (float) y); } if (numIns != numInputs || numOuts != numOutputs) { numInputs = numIns; numOutputs = numOuts; deleteAllChildren(); int i; for (i = 0; i < f->getProcessor()->getNumInputChannels(); ++i) addAndMakeVisible (new PinComponent (graph, filterID, i, true)); if (f->getProcessor()->acceptsMidi()) addAndMakeVisible (new PinComponent (graph, filterID, FilterGraph::midiChannelNumber, true)); for (i = 0; i < f->getProcessor()->getNumOutputChannels(); ++i) addAndMakeVisible (new PinComponent (graph, filterID, i, false)); if (f->getProcessor()->producesMidi()) addAndMakeVisible (new PinComponent (graph, filterID, FilterGraph::midiChannelNumber, false)); resized(); } }
void NodeComponent::update() { const AudioProcessorGraph::Node::Ptr f (audioEngine.getDoc().getNodeForId (nodeID)); if (f == nullptr) { delete this; return; } numIns = f->getProcessor()->getTotalNumInputChannels(); if (f->getProcessor()->acceptsMidi()) ++numIns; numOuts = f->getProcessor()->getTotalNumOutputChannels(); if (f->getProcessor()->producesMidi()) ++numOuts; FaustAudioPluginInstance* faustProc = dynamic_cast<FaustAudioPluginInstance*>(f->getProcessor()); if (faustProc) highlight = faustProc->getHighlight(); int w = 10; int h = 50; // Update width based on number of I/O w = jmax (w, PINS_LEFT_OFFSET + ((jmax (numIns, numOuts) + 1) * OFFSET_BETWEEN_PINS)); String name = f->getProcessor()->getName(); setName (name); if (numIns != numInputs || numOuts != numOutputs || editor == nullptr) { numInputs = numIns; numOutputs = numOuts; deleteAllChildren(); addAndMakeVisible(nodeName = new Label(name, name)); nodeName->setJustificationType(Justification::centred); nodeName->setInterceptsMouseClicks(false, false); nodeName->setFont(font); w = jmax (w, nodeName->getFont().getStringWidth(name) + 15); if(!InternalPluginFormat::isInternalFormat(name) && f->getProcessor()->getNumParameters() > 0) { int uiStatus = f->properties["uiStatus"]; if(uiStatus == kUIStatusEmbed) { addAndMakeVisible(editor = new PMixGenericAudioProcessorEditor (audioEngine, f->getProcessor(), f->nodeID)); w = jmax (w, editor->getWidth() + 20 ); if (editor->getContentHeight() > 300) { editor->setSize(editor->getWidth(), 100); } h += jmin (320, editor->getContentHeight() + 20); } } setSize (w, h); int i; for (i = 0; i < f->getProcessor()->getTotalNumInputChannels(); ++i) addAndMakeVisible (new PinComponent (audioEngine, nodeID, i, true)); if (f->getProcessor()->acceptsMidi()) addAndMakeVisible (new PinComponent (audioEngine, nodeID, PMixDocument::midiChannelNumber, true)); for (i = 0; i < f->getProcessor()->getTotalNumOutputChannels(); ++i) addAndMakeVisible (new PinComponent (audioEngine, nodeID, i, false)); if (f->getProcessor()->producesMidi()) addAndMakeVisible (new PinComponent (audioEngine, nodeID, PMixDocument::midiChannelNumber, false)); resized(); } { double x, y; audioEngine.getDoc().getNodePosition (nodeID, x, y); setCentreRelative ((float) x, (float) y); } if(faustProc != nullptr) { if(faustProc->getCompilerMessage() != String::empty) bubbleMessage(faustProc->getCompilerMessage()); } }
void Node::update () { const auto node = graph.getNodeForID (id); numIns = node->getNumInputChannels (); if (node->acceptsMidi ()) ++numIns; numOuts = node->getNumOutputChannels (); if (node->producesMidi ()) ++numOuts; int w = 100; int h = 40; w = jmax (w, (jmax (numIns, numOuts) + 1) * 20); const int textWidth = font.getStringWidth (node->getName ()); w = jmax (w, 16 + jmin (textWidth, 300)); if (textWidth > 300) h = 100; setSize (w, h); setName (node->getName ()); setCentreRelative (std::get<0> (node->getPosition ()), std::get<1> (node->getPosition ())); if (numIns != numInputs || numOuts != numOutputs) { numInputs = numIns; numOutputs = numOuts; inputs.clear(); outputs.clear(); midiIn = nullptr; midiOut = nullptr; deleteAllChildren (); for (auto i = 0u; i < node->getNumInputChannels (); ++i) { Pin* const newPin = new Pin (Pin::AudioInput, id, i, *graphComp); inputs.push_back (newPin); addAndMakeVisible (newPin); } for (auto i = 0u; i < node->getNumOutputChannels (); ++i) { Pin* const newPin = new Pin (Pin::AudioOutput, id, i, *graphComp); outputs.push_back (newPin); addAndMakeVisible (newPin); } if (node->acceptsMidi()) { Pin* const midiInPin = new Pin (Pin::MidiInput, id, Pin::midi_num, *graphComp); addAndMakeVisible(midiInPin); } if (node->producesMidi ()) { Pin* const midiOutPin = new Pin (Pin::MidiOutput, id, Pin::midi_num, *graphComp); addAndMakeVisible (midiOutPin); } resized (); } }