/// <summary> /// Constructs a new instance based on the parameter type information. /// </summary> /// <param name="parameterInfo">Must not be null.</param> /// <remarks>The <see cref="VstParameterInfo.ParameterManager"/> property is set to <b>this</b> instance.</remarks> public VstParameterManager(VstParameterInfo parameterInfo) { Throw.IfArgumentIsNull(parameterInfo, "parameterInfo"); ParameterInfo = parameterInfo; ParameterInfo.ParameterManager = this; }
/// <summary> /// Constructs a new instance based on the parameter meta info. /// </summary> /// <param name="parameterInfo">Must not be null.</param> public VstParameter(VstParameterInfo parameterInfo) { Throw.IfArgumentIsNull(parameterInfo, "parameterInfo"); Info = parameterInfo; if (Info.ParameterManager != null) Info.ParameterManager.SubscribeTo(this); // set default value Value = Info.DefaultValue; }
/// <summary> /// Attaches the normalization info to the <paramref name="paramInfo"/>. /// </summary> /// <param name="paramInfo">Must not be null.</param> /// <remarks>Making this call enables the Framework to transparently normalize the parameter value, /// untill the host retrieves the parameter properties (info). /// Not making this call will always provide the host with the raw parameter value.</remarks> public static void AttachTo(VstParameterInfo paramInfo) { Throw.IfArgumentIsNull(paramInfo, "paramInfo"); if (paramInfo.NormalizationInfo != null) throw new InvalidOperationException(Resources.VstParameterNormalizationInfo_AlreadyAttached); if (!paramInfo.IsMinMaxIntegerValid) throw new ArgumentException(Resources.VstParameterNormalizationInfo_ParameterInfoInvalid, "paramInfo"); paramInfo.NormalizationInfo = new VstParameterNormalizationInfo(); paramInfo.NormalizationInfo.ScaleFactor = paramInfo.MaxInteger - paramInfo.MinInteger; paramInfo.NormalizationInfo.NullOffset = -paramInfo.MinInteger; }