Browse Source

Added more upmixing options.

* 2.0 to 1.0
    * 4.0 to 1.0 and 2.0
improved_timing
Ian Burgmyer 6 years ago
parent
commit
0f2486698b
  1. 20
      DotSDL/Audio/FormatConverter.cs

20
DotSDL/Audio/FormatConverter.cs

@ -77,9 +77,17 @@ namespace DotSDL.Audio {
samples = buffer.Samples[Channel.Mono];
break;
case ChannelCount.Stereo:
throw new NotImplementedException();
for(var i = 0; i < buffer.Length; i++)
samples[i] = (buffer.Samples[Channel.StereoLeft][i]
+ buffer.Samples[Channel.StereoRight][i]) / 2;
break;
case ChannelCount.Quadraphonic:
throw new NotImplementedException();
for(var i = 0; i < buffer.Length; i++)
samples[i] = (buffer.Samples[Channel.QuadFrontLeft][i]
+ buffer.Samples[Channel.QuadFrontRight][i]
+ buffer.Samples[Channel.QuadRearLeft][i]
+ buffer.Samples[Channel.QuadRearRight][i]) / 4;
break;
case ChannelCount.FiveOne:
throw new NotImplementedException();
default:
@ -110,7 +118,13 @@ namespace DotSDL.Audio {
}
break;
case ChannelCount.Quadraphonic:
throw new NotImplementedException();
for(var i = 0; i < buffer.Length; i++) {
samples[i * ch] = (buffer.Samples[Channel.QuadFrontLeft][i]
+ buffer.Samples[Channel.QuadRearLeft][i]) / 2;
samples[i * ch + 1] = (buffer.Samples[Channel.QuadFrontRight][i]
+ buffer.Samples[Channel.QuadRearRight][i]) / 2;
}
break;
case ChannelCount.FiveOne:
throw new NotImplementedException();
default:

Loading…
Cancel
Save