- float const left = in->data()[0][i];
- float const right = in->data()[1][i];
- float const mid = (left + right) / 2;
- out->data()[0][i] = left - mid;
- out->data()[1][i] = right - mid;
- out->data()[2][i] = mid;
+ auto const left = in->data()[0][i];
+ auto const right = in->data()[1][i];
+ auto const mid = (left + right) / 2;
+ if (N > 0) {
+ out->data()[0][i] = left - mid;
+ }
+ if (N > 1) {
+ out->data()[1][i] = right - mid;
+ }
+ if (N > 2) {
+ out->data()[2][i] = mid;
+ }
+ }
+
+ for (int i = N; i < channels; ++i) {
+ out->make_silent (i);