Example #1
0
        /// <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);
        }
Example #2
0
        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);
 }
Example #4
0
 /// <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);
 }
Example #5
0
        /// 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);
        }
Example #6
0
        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);
        }
Example #8
0
        /// 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);
            }
        }
Example #9
0
        /// 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);
        }