public EffectControl(AudioEffect ae) { InitializeComponent(); lblEffectName.Text = ae.Name; Effect = ae; int i=0; foreach (AudioEffectFactor Factor in Effect.Factors) { /*TrackBar tb = new TrackBar(); tb.Tag = Factor; tb.Location = new System.Drawing.Point(55+i*45, 3); tb.Orientation = System.Windows.Forms.Orientation.Vertical; tb.Size = new System.Drawing.Size(45, 65); tb.TickStyle = System.Windows.Forms.TickStyle.Both; tb.Minimum = 0; tb.Maximum = 1000; tb.SmallChange = 50; tb.LargeChange = 100; tb.TickFrequency = 50; tb.Value = FactorToTrackBar(tb); tb.ValueChanged += new EventHandler(tb_ValueChanged);*/ //panelEffect.Controls.Add(tb); Knob bn = new Knob(); bn.Tag = Factor; bn.Location = new System.Drawing.Point(75 + (i/2) * 45, 3+(i%2)*50); bn.Size = new System.Drawing.Size(32, 32); bn.Value = FactorToKnob(bn); bn.ValueChanged += new EventHandler(bn_ValueChanged); bn.ToolTipText = Factor.Description; panelEffect.Controls.Add(bn); Panel pan = new Panel(); pan.BackColor = System.Drawing.Color.SteelBlue; pan.Location = new System.Drawing.Point(110+(i/2)*45, 5); pan.Size = new System.Drawing.Size(1, 90); panelEffect.Controls.Add(pan); Label lblV = new Label(); lblV.Location = new System.Drawing.Point(65 + (i/2) * 45, 35 + (i % 2) * 50); lblV.Size = new System.Drawing.Size(45, 15); lblV.Font = new Font(lblV.Font.FontFamily, 7.0f); lblV.Text = Factor.Value.ToString("0.00"); lblV.Tag = bn; panelEffect.Controls.Add(lblV); /*Label lbl = new Label(); lbl.Location = new System.Drawing.Point(65 + i * 45, 55); lbl.Size = new System.Drawing.Size(45, 50); lbl.Font = new Font(lbl.Font.FontFamily, 7.0f); lbl.Text = Factor.Description; panelEffect.Controls.Add(lbl);*/ i++; } }
float KnobToFactor(Knob kn) { float value = 0; if (kn.Value == kn.Maximum) { value = ((AudioEffectFactor)kn.Tag).Maximum; } else { value = ((AudioEffectFactor)kn.Tag).Minimum + (kn.Value * (((AudioEffectFactor)kn.Tag).Maximum - ((AudioEffectFactor)kn.Tag).Minimum) / (float)kn.Maximum); value -= value % ((AudioEffectFactor)kn.Tag).Increment; } return value; }
int FactorToKnob(Knob kn) { return (int)(((((AudioEffectFactor)kn.Tag).Value - ((AudioEffectFactor)kn.Tag).Minimum) / (((AudioEffectFactor)kn.Tag).Maximum - ((AudioEffectFactor)kn.Tag).Minimum)) * (float)kn.Maximum); }