MLProc::err MLMultiContainer::buildProc(juce::XmlElement* parent) { err e = OK; const int copies = (int)mCopies.size(); const MLSymbol className(parent->getStringAttribute("class").toUTF8()); const MLSymbol procName(parent->getStringAttribute("name").toUTF8()); // debug() << "MLMultiContainer::buildProc (class=" << className << ", name=" << procName << ")\n"; for(int i=0; i<copies; i++) { // add the specified proc to all subcontainers. MLProcContainer* pCopy = getCopyAsContainer(i); if(pCopy != nullptr) { e = pCopy->addProc(className, procName); if (e == MLProc::OK) { MLPath procPath(procName); pCopy->setProcParams(procPath, parent); pCopy->setCopyIndex(i + 1); MLProcPtr p = pCopy->getProc(procPath); if(p) { p->setup(); if (p->isContainer()) { MLProcContainer* pc = static_cast<MLProcContainer*>(&(*p)); pc->buildGraph(parent); } } else { debug() << "MLMultiContainer::buildProc: getProc failed for new proc!\n"; } } } else { debug() << "MLMultiContainer: null copy in buildProc ()!\n"; } } return e; }