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