public static void ConvertFiles(AirMusicTechTestSetup testSetup)
        {
            var outputDirectory = GetTestDirectory(testSetup);

            Directory.CreateDirectory(outputDirectory);


            foreach (var file in Directory.EnumerateFiles(testSetup.PresetDirectory, "*.tfx",
                                                          SearchOption.AllDirectories))
            {
                Debug.WriteLine($"Converting {file}");

                var parser   = GetTfxByName(testSetup.TfxParserType);
                var fileName = file.Replace(testSetup.PresetDirectory + "\\", "");

                parser.Parse(testSetup.PresetDirectory, fileName);

                var outputFile = Path.Combine(outputDirectory, fileName.Replace(".tfx", ".airtech.chunk"));
                // ReSharper disable once AssignNullToNotNullAttribute
                Directory.CreateDirectory(Path.GetDirectoryName(outputFile));

                var data = parser.GetDataToWrite();
                File.WriteAllBytes(outputFile, data);
            }
        }
        public static void TestLoadInPlugin(AirMusicTechTestSetup testSetup, List <string> files)
        {
            var serviceLocator = ServiceLocator.Default;

            FrontendInitializer.RegisterTypes(serviceLocator);
            FrontendInitializer.Initialize(serviceLocator);

            var remoteVstService = serviceLocator.ResolveType <RemoteVstService>();

            var plugin = new Plugin {
                PluginLocation = new PluginLocation {
                    DllPath = testSetup.PluginDll
                }
            };

            var pluginInstance = remoteVstService.GetInteractivePluginInstance(plugin, false);

            pluginInstance.LoadPlugin().Wait();

            foreach (var file in files)
            {
                Debug.WriteLine($"Loading {file} into plugin");
                pluginInstance.SetChunk(File.ReadAllBytes(file), false);
            }
        }
        public static string GetTestDirectory(AirMusicTechTestSetup testSetup)
        {
            var pluginName = Path.GetFileNameWithoutExtension(testSetup.PluginDll);

            return(Path.Combine(
                       Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments),
                       $@"PresetMagician\ScratchPad\AirMusicTech\{pluginName}\"));
        }
        public static void TestLoadInPlugin(AirMusicTechTestSetup testSetup)
        {
            var directory = GetTestDirectory(testSetup);
            var files     = Directory.EnumerateFiles(directory, "*.airtech.chunk", SearchOption.AllDirectories).ToList();

            if (files.Count == 0)
            {
                throw new Exception("No presets found");
            }
            TestLoadInPlugin(testSetup, files.ToList());
        }
        public static (byte[], int) GetChunkFromPlugin(AirMusicTechTestSetup testSetup)
        {
            var serviceLocator = ServiceLocator.Default;

            FrontendInitializer.RegisterTypes(serviceLocator);
            FrontendInitializer.Initialize(serviceLocator);

            var remoteVstService = serviceLocator.ResolveType <RemoteVstService>();

            var plugin = new Plugin {
                PluginLocation = new PluginLocation {
                    DllPath = testSetup.PluginDll
                }
            };

            var pluginInstance = remoteVstService.GetInteractivePluginInstance(plugin, false);

            pluginInstance.LoadPlugin().Wait();


            return(pluginInstance.GetChunk(false), pluginInstance.Plugin.VstPluginId);
        }