static ChannelMatrix() { ChannelMatrix c = new ChannelMatrix((ChannelMask)0x3, (ChannelMask)0x3F); float[,] m = new float[,] { { 0.314f, 0f , 0.222f, 0.031f, 0.268f, 0.164f }, //left - input { 0f , 0.314f, 0.222f, 0.031f, 0.164f, 0.268f } //right - output }; c.SetMatrix(m); TwoToSixChannels = c; StereoToMonoMatrix = new ChannelMatrix(ChannelMask.SpeakerFrontCenter, ChannelMask.SpeakerFrontLeft | ChannelMask.SpeakerFrontRight); StereoToMonoMatrix[0, 0].Value = 0.5f; StereoToMonoMatrix[0, 1].Value = 0.5f; MonoToStereoMatrix = new ChannelMatrix(ChannelMask.SpeakerFrontLeft | ChannelMask.SpeakerFrontRight, ChannelMask.SpeakerFrontCenter); MonoToStereoMatrix[0, 0].Value = 1f; MonoToStereoMatrix[1, 0].Value = 1f; }
static ChannelMatrix() { ChannelMatrix c = new ChannelMatrix((ChannelMask)0x3, (ChannelMask)0x3F); float[,] m = new float[, ] { { 0.314f, 0f, 0.222f, 0.031f, 0.268f, 0.164f }, //left - input { 0f, 0.314f, 0.222f, 0.031f, 0.164f, 0.268f } //right - output }; c.SetMatrix(m); TwoToSixChannels = c; StereoToMonoMatrix = new ChannelMatrix(ChannelMask.SpeakerFrontCenter, ChannelMask.SpeakerFrontLeft | ChannelMask.SpeakerFrontRight); StereoToMonoMatrix[0, 0].Value = 0.5f; StereoToMonoMatrix[0, 1].Value = 0.5f; MonoToStereoMatrix = new ChannelMatrix(ChannelMask.SpeakerFrontLeft | ChannelMask.SpeakerFrontRight, ChannelMask.SpeakerFrontCenter); MonoToStereoMatrix[0, 0].Value = 1f; MonoToStereoMatrix[1, 0].Value = 1f; }
static ChannelMatrix() { StereoToFiveDotOneSurroundWithRear = new ChannelMatrix( ChannelMask.SpeakerFrontLeft | ChannelMask.SpeakerFrontRight, ChannelMask.SpeakerFrontLeft | ChannelMask.SpeakerFrontRight | ChannelMask.SpeakerFrontCenter | ChannelMask.SpeakerLowFrequency | ChannelMask.SpeakerBackLeft | ChannelMask.SpeakerBackRight); StereoToFiveDotOneSurroundWithRear.SetMatrix( new[, ] { { 0.314f, 0f, 0.222f, 0.031f, 0.268f, 0.164f }, //left - input { 0f, 0.314f, 0.222f, 0.031f, 0.164f, 0.268f } //right - output }); FiveDotOneSurroundWithRearToStereo = StereoToFiveDotOneSurroundWithRear.Flip(); StereoToFiveDotOneSurroundWithSide = new ChannelMatrix( ChannelMask.SpeakerFrontLeft | ChannelMask.SpeakerFrontRight, ChannelMask.SpeakerFrontLeft | ChannelMask.SpeakerFrontRight | ChannelMask.SpeakerFrontCenter | ChannelMask.SpeakerLowFrequency | ChannelMask.SpeakerSideLeft | ChannelMask.SpeakerSideRight); StereoToFiveDotOneSurroundWithSide.SetMatrix( new[, ] { { 0.320f, 0f, 0.226f, 0.032f, 0.292f, 0.130f }, { 0f, 0.320f, 0.226f, 0.032f, 0.130f, 0.292f } }); FiveDotOneSurroundWithSideToStereo = StereoToFiveDotOneSurroundWithSide.Flip(); StereoToSevenDotOneSurround = new ChannelMatrix( ChannelMask.SpeakerFrontLeft | ChannelMask.SpeakerFrontRight, ChannelMask.SpeakerFrontLeft | ChannelMask.SpeakerFrontRight | ChannelMask.SpeakerFrontCenter | ChannelMask.SpeakerLowFrequency | ChannelMask.SpeakerSideLeft | ChannelMask.SpeakerSideRight | ChannelMask.SpeakerBackLeft | ChannelMask.SpeakerBackRight); StereoToSevenDotOneSurround.SetMatrix( new[, ] { { 0.222f, 0f, 0.157f, 0.022f, 0.189f, 0.116f, 0.203f, 0.090f }, { 0f, 0.222f, 0.157f, 0.022f, 0.116f, 0.189f, 0.090f, 0.203f } }); SevenDotOneSurroundToStereo = StereoToSevenDotOneSurround.Flip(); //-- MonoToFiveDotOneSurroundWithRear = new ChannelMatrix( ChannelMask.SpeakerFrontCenter, ChannelMask.SpeakerFrontLeft | ChannelMask.SpeakerFrontRight | ChannelMask.SpeakerFrontCenter | ChannelMask.SpeakerLowFrequency | ChannelMask.SpeakerBackLeft | ChannelMask.SpeakerBackRight); MonoToFiveDotOneSurroundWithRear.SetMatrix( new[, ] { { 0.192f, 0.192f, 0.192f, 0.038f, 0.192f, 0.192f } }); FiveDotOneSurroundWithRearToMono = MonoToFiveDotOneSurroundWithRear.Flip(); MonoToFiveDotOneSurroundWithSide = new ChannelMatrix( ChannelMask.SpeakerFrontCenter, ChannelMask.SpeakerFrontLeft | ChannelMask.SpeakerFrontRight | ChannelMask.SpeakerFrontCenter | ChannelMask.SpeakerLowFrequency | ChannelMask.SpeakerSideLeft | ChannelMask.SpeakerSideRight); MonoToFiveDotOneSurroundWithSide.SetMatrix( new[, ] { { 0.192f, 0.192f, 0.192f, 0.038f, 0.192f, 0.192f } }); FiveDotOneSurroundWithSideToMono = MonoToFiveDotOneSurroundWithSide.Flip(); MonoToSevenDotOneSurround = new ChannelMatrix( ChannelMask.SpeakerFrontCenter, ChannelMask.SpeakerFrontLeft | ChannelMask.SpeakerFrontRight | ChannelMask.SpeakerFrontCenter | ChannelMask.SpeakerLowFrequency | ChannelMask.SpeakerSideLeft | ChannelMask.SpeakerSideRight | ChannelMask.SpeakerBackLeft | ChannelMask.SpeakerBackRight); MonoToSevenDotOneSurround.SetMatrix( new[, ] { { 0.139f, 0.139f, 0.139f, 0.028f, 0.139f, 0.139f, 0.139f, 0.139f } }); SevenDotOneSurroundToMono = MonoToSevenDotOneSurround.Flip(); //-- FiveDotOneSurroundWithRearToSevenDotOne = new ChannelMatrix( ChannelMask.SpeakerFrontLeft | ChannelMask.SpeakerFrontRight | ChannelMask.SpeakerFrontCenter | ChannelMask.SpeakerLowFrequency | ChannelMask.SpeakerBackLeft | ChannelMask.SpeakerBackRight, ChannelMask.SpeakerFrontLeft | ChannelMask.SpeakerFrontRight | ChannelMask.SpeakerFrontCenter | ChannelMask.SpeakerLowFrequency | ChannelMask.SpeakerSideLeft | ChannelMask.SpeakerSideRight | ChannelMask.SpeakerBackLeft | ChannelMask.SpeakerBackRight); FiveDotOneSurroundWithRearToSevenDotOne.SetMatrix( new[, ] { { 0.518f, 0f, 0f, 0f, 0f, 0f, 0.189f, 0f }, { 0f, 0.518f, 0f, 0f, 0f, 0f, 0f, 0.189f }, { 0f, 0f, 0.518f, 0f, 0f, 0f, 0f, 0f }, { 0f, 0f, 0f, 0.518f, 0f, 0f, 0f, 0f }, { 0f, 0f, 0f, 0f, 0.518f, 0f, 0.482f, 0f }, { 0f, 0f, 0f, 0f, 0f, 0.518f, 0f, 0.482f } }); SevenDotOneSurroundToFiveDotOneSurroundWithRear = FiveDotOneSurroundWithRearToSevenDotOne.Flip(); FiveDotOneSurroundWithSideToSevenDotOne = new ChannelMatrix( ChannelMask.SpeakerFrontLeft | ChannelMask.SpeakerFrontRight | ChannelMask.SpeakerFrontCenter | ChannelMask.SpeakerLowFrequency | ChannelMask.SpeakerSideLeft | ChannelMask.SpeakerSideRight, ChannelMask.SpeakerFrontLeft | ChannelMask.SpeakerFrontRight | ChannelMask.SpeakerFrontCenter | ChannelMask.SpeakerLowFrequency | ChannelMask.SpeakerSideLeft | ChannelMask.SpeakerSideRight | ChannelMask.SpeakerBackLeft | ChannelMask.SpeakerBackRight); FiveDotOneSurroundWithSideToSevenDotOne.SetMatrix( new[, ] { { 0.447f, 0f, 0f, 0f, 0f, 0f, 0f, 0f }, { 0f, 0.447f, 0f, 0f, 0f, 0f, 0f, 0f }, { 0f, 0f, 0.447f, 0f, 0f, 0f, 0f, 0f }, { 0f, 0f, 0f, 0.447f, 0f, 0f, 0f, 0f }, { 0f, 0f, 0f, 0f, 0.429f, 0.124f, 0.447f, 0f }, { 0f, 0f, 0f, 0f, 0.124f, 0.429f, 0f, 0.447f } }); SevenDotOneSurroundToFiveDotOneSurroundWithSide = FiveDotOneSurroundWithSideToSevenDotOne.Flip(); StereoToMonoMatrix = new ChannelMatrix(ChannelMask.SpeakerFrontLeft | ChannelMask.SpeakerFrontRight, ChannelMask.SpeakerFrontCenter); StereoToMonoMatrix.SetMatrix( new[, ] { { 0.5f }, //left { 0.5f } //right }); MonoToStereoMatrix = new ChannelMatrix(ChannelMask.SpeakerFrontCenter, ChannelMask.SpeakerFrontLeft | ChannelMask.SpeakerFrontRight); MonoToStereoMatrix.SetMatrix( new[, ] { //left|right { 1f, 1f } //mono }); }
static ChannelMatrix() { StereoToFiveDotOneSurroundWithRear = new ChannelMatrix( ChannelMask.SpeakerFrontLeft | ChannelMask.SpeakerFrontRight, ChannelMask.SpeakerFrontLeft | ChannelMask.SpeakerFrontRight | ChannelMask.SpeakerFrontCenter | ChannelMask.SpeakerLowFrequency | ChannelMask.SpeakerBackLeft | ChannelMask.SpeakerBackRight); StereoToFiveDotOneSurroundWithRear.SetMatrix( new[,] { {0.314f, 0f, 0.222f, 0.031f, 0.268f, 0.164f}, //left - input {0f, 0.314f, 0.222f, 0.031f, 0.164f, 0.268f} //right - output }); FiveDotOneSurroundWithRearToStereo = StereoToFiveDotOneSurroundWithRear.Flip(); StereoToFiveDotOneSurroundWithSide = new ChannelMatrix( ChannelMask.SpeakerFrontLeft | ChannelMask.SpeakerFrontRight, ChannelMask.SpeakerFrontLeft | ChannelMask.SpeakerFrontRight | ChannelMask.SpeakerFrontCenter | ChannelMask.SpeakerLowFrequency | ChannelMask.SpeakerSideLeft | ChannelMask.SpeakerSideRight); StereoToFiveDotOneSurroundWithSide.SetMatrix( new[,] { {0.320f, 0f, 0.226f, 0.032f, 0.292f, 0.130f}, {0f, 0.320f, 0.226f, 0.032f, 0.130f, 0.292f} }); FiveDotOneSurroundWithSideToStereo = StereoToFiveDotOneSurroundWithSide.Flip(); StereoToSevenDotOneSurround = new ChannelMatrix( ChannelMask.SpeakerFrontLeft | ChannelMask.SpeakerFrontRight, ChannelMask.SpeakerFrontLeft | ChannelMask.SpeakerFrontRight | ChannelMask.SpeakerFrontCenter | ChannelMask.SpeakerLowFrequency | ChannelMask.SpeakerSideLeft | ChannelMask.SpeakerSideRight | ChannelMask.SpeakerBackLeft | ChannelMask.SpeakerBackRight); StereoToSevenDotOneSurround.SetMatrix( new[,] { {0.222f, 0f, 0.157f, 0.022f, 0.189f, 0.116f, 0.203f, 0.090f}, {0f, 0.222f, 0.157f, 0.022f, 0.116f, 0.189f, 0.090f, 0.203f} }); SevenDotOneSurroundToStereo = StereoToSevenDotOneSurround.Flip(); //-- MonoToFiveDotOneSurroundWithRear = new ChannelMatrix( ChannelMask.SpeakerFrontCenter, ChannelMask.SpeakerFrontLeft | ChannelMask.SpeakerFrontRight | ChannelMask.SpeakerFrontCenter | ChannelMask.SpeakerLowFrequency | ChannelMask.SpeakerBackLeft | ChannelMask.SpeakerBackRight); MonoToFiveDotOneSurroundWithRear.SetMatrix( new[,] { {0.192f, 0.192f, 0.192f, 0.038f, 0.192f, 0.192f} }); FiveDotOneSurroundWithRearToMono = MonoToFiveDotOneSurroundWithRear.Flip(); MonoToFiveDotOneSurroundWithSide = new ChannelMatrix( ChannelMask.SpeakerFrontCenter, ChannelMask.SpeakerFrontLeft | ChannelMask.SpeakerFrontRight | ChannelMask.SpeakerFrontCenter | ChannelMask.SpeakerLowFrequency | ChannelMask.SpeakerSideLeft | ChannelMask.SpeakerSideRight); MonoToFiveDotOneSurroundWithRear.SetMatrix( new[,] { {0.192f, 0.192f, 0.192f, 0.038f, 0.192f, 0.192f} }); FiveDotOneSurroundWithSideToMono = MonoToFiveDotOneSurroundWithSide.Flip(); MonoToSevenDotOneSurround = new ChannelMatrix( ChannelMask.SpeakerFrontCenter, ChannelMask.SpeakerFrontLeft | ChannelMask.SpeakerFrontRight | ChannelMask.SpeakerFrontCenter | ChannelMask.SpeakerLowFrequency | ChannelMask.SpeakerSideLeft | ChannelMask.SpeakerSideRight | ChannelMask.SpeakerBackLeft | ChannelMask.SpeakerBackRight); MonoToSevenDotOneSurround.SetMatrix( new[,] { {0.139f, 0.139f, 0.139f, 0.028f, 0.139f, 0.139f, 0.139f, 0.139f} }); SevenDotOneSurroundToMono = MonoToSevenDotOneSurround.Flip(); //-- FiveDotOneSurroundWithRearToSevenDotOne = new ChannelMatrix( ChannelMask.SpeakerFrontLeft | ChannelMask.SpeakerFrontRight | ChannelMask.SpeakerFrontCenter | ChannelMask.SpeakerLowFrequency | ChannelMask.SpeakerBackLeft | ChannelMask.SpeakerBackRight, ChannelMask.SpeakerFrontLeft | ChannelMask.SpeakerFrontRight | ChannelMask.SpeakerFrontCenter | ChannelMask.SpeakerLowFrequency | ChannelMask.SpeakerSideLeft | ChannelMask.SpeakerSideRight | ChannelMask.SpeakerBackLeft | ChannelMask.SpeakerBackRight); FiveDotOneSurroundWithRearToSevenDotOne.SetMatrix( new[,] { {0.518f , 0f , 0f, 0f, 0f, 0f, 0.189f, 0f}, {0f , 0.518f , 0f, 0f, 0f, 0f, 0f , 0.189f}, {0f , 0f , 0.518f, 0f, 0f, 0f, 0f, 0f}, {0f, 0f, 0f, 0.518f, 0f, 0f, 0f, 0f}, {0f, 0f, 0f, 0f, 0.518f, 0f, 0.482f, 0f}, {0f, 0f, 0f, 0f, 0f, 0.518f, 0f, 0.482f} }); SevenDotOneSurroundToFiveDotOneSurroundWithRear = FiveDotOneSurroundWithRearToSevenDotOne.Flip(); FiveDotOneSurroundWithSideToSevenDotOne = new ChannelMatrix( ChannelMask.SpeakerFrontLeft | ChannelMask.SpeakerFrontRight | ChannelMask.SpeakerFrontCenter | ChannelMask.SpeakerLowFrequency | ChannelMask.SpeakerSideLeft | ChannelMask.SpeakerSideRight, ChannelMask.SpeakerFrontLeft | ChannelMask.SpeakerFrontRight | ChannelMask.SpeakerFrontCenter | ChannelMask.SpeakerLowFrequency | ChannelMask.SpeakerSideLeft | ChannelMask.SpeakerSideRight | ChannelMask.SpeakerBackLeft | ChannelMask.SpeakerBackRight); FiveDotOneSurroundWithSideToSevenDotOne.SetMatrix( new[,] { {0.447f, 0f, 0f, 0f, 0f, 0f, 0f, 0f}, {0f, 0.447f, 0f, 0f, 0f, 0f, 0f, 0f}, {0f, 0f, 0.447f, 0f, 0f, 0f, 0f, 0f}, {0f, 0f, 0f, 0.447f, 0f, 0f, 0f, 0f}, {0f, 0f, 0f, 0f, 0.429f, 0.124f, 0.447f, 0f}, {0f, 0f, 0f, 0f, 0.124f, 0.429f, 0f, 0.447f} }); SevenDotOneSurroundToFiveDotOneSurroundWithSide = FiveDotOneSurroundWithSideToSevenDotOne.Flip(); StereoToMonoMatrix = new ChannelMatrix(ChannelMask.SpeakerFrontLeft | ChannelMask.SpeakerFrontRight, ChannelMask.SpeakerFrontCenter); StereoToMonoMatrix.SetMatrix( new[,] { {0.5f}, //left {0.5f} //right }); MonoToStereoMatrix = new ChannelMatrix(ChannelMask.SpeakerFrontCenter, ChannelMask.SpeakerFrontLeft | ChannelMask.SpeakerFrontRight); MonoToStereoMatrix.SetMatrix( new[,] { //left|right {1f, 1f} //mono }); }