/// <summary> /// Async loads the instrument data. /// </summary> /// <param name="argResourceDirectory"></param> /// <returns></returns> public IEnumerator AsyncLoadInstrumentsData(string argResourceDirectory) { ///Load the instruments: InstrumentSet set = MusicGenerator.Instance.mInstrumentSet; for (int i = 0; i < MusicGenerator.mMaxInstruments; i++) { string path = MusicFileConfig.GetConfigDirectory(argResourceDirectory) + "/instruments" + i.ToString() + ".txt"; if (File.Exists(path)) { InstrumentData instrumentData = InstrumentData.LoadData(argResourceDirectory, "/instruments" + i.ToString() + ".txt"); if (instrumentData == null) { yield break; } MusicGenerator.Instance.AddInstrument(set); yield return(null); set.mInstruments[set.mInstruments.Count - 1].LoadInstrument(instrumentData); int index = 999; yield return(StartCoroutine(MusicGenerator.Instance.AsyncLoadBaseClips(set.mInstruments[set.mInstruments.Count - 1].mData.InstrumentType, ((x) => { index = x; })))); set.mInstruments[set.mInstruments.Count - 1].InstrumentTypeIndex = index; } } yield return(null); }
public void Init() { TooltipSave save = MusicFileConfig.LoadTooltips(); for (int i = 0; i < save.mTooltips.Count; i++) { mTooltips.Add(save.mTooltips[i].mTooltips[0], save.mTooltips[i].mTooltips[1]); } GameObject tooltip = Instantiate(mTooltipBase, Vector3.zero, Quaternion.identity, mTooltipCanvas.transform); mTooltipBaseObject = tooltip.AddComponent <TooltipObject>(); mTooltipBaseObject.Init(); /// For saving the tooltips: //MusicGenerator.Instance.mConfigurations.SaveTooltips("tooltips", save); }
private static InstrumentSetData UpdateVersion(string pathIN, InstrumentSetData save) { if (save == null || save.mVersion == 0.0f) { string generatorPath = MusicFileConfig.GetConfigDirectory(pathIN) + "/generator.txt"; /// we need to grab these from the generatorSave as the variables belonged to that in the last version if (File.Exists(generatorPath)) { GeneratorSave generatorSave = JsonUtility.FromJson <GeneratorSave>(File.ReadAllText(generatorPath)); save = new InstrumentSetData(); save.Tempo = generatorSave.mTempo; save.RepeatMeasuresNum = generatorSave.mRepeatMeasuresNum; save.mProgressionRate = (eProgressionRate)generatorSave.mProgressionRate; save.mTimeSignature = generatorSave.mTimeSignature; } } return(save); }
/// <summary> /// Updates save type and variables for new generator versions. /// </summary> /// <param name="pathIN"></param> /// <param name="saveOUT"></param> /// <returns></returns> private static ChordProgressionData UpdateVersion(string pathIN, ChordProgressionData saveOUT) { if (saveOUT == null || saveOUT.mVersion == 0.0f) { string generatorPath = MusicFileConfig.GetConfigDirectory(pathIN) + "/generator.txt"; /// we need to grab these from the generatorSave as the variables belonged to that in the last version if (File.Exists(generatorPath)) { GeneratorSave generatorSave = JsonUtility.FromJson <GeneratorSave>(File.ReadAllText(generatorPath)); saveOUT = new ChordProgressionData(); saveOUT.DominantInfluence = generatorSave.mDominantInfluence; saveOUT.mExcludedProgSteps = generatorSave.mExcludedProgSteps.ToArray(); saveOUT.SubdominantInfluence = generatorSave.mSubdominantInfluence; saveOUT.TonicInfluence = generatorSave.mTonicInfluence; saveOUT.TritoneSubInfluence = generatorSave.mTritoneSubInfluence; } } return(saveOUT); }
/// loads from json public static ChordProgressionData LoadData(string pathIN) { string data = ""; string chordProgressionDataPath = MusicFileConfig.GetConfigDirectory(pathIN) + "/ChordProgressionData.txt"; if (File.Exists(chordProgressionDataPath)) { data = File.ReadAllText(chordProgressionDataPath); } ChordProgressionData saveOUT = JsonUtility.FromJson <ChordProgressionData>(data); if (saveOUT == null || saveOUT.mVersion != MusicGenerator.Version) { return(UpdateVersion(pathIN, saveOUT)); } return(saveOUT); }
public IEnumerator Init() { TooltipSave save = null; yield return(StartCoroutine(MusicFileConfig.LoadTooltips((x) => { save = x; for (int i = 0; i < save.mTooltips.Count; i++) { mTooltips.Add(save.mTooltips[i].mTooltips[0], save.mTooltips[i].mTooltips[1]); } GameObject tooltip = Instantiate(mTooltipBase, Vector3.zero, Quaternion.identity, mTooltipCanvas.transform); mTooltipBaseObject = tooltip.AddComponent <TooltipObject>(); mTooltipBaseObject.Init(); }))); yield return(null); /// For saving the tooltips: //MusicGenerator.Instance.mConfigurations.SaveTooltips("tooltips", save); }
/// <summary> /// Loads our instrument set data /// </summary> /// <param name="pathIN"></param> /// <returns></returns> public static InstrumentSetData LoadData(string pathIN) { string data = ""; string instrumentSetDataPath = MusicFileConfig.GetConfigDirectory(pathIN) + "/InstrumentSetData.txt"; if (File.Exists(instrumentSetDataPath)) { data = File.ReadAllText(instrumentSetDataPath); } else { throw new ArgumentNullException("Instrument set configuration does not exist at " + pathIN); } InstrumentSetData saveOUT = JsonUtility.FromJson <InstrumentSetData>(data); if (saveOUT == null || saveOUT.mVersion != MusicGenerator.Version) { return(UpdateVersion(pathIN, saveOUT)); } return(saveOUT); }
/// called on export button press. Exports all config files for this music generator configuration. public void ExportFile() { if (mMusicGenerator.mState < eGeneratorState.editing) { if (mExportFileName.textComponent.text == "") { return; } Debug.Log("exporting configuration " + mExportFileName.textComponent.text); MusicFileConfig.SaveConfiguration(mExportFileName.textComponent.text); if (mGeneratorUIPanel.mPresetFileNames.Contains(mExportFileName.textComponent.text) == false) { mGeneratorUIPanel.mPresetFileNames.Add(mExportFileName.textComponent.text); AddPresetOption(mExportFileName.textComponent.text); } mGeneratorUIPanel.UpdateEffectsSliders(); } else { mMeasureEditor.SaveClip(mExportFileName.textComponent.text); } }
/// loads from json public static InstrumentData LoadData(string pathIN, string fileName) { string configPath = MusicFileConfig.GetConfigDirectory(pathIN) + fileName; string data = ""; if (File.Exists(configPath)) { data = File.ReadAllText(configPath); } else { throw new ArgumentNullException("Instrument configuration does not exist at " + configPath); } InstrumentData saveOUT = JsonUtility.FromJson <InstrumentData>(data); saveOUT.mInstrumentType = saveOUT.mInstrumentType.ToLower(); if (saveOUT.mVersion != MusicGenerator.Version) { return(UpdateVersion(data, pathIN + fileName, saveOUT)); } return(saveOUT); }
/// <summary> /// Loads our generator data /// </summary> /// <param name="pathIN"></param> /// <returns></returns> public static MusicGeneratorData LoadData(string pathIN) { string data = ""; string generatorPath = null; generatorPath = MusicFileConfig.GetConfigDirectory(pathIN) + "/generator.txt"; if (File.Exists(generatorPath)) { data = File.ReadAllText(generatorPath); } else { throw new ArgumentNullException("Generator configuration does not exist at " + pathIN); } MusicGeneratorData saveOUT = JsonUtility.FromJson <MusicGeneratorData>(data); if (saveOUT.mVersion != MusicGenerator.Version) { return(UpdateVersion(data, pathIN, saveOUT)); } return(saveOUT); }
/// <summary> /// Loads our data /// </summary> /// <param name="pathIN"></param> /// <returns></returns> public static IEnumerator LoadData(string pathIN, System.Action <MusicGeneratorData> callback) { string data = null; yield return(MusicHelpers.GetUWR("/MusicGenerator/InstrumentSaves/" + pathIN + "/generator.txt", (x) => { data = x.downloadHandler.text; })); MusicGeneratorData generatorData = JsonUtility.FromJson <MusicGeneratorData>(data); // Version check and update. if (generatorData.mVersion != MusicGenerator.Version) { ChordProgressionData chordSave = new ChordProgressionData(); string persistentDir = MusicFileConfig.GetPersistentSaveDirectory(pathIN); // apply the needed changes for version 1.1. was null before. if (generatorData.mVersion == 0.0f) { string generatorSaveData = null; yield return(MusicHelpers.GetUWR("/MusicGenerator/InstrumentSaves/" + pathIN + "/generator.txt", (x) => { generatorSaveData = x.downloadHandler.text; })); GeneratorSave generatorSave = JsonUtility.FromJson <GeneratorSave>(generatorSaveData); generatorData.mDistortion = new Pair_String_Float("MasterDistortion", generatorSave.mDistortion); generatorData.mCenterFreq = new Pair_String_Float("MasterCenterFrequency", generatorSave.mCenterFreq); generatorData.mOctaveRange = new Pair_String_Float("MasterOctaveRange", generatorSave.mOctaveRange); generatorData.mFreqGain = new Pair_String_Float("MasterFrequencyGain", generatorSave.mFreqGain); generatorData.mLowpassCutoffFreq = new Pair_String_Float("MasterLowpassCutoffFreq", generatorSave.mLowpassCutoffFreq); generatorData.mLowpassResonance = new Pair_String_Float("MasterLowpassResonance", generatorSave.mLowpassResonance); generatorData.mHighpassCutoffFreq = new Pair_String_Float("MasterHighpassCutoffFreq", generatorSave.mHighpassCutoffFreq); generatorData.mHighpassResonance = new Pair_String_Float("MasterHighpassResonance", generatorSave.mHighpassResonance); generatorData.mEchoDelay = new Pair_String_Float("MasterEchoDelay", generatorSave.mEchoDelay); generatorData.mEchoDecay = new Pair_String_Float("MasterEchoDecay", generatorSave.mEchoDecay); generatorData.mEchoDry = new Pair_String_Float("MasterEchoDry", generatorSave.mEchoDry); generatorData.mEchoWet = new Pair_String_Float("MasterEchoWet", generatorSave.mEchoWet); generatorData.mNumEchoChannels = new Pair_String_Float("MasterNumEchoChannels", generatorSave.mNumEchoChannels); generatorData.mReverb = new Pair_String_Float("MasterReverb", generatorSave.mRever); generatorData.mRoomSize = new Pair_String_Float("MasterRoomSize", generatorSave.mRoomSize); generatorData.mReverbDecay = new Pair_String_Float("MasterReverbDecay", generatorSave.mReverbDecay); generatorData.mGroupRate = (eGroupRate)generatorSave.mGroupRate; // We also need to create a chord progression data object: chordSave.mExcludedProgSteps = generatorSave.mExcludedProgSteps.ToArray(); chordSave.SubdominantInfluence = generatorSave.mSubdominantInfluence; chordSave.DominantInfluence = generatorSave.mDominantInfluence; chordSave.TonicInfluence = generatorSave.mTonicInfluence; chordSave.TritoneSubInfluence = generatorSave.mTritoneSubInfluence; } else if (generatorData.mVersion == 1.1f) { string generatorSaveData = null; yield return(MusicHelpers.GetUWR("/MusicGenerator/InstrumentSaves/" + pathIN + "/generator.txt", (x) => { generatorSaveData = x.downloadHandler.text; })); GeneratorSave generatorSave = JsonUtility.FromJson <GeneratorSave>(generatorSaveData); generatorData.mGroupOdds.Clear(); for (int i = 0; i < generatorSave.mGroupOdds.Count; i++) { generatorData.mGroupOdds.Add(generatorSave.mGroupOdds[i]); } } } callback(generatorData); yield return(null); }