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