/// <summary>
        /// Saves our data
        /// </summary>
        /// <param name="pathIN"></param>
        /// <param name="data"></param>
        public static void SaveData(string pathIN, MusicGeneratorData data)
        {
            data.mVersion = MusicGenerator.Version;
            string save = JsonUtility.ToJson(data);

            File.WriteAllText(pathIN + "/generator.txt", save);
        }
示例#2
0
        /// <summary>
        /// Loads data for the Music Generator.
        /// </summary>
        /// <param name="folderIN"></param>
        private IEnumerator LoadGeneratorData(string argDirectory)
        {
            MusicGeneratorData data = null;

            yield return(StartCoroutine(MusicGeneratorData.LoadData(argDirectory, (x) => { data = x; })));

            MusicGenerator.Instance.LoadGeneratorSave(data);
            yield return(null);
        }
示例#3
0
        /// <summary>
        /// Loads data for the Music Generator.
        /// </summary>
        /// <param name="folderIN"></param>
        private static void LoadGeneratorData(string folderIN)
        {
            MusicGeneratorData data = MusicGeneratorData.LoadData(folderIN);

            if (data == null)
            {
                throw new ArgumentNullException("Generator configuration does not exist at " + folderIN);
            }
            MusicGenerator.Instance.LoadGeneratorSave(data);
        }
示例#4
0
        /// <summary>
        /// saves a global configuration: instruments, instrument and global settings.
        /// </summary>
        /// <param name="argFileName"></param>
        public static void SaveConfiguration(string argFileName)
        {
            string directory = GetPersistentSaveDirectory(argFileName);

            MusicGeneratorData.SaveData(directory, MusicGenerator.Instance.mGeneratorData);
            InstrumentSetData.SaveData(directory, MusicGenerator.Instance.mInstrumentSet.mData);
            ChordProgressionData.SaveData(directory, MusicGenerator.Instance.mChordProgressions.mData);
            SaveInstrumentData(directory);
            UnityEngine.Debug.Log(directory + " was successfully written to file");
        }
        private static MusicGeneratorData UpdateVersion(string data, string pathIN, MusicGeneratorData save)
        {
            GeneratorSave        generatorSave = JsonUtility.FromJson <GeneratorSave>(data);
            ChordProgressionData chordSave     = new ChordProgressionData();

            /// apply the needed changes for version 1.1. was null before.
            if (save.mVersion == 0.0f)
            {
                save.mDistortion         = new Pair_String_Float("MasterDistortion", generatorSave.mDistortion);
                save.mCenterFreq         = new Pair_String_Float("MasterCenterFrequency", generatorSave.mCenterFreq);
                save.mOctaveRange        = new Pair_String_Float("MasterOctaveRange", generatorSave.mOctaveRange);
                save.mFreqGain           = new Pair_String_Float("MasterFrequencyGain", generatorSave.mFreqGain);
                save.mLowpassCutoffFreq  = new Pair_String_Float("MasterLowpassCutoffFreq", generatorSave.mLowpassCutoffFreq);
                save.mLowpassResonance   = new Pair_String_Float("MasterLowpassResonance", generatorSave.mLowpassResonance);
                save.mHighpassCutoffFreq = new Pair_String_Float("MasterHighpassCutoffFreq", generatorSave.mHighpassCutoffFreq);
                save.mHighpassResonance  = new Pair_String_Float("MasterHighpassResonance", generatorSave.mHighpassResonance);
                save.mEchoDelay          = new Pair_String_Float("MasterEchoDelay", generatorSave.mEchoDelay);
                save.mEchoDecay          = new Pair_String_Float("MasterEchoDecay", generatorSave.mEchoDecay);
                save.mEchoDry            = new Pair_String_Float("MasterEchoDry", generatorSave.mEchoDry);
                save.mEchoWet            = new Pair_String_Float("MasterEchoWet", generatorSave.mEchoWet);
                save.mNumEchoChannels    = new Pair_String_Float("MasterNumEchoChannels", generatorSave.mNumEchoChannels);
                save.mReverb             = new Pair_String_Float("MasterReverb", generatorSave.mRever);
                save.mRoomSize           = new Pair_String_Float("MasterRoomSize", generatorSave.mRoomSize);
                save.mReverbDecay        = new Pair_String_Float("MasterReverbDecay", generatorSave.mReverbDecay);

                save.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;
            }

            return(save);
        }
        /// <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);
        }