Example #1
0
        private void MigrateData(XNode source, XNode dest, PresetParserMetadata preset)
        {
            var dataNode =
                $"/package/archives/archive[@client_id='{PresetSectionName}-preset']/section[@id='ParameterValues']/entry";

            var nodes = source.XPathSelectElements(dataNode);

            var dataNode2 =
                $"/package/archives/archive[@client_id='{PresetSectionName}-state']/section[@id='Slot0']";
            var insertNode = dest.XPathSelectElement(dataNode2);

            insertNode.Elements().Remove();
            insertNode.Add(nodes);

            var presetNameNode = new XElement("entry");

            presetNameNode.SetAttributeValue("id", "Preset name");
            presetNameNode.SetAttributeValue("type", "string");

            var bank = RootBank.CreateRecursive(preset.BankPath);

            presetNameNode.SetAttributeValue("value", bank.BankName + "/" + preset.PresetName);

            insertNode.Add(presetNameNode);
        }
Example #2
0
        protected async Task <int> H2PScanBanks(string dataDirectoryName, string productName, bool userPresets,
                                                bool persist)
        {
            Logger.Debug(
                $"Begin H2PScanBanks with dataDirectoryName {dataDirectoryName} product name {productName} and userPresets {userPresets}");

            var rootDirectory = GetPresetDirectory(dataDirectoryName, productName, userPresets);

            Logger.Debug($"Parsing PresetDirectory {rootDirectory}");

            var directoryInfo = new DirectoryInfo(rootDirectory);

            if (!directoryInfo.Exists)
            {
                Logger.Debug($"Directory {rootDirectory} does not exist");
                return(0);
            }

            var bankName = BankNameFactory;

            if (userPresets)
            {
                bankName = BankNameUser;
            }

            var bank  = RootBank.CreateRecursive(bankName);
            var count = await H2PScanBank(bank, directoryInfo, persist);

            Logger.Debug("End H2PScanBanks");

            return(count);
        }
Example #3
0
        public override async Task DoScan()
        {
            await ProcessPresetDirectory(GetUserBankPath(UserBankPath), RootBank.CreateRecursive(BankNameUser));
            await ProcessD16PkgArchive(GetFactoryBankPath(FactoryBankPath), RootBank.CreateRecursive(BankNameFactory));

            await base.DoScan();
        }
Example #4
0
        public override int GetNumPresets()
        {
            var count = 0;

            count += ProcessPresetDirectory(GetUserBankPath(UserBankPath), RootBank.CreateRecursive(BankNameUser),
                                            false).GetAwaiter().GetResult();
            count += ProcessD16PkgArchive(GetFactoryBankPath(FactoryBankPath),
                                          RootBank.CreateRecursive(BankNameFactory), false).GetAwaiter().GetResult();

            return(base.GetNumPresets() + count);
        }
Example #5
0
        protected override List <(string directory, PresetBank presetBank)> GetParseDirectories()
        {
            var dirs = new List <(string directory, PresetBank presetBank)>();

            foreach (var dir in Directory.EnumerateDirectories(GetExpansionsDirectory()))
            {
                var presetDirectory = Path.Combine(dir, "Presets");

                if (Directory.Exists(presetDirectory))
                {
                    var bank = RootBank.CreateRecursive(Path.GetFileName(dir));
                    dirs.Add((presetDirectory, bank));
                }
            }

            return(dirs);
        }
        private async Task ParseAdditionalBanks()
        {
            await PluginInstance.LoadPlugin();

            DeterminateVstPresetSaveMode();

            foreach (var bank in AdditionalBankFiles)
            {
                var result = LoadFxp(bank.Path);

                if (result == VstUtils.LoadFxpResult.Error)
                {
                    continue;
                }

                var presetBank = RootBank.CreateRecursive(bank.BankName);

                // ReSharper disable once SwitchStatementMissingSomeCases
                switch (result)
                {
                case VstUtils.LoadFxpResult.Program:
                    await GetPresets(presetBank, 0, 1, bank.Path);

                    break;

                case VstUtils.LoadFxpResult.Bank:
                {
                    var ranges = bank.GetProgramRanges();

                    if (ranges.Count == 0)
                    {
                        await GetPresets(presetBank, 0, PluginInstance.Plugin.PluginInfo.ProgramCount, bank.Path);
                    }
                    else
                    {
                        foreach (var(start, length) in ranges)
                        {
                            await GetPresets(presetBank, start - 1, length, bank.Path);
                        }
                    }

                    break;
                }
                }
            }
        }
Example #7
0
        protected override List <(string directory, PresetBank presetBank)> GetParseDirectories()
        {
            var dirs = new List <(string directory, PresetBank presetBank)>();

            var settingsFile = GetSettingsFile();

            if (!File.Exists(settingsFile))
            {
                return(new List <(string directory, PresetBank presetBank)>());
            }

            var settingsXml  = XDocument.Load(settingsFile);
            var banksElement = settingsXml.Element("FogConvolver_GENERAL_SETTINGS").Element("BANKS");

            var pathsAttribute = banksElement.Attribute("Paths");

            if (pathsAttribute == null)
            {
                Logger.Error($"The settings file {settingsFile} does not contain bank paths.");
                return(dirs);
            }

            var paths = pathsAttribute.Value.Split('|');

            foreach (var path in paths)
            {
                if (!Directory.Exists(path))
                {
                    continue;
                }

                var bankName = path.Split('\\').Last();

                var factoryBank = RootBank.CreateRecursive(bankName);

                dirs.Add((path, factoryBank));
            }

            return(dirs);
        }
Example #8
0
        public async Task <int> ScanPresetXmlFile(string filename, string rootTag, bool persist = true)
        {
            var fullFilename = Path.Combine(ParseDirectory, filename);

            if (!File.Exists(fullFilename))
            {
                fullFilename = Path.Combine(FallbackParseDirectory, filename);
            }

            if (!File.Exists(fullFilename))
            {
                Logger.Error(
                    $"Error: Could not find {filename} in neither {ParseDirectory} nor {FallbackParseDirectory}");
                return(0);
            }

            var rootDocument = XDocument.Parse(File.ReadAllText(fullFilename));

            var rootElement = rootDocument.Element(rootTag);

            return(await ScanPresetXml(rootElement, fullFilename, RootBank.CreateRecursive("Factory"), persist));
        }
Example #9
0
 public override int GetNumPresets()
 {
     return(base.GetNumPresets() + ProcessPresetDirectory(GetUserBankPath(UserBankPath),
                                                          RootBank.CreateRecursive(BankNameUser),
                                                          false).GetAwaiter().GetResult());
 }
 protected override PresetBank GetRootBank()
 {
     return(RootBank.CreateRecursive(BankNameFactory));
 }
Example #11
0
        public override async Task DoScan()
        {
            InitDb();
            var instruments = GetInstrumentNames();

            var instrumentList = GetInstruments(instruments);
            var allPresets     = GetPresets(instrumentList);

            var presetsByPacks = (from p in allPresets
                                  group p by p.Pack.name
                                  into g
                                  select new { Pack = g, Presets = g.ToList() }).ToList();

            foreach (var pack in presetsByPacks)
            {
                var presetBank = RootBank.CreateRecursive(pack.Pack.Key);

                foreach (var presetData in pack.Presets)
                {
                    var preset = new PresetParserMetadata
                    {
                        BankPath   = presetBank.BankPath,
                        PresetName = presetData.Preset.name,
                        Author     = presetData.SoundDesigner.name,
                        Comment    = presetData.Preset.comment,
                        Plugin     = PluginInstance.Plugin
                    };

                    preset.Types.Add(new Type {
                        TypeName = presetData.Type.name
                    });

                    var characteristics      = GetPresetCharacteristics(presetData.Preset);
                    var characteristicsNames = (from c in characteristics select c.name).ToList();

                    foreach (var name in characteristicsNames)
                    {
                        preset.Characteristics.Add(new Characteristic {
                            CharacteristicName = name
                        });
                    }

                    var fileName = presetData.Preset.file_path.Replace('/', '\\');
                    var content  = File.ReadAllBytes(fileName);
                    var ms       = new MemoryStream();
                    ms.Write(LittleEndian.GetBytes(content.Length), 0, 4);
                    ms.WriteByte(0);
                    ms.WriteByte(0);
                    ms.WriteByte(0);
                    ms.WriteByte(0);
                    ms.Write(LittleEndian.GetBytes(content.Length), 0, 4);
                    ms.WriteByte(0);
                    ms.WriteByte(0);
                    ms.WriteByte(0);
                    ms.WriteByte(0);
                    ms.Write(content, 0, content.Length);
                    ms.Write(content, 0, content.Length);

                    preset.SourceFile = fileName;
                    await DataPersistence.PersistPreset(preset, ms.ToArray());
                }
            }

            _db.Close();
            _db = null;

            await base.DoScan();
        }
        protected override async Task GetFactoryPresets()
        {
            var factoryBank = RootBank.CreateRecursive(BankNameFactory);

            await GetPresets(factoryBank, 0, PluginInstance.Plugin.PluginInfo.ProgramCount, "Builtin");
        }