PresetGroup::PresetGroup() : m_errorString(tr("unknown error")), m_elCategoryName(""), m_elInstrumentName(""), m_elClef(0), m_elTranspose(0), m_elLowAm(0), m_elHighAm(0), m_elLowPro(0), m_elHighPro(0), m_lastCategory( -1), m_currentCategory( -1), m_lastInstrument( -1), m_currentInstrument( -1), m_name(false), m_clef(false), m_transpose(false), m_amateur(false), m_pro(false) { // NOTE: the following code was simplified to remove three layers of trying // different ways to find presets.xml which were left over from the old // translation mechanism of having multiple presets-XX.xml to choose from. // Once cleaned of this language property, all statements distilled down to // the same statement, so I removed the redundant code. ResourceFinder rf; QString presetFileName = rf.getResourcePath ("presets", QString("presets.xml")); if (presetFileName == "" || !QFileInfo(presetFileName).isReadable()) { RG_DEBUG << "Failed to open " << presetFileName; throw PresetFileReadFailed (qstrtostr(tr("Can't open preset file %1").arg(presetFileName))); } QFile presetFile(presetFileName); QXmlInputSource source(&presetFile); QXmlSimpleReader reader; reader.setContentHandler(this); reader.setErrorHandler(this); bool ok = reader.parse(source); presetFile.close(); if (!ok) { throw PresetFileReadFailed(qstrtostr(m_errorString)); } }
void DrumMachine::setDrumPreset(const char * const presetFilename) { // std::cout << "MPD: CPP: DrumMachine::setDrumPreset: setting drum preset to: " << presetFilename << std::endl; File presetFile(presetFilename); File presetDir = presetFile.getParentDirectory(); var preset = JSON::parse(presetFile); // std::cout << "MPD: CPP: DrumMachine::setDrumPreset: preset json: " << preset.toString() << std::endl; auto& obj = *preset.getDynamicObject(); // std::cout << "MPD: CPP: DrumMachine::setDrumPreset: preset name: " << obj.getProperty("preset").toString() // << "; created by: " << obj.getProperty("preset").toString() << std::endl; var voices = obj.getProperty("voices"); BigInteger allNotes; allNotes.setRange(0, 128, true); for (int i = 0; i < voices.size(); i++) { var voice = voices[i]; auto& obj = *voice.getDynamicObject(); String name = obj.getProperty("voice"); // std::cout << "MPD: CPP: DrumMachine::setDrumPreset: adding voice: " << name << std::endl; var samples = obj.getProperty("samples"); { File sample = presetDir.getChildFile(samples[0].toString()); // std::cout << "MPD: CPP: DrumMachine::setDrumPreset: adding sample: " // << sample.getFullPathName() << std::endl; setDrumSound(name, sample); } // MPD: for now we only use the first sample, but actually we want to load these so the user can // select different sounds for each "voice". // for (int j = 0; j < samples.size(); j++) { // File sample = presetDir.getChildFile(samples[j].toString()); // std::cout << "MPD: CPP: AudioEngineImpl::setDrumPreset: adding sample: " // << sample.getFullPathName() << std::endl; // // } } }
void MagicTowerLoader::loadPreset(const QString& presetFileName) { QFile presetFile(presetFileName); presetFile.open(QFile::ReadOnly); QTextStream presetFileStream(&presetFile); QString className; QMap<QString, QString> parameters; for(;;) { QString str = presetFileStream.readLine(); str = str.trimmed(); if(str.startsWith("#")) continue; if(presetFileStream.atEnd() || (str.startsWith("[")&&str.endsWith("]"))) { if(className.size()>0) { if(className == "GeneralItemHandler") { addPresetGeneralItemHandler(parameters); } else if(className == "MagicTowerPassiveObject") { addPresetPassiveObject(parameters); } else if(className == "NPCDialogData") { addPresetNPCDialogData(parameters); } else if(className == "MonsterHandler") { addPresetMonsterHandler(parameters); } else if(className == "NPCHandler") { addPresetNPCHandler(parameters); } else if(className == "TransportHandler") { addPresetTransporterHandler(parameters); } else if(className == "MagicTowerCharacter") { addPresetCharacter(parameters); } parameters.clear(); } str[0] = QChar(' '); str[str.size()-1] = QChar(' '); str = str.trimmed(); className = str; } else if(str.size()>0&&(!str.startsWith("#"))) { QStringList lineParts = str.split("="); if(lineParts.size()==2) { parameters[lineParts[0].trimmed()] = lineParts[1].trimmed(); } } if(presetFileStream.atEnd()) break; } presetFile.close(); }
void LoopMachine::setPreset(const char* const presetFilename) { // std::cout << "MPD: CPP: LoopMachine::setPreset: setting looper preset to: " << presetFilename << std::endl; File presetFile(presetFilename); File presetDir = presetFile.getParentDirectory(); var preset = JSON::parse(presetFile); // std::cout << "MPD: CPP: LoopMachine::setPreset: preset json: " << preset.toString() << std::endl; auto& obj = *preset.getDynamicObject(); jassert(&obj != nullptr); // std::cout << "MPD: CPP: LoopMachine::setPreset: preset name: " << obj.getProperty("preset").toString() // << "; created by: " << obj.getProperty("createdBy").toString() << ", orig bpm: " // << obj.getProperty("origBpm").toString() << std::endl; fixedBpmTransport.setBpm(obj.getProperty("origBpm")); var groups = obj.getProperty("groups"); for (int i = 0; i < groups.size(); i++) { var group = groups[i]; auto& obj = *group.getDynamicObject(); String groupName = obj.getProperty("name"); // std::cout << "MPD: CPP: LoopMachine::setPreset: adding loops for " << groupName << std::endl; var loops = obj.getProperty("loops"); for (int j = 0; j < loops.size(); j++) { var sampleInfoObj = loops[j]; auto& sampleInfo = *sampleInfoObj.getDynamicObject(); float gain = sampleInfo.getProperty("gain"); String typeStr = sampleInfo.getProperty("type"); LoopType type = typeStr == "one-shot" ? LoopType::ONE_SHOT : LoopType::LOOP; int length = type == LoopType::LOOP ? (int) sampleInfo.getProperty("length") : -1; File sample = presetDir.getChildFile(sampleInfo.getProperty("file").toString()); // std::cout << "MPD: CPP: LoopMachine::setPreset: adding sample: " // << sample.getFullPathName() << std::endl; addLoop(groupName, sample, gain, type, length); } } var scenes = obj.getProperty("scenes"); for (int i = 0; i < scenes.size(); i++) { var scene = scenes[i]; auto& obj = *scene.getDynamicObject(); String name = obj.getProperty("name"); int sceneIx = addScene(name); var loops = obj.getProperty("loops"); for (int j = 0; j < loops.size(); j++) { var obj2 = loops[j]; auto& info = *obj2.getDynamicObject(); String group = info.getProperty("group"); int groupIx = groupNameToIx[group]; int loopIx = info.getProperty("loopIx"); addSceneLoop(sceneIx, groupIx, loopIx); } } prepareToPlay(expectedBufferSize, audioEngine.getTransport().getSampleRate()); }