Exemplo n.º 1
0
        /// <summary>
        ///     Converts a sync length value to a VST specific percentage (based on the parameter max/min milliseconds)
        /// </summary>
        /// <param name="syncLength">Length of the delay in milliseconds.</param>
        /// <param name="parameter">The parameter.</param>
        /// <returns>
        ///     The VST specific percentage
        /// </returns>
        private static float GetVstSyncValue(double syncLength, VstPlugin.VstPluginParameter parameter)
        {
            var minMs = (double)parameter.MinSyncMilliSeconds;
            var maxMs = (double)parameter.MaxSyncMilliSeconds;

            if (minMs > maxMs)
            {
                minMs = (double)parameter.MaxSyncMilliSeconds;
                maxMs = (double)parameter.MinSyncMilliSeconds;
            }


            if (syncLength < minMs)
            {
                syncLength = minMs;
            }
            if (syncLength > maxMs)
            {
                syncLength = maxMs;
            }

            return(parameter.SyncUsingLogScale
                ? (float)(Math.Log10(syncLength / minMs) / Math.Log10(maxMs / minMs))
                : (float)((syncLength - minMs) / (maxMs - minMs)));
        }
Exemplo n.º 2
0
        private static void LoadPluginParameters(VstPlugin plugin)
        {
            plugin.Parameters = new List <VstPlugin.VstPluginParameter>();

            if (plugin.Name.Contains("mania"))
            {
                Console.WriteLine("mani");
            }

            var parameterCount = BassVst.BASS_VST_GetParamCount(plugin.Id);

            for (var i = 0; i < parameterCount; i++)
            {
                var parameterInfo = BassVst.BASS_VST_GetParamInfo(plugin.Id, i);

                var name = parameterInfo.name.Trim();
                if (string.IsNullOrWhiteSpace(name) || name.ToLower().StartsWith("unused"))
                {
                    continue;
                }

                var parameter = new VstPlugin.VstPluginParameter
                {
                    Id   = i,
                    Name = parameterInfo.name
                };

                LoadPresetParameterValues(plugin, parameter);

                plugin.Parameters.Add(parameter);
            }
        }
Exemplo n.º 3
0
        private static void LoadPresetParameterValues(VstPlugin plugin, VstPlugin.VstPluginParameter parameter)
        {
            var presetParameters = new[]
            {
                new
                {
                    PluginName          = "Tape Delay",
                    ParameterName       = "Time",
                    SyncToBpm           = true,
                    MinSyncMilliSeconds = 60M,
                    MaxSyncMilliSeconds = 1500M,
                    SyncUsingLogScale   = false,
                    VariableSyncNotes   = true,
                    DefaultSyncNotes    = (1M / 4M)
                },
                new
                {
                    PluginName          = "Classic Delay",
                    ParameterName       = "Time",
                    SyncToBpm           = true,
                    MinSyncMilliSeconds = 50M,
                    MaxSyncMilliSeconds = 5000M,
                    SyncUsingLogScale   = true,
                    VariableSyncNotes   = true,
                    DefaultSyncNotes    = (1M / 4M)
                },
                new
                {
                    PluginName          = "Echomania v1_2",
                    ParameterName       = "coarse/n",
                    SyncToBpm           = true,
                    MinSyncMilliSeconds = 20M,
                    MaxSyncMilliSeconds = 2000M,
                    SyncUsingLogScale   = false,
                    VariableSyncNotes   = true,
                    DefaultSyncNotes    = (1M / 4M)
                },
                new
                {
                    PluginName          = "Outerspace X86",
                    ParameterName       = "Repeat R",
                    SyncToBpm           = true,
                    MinSyncMilliSeconds = 500M,
                    MaxSyncMilliSeconds = 175M,
                    SyncUsingLogScale   = false,
                    VariableSyncNotes   = true,
                    DefaultSyncNotes    = (1M / 4M)
                }
            }.ToList();

            var presetParameter = presetParameters
                                  .FirstOrDefault(p => string.Equals(plugin.Name, p.PluginName, StringComparison.CurrentCultureIgnoreCase)
                                                  &&
                                                  string.Equals(parameter.Name, p.ParameterName,
                                                                StringComparison.CurrentCultureIgnoreCase));

            if (presetParameter == null)
            {
                return;
            }

            parameter.SyncToBpm           = presetParameter.SyncToBpm;
            parameter.MinSyncMilliSeconds = presetParameter.MinSyncMilliSeconds;
            parameter.MaxSyncMilliSeconds = presetParameter.MaxSyncMilliSeconds;
            parameter.SyncUsingLogScale   = presetParameter.SyncUsingLogScale;
            parameter.VariableSyncNotes   = presetParameter.VariableSyncNotes;
            parameter.SyncNotes           = presetParameter.DefaultSyncNotes;
        }