using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace QuikDawEditor.EditingClasses; public class PanStrategies { //private StereoSamplePair multipliers; //internal float leftMultiplier, rightMultiplier, m_pan; //internal IPanStrategy m_panStrategy; //public IPanStrategy PanStrategy //{ // get { return m_panStrategy; } // set // { // m_panStrategy = value; // UpdateMultipliers(); // } //} //private void UpdateMultipliers() //{ // multipliers = m_panStrategy.GetMultipliers(Pan); // leftMultiplier = multipliers.Left; // rightMultiplier = multipliers.Right; //} //public struct StereoSamplePair //{ // public float Left { get { return m_Left; } set { m_Left = value; } } // private float m_Left; // public float Right { get { return m_Right; } set { m_Right = value; } } // private float m_Right; //} //public interface IPanStrategy //{ // StereoSamplePair GetMultipliers(float pan); //} //public class SinPanStrategy : IPanStrategy //{ // private const float HalfPi = 1.570796F; // public StereoSamplePair GetMultipliers(float pan) // { // // -1..+1 -> 1..0 // float normPan = (-pan + 1) / 2; // float leftChannel = Convert.ToSingle(Math.Sin(normPan * HalfPi)); // float rightChannel = Convert.ToSingle(Math.Cos(normPan * HalfPi)); // return new StereoSamplePair() { Left = leftChannel, Right = rightChannel }; // } //} }