UNPKG

web-audio-api

Version:
218 lines (196 loc) 7.89 kB
var BLOCK_SIZE = require('./constants').BLOCK_SIZE var ChannelMixing = (function(){"use strict";var PRS$0 = (function(o,t){o["__proto__"]={"a":t};return o["a"]===t})({},{});var DP$0 = Object.defineProperty;var GOPD$0 = Object.getOwnPropertyDescriptor;var MIXIN$0 = function(t,s){for(var p in s){if(s.hasOwnProperty(p)){DP$0(t,p,GOPD$0(s,p));}}return t};var proto$0={}; function ChannelMixing(numberOfChannels, computedNumberOfChannels, channelInterpretation) { this.numberOfChannels = numberOfChannels this.computedNumberOfChannels = computedNumberOfChannels this.channelInterpretation = channelInterpretation if (this.numberOfChannels === this.computedNumberOfChannels) { this._process = this.identityProcess } else { if (this.channelInterpretation === 'speakers') { this._process = this['speakerMix' + this.numberOfChannels + this.computedNumberOfChannels] if (!this._process) { // well, this is ugly. if (this.numberOfChannels < this.computedNumberOfChannels) { this._process = this.discreteUpMix } else { this._process = this.discreteDownMix } } } else { if (this.numberOfChannels < this.computedNumberOfChannels) { this._process = this.discreteUpMix } else { this._process = this.discreteDownMix } } } }DP$0(ChannelMixing,"prototype",{"configurable":false,"enumerable":false,"writable":false}); proto$0.identityProcess = function(inBuffer, outBuffer) { var inData, outData for (var ch = 0; ch < this.computedNumberOfChannels; ch++) { inData = inBuffer.getChannelData(ch) outData = outBuffer.getChannelData(ch) for (var i = 0; i < BLOCK_SIZE; i++) outData[i] += inData[i] } }; proto$0.discreteUpMix = function(inBuffer, outBuffer) { var chDataIn, chDataOut for (var ch = 0; ch < this.numberOfChannels; ch++) { chDataIn = inBuffer.getChannelData(ch) chDataOut = outBuffer.getChannelData(ch) for (var i = 0; i < BLOCK_SIZE; i++) chDataOut[i] += chDataIn[i] } }; proto$0.discreteDownMix = function(inBuffer, outBuffer) { var chDataIn, chDataOut for (var ch = 0; ch < this.computedNumberOfChannels; ch++) { chDataIn = inBuffer.getChannelData(ch) chDataOut = outBuffer.getChannelData(ch) for (var i = 0; i < BLOCK_SIZE; i++) { chDataOut[i] += chDataIn[i] } } }; proto$0.speakerMix12 = function(inBuffer, outBuffer) { var inData = inBuffer.getChannelData(0) var dataOutL = outBuffer.getChannelData(0) , dataOutR = outBuffer.getChannelData(1) for (var i = 0; i < BLOCK_SIZE; i++) { dataOutL[i] += inData[i] dataOutR[i] += inData[i] } }; proto$0.speakerMix14 = function(inBuffer, outBuffer) { var inData = inBuffer.getChannelData(0) , dataOutL = outBuffer.getChannelData(0) , dataOutR = outBuffer.getChannelData(1) for (var i = 0; i < BLOCK_SIZE; i++) { dataOutL[i] += inData[i] dataOutR[i] += inData[i] } }; proto$0.speakerMix16 = function(inBuffer, outBuffer) { var inData = inBuffer.getChannelData(0) , dataOutC = outBuffer.getChannelData(2) for (var i = 0; i < BLOCK_SIZE; i++) { dataOutC[i] += inData[i] } }; proto$0.speakerMix24 = function(inBuffer, outBuffer) { var dataL = inBuffer.getChannelData(0) , dataR = inBuffer.getChannelData(1) , dataOutL = outBuffer.getChannelData(0) , dataOutR = outBuffer.getChannelData(1) for (var i = 0; i < BLOCK_SIZE; i++) { dataOutL[i] += dataL[i] dataOutR[i] += dataR[i] } }; proto$0.speakerMix26 = function(inBuffer, outBuffer) { var dataL = inBuffer.getChannelData(0) , dataR = inBuffer.getChannelData(1) , dataOutL = outBuffer.getChannelData(0) , dataOutR = outBuffer.getChannelData(1) for (var i = 0; i < BLOCK_SIZE; i++) { dataOutL[i] += dataL[i] dataOutR[i] += dataR[i] } }; proto$0.speakerMix46 = function(inBuffer, outBuffer) { var dataL = inBuffer.getChannelData(0) , dataR = inBuffer.getChannelData(1) , dataSL = inBuffer.getChannelData(2) , dataSR = inBuffer.getChannelData(3) , dataOutL = outBuffer.getChannelData(0) , dataOutR = outBuffer.getChannelData(1) , dataOutSL = outBuffer.getChannelData(4) , dataOutSR = outBuffer.getChannelData(5) for (var i = 0; i < BLOCK_SIZE; i++) { dataOutL[i] += dataL[i] dataOutR[i] += dataR[i] dataOutSL[i] += dataSL[i] dataOutSR[i] += dataSR[i] } }; proto$0.speakerMix21 = function(inBuffer, outBuffer) { var dataL = inBuffer.getChannelData(0) , dataR = inBuffer.getChannelData(1) , dataOut = outBuffer.getChannelData(0) for (var i = 0; i < BLOCK_SIZE; i++) { dataOut[i] += 0.5 * (dataL[i] + dataR[i]) } }; proto$0.speakerMix41 = function(inBuffer, outBuffer) { var dataL = inBuffer.getChannelData(0) , dataR = inBuffer.getChannelData(1) , dataSL = inBuffer.getChannelData(2) , dataSR = inBuffer.getChannelData(3) , dataOut = outBuffer.getChannelData(0) for (var i = 0; i < BLOCK_SIZE; i++) { dataOut[i] += 0.25 * (dataL[i] + dataR[i] + dataSL[i] + dataSR[i]) } }; proto$0.speakerMix42 = function(inBuffer, outBuffer) { var dataL = inBuffer.getChannelData(0) , dataR = inBuffer.getChannelData(1) , dataSL = inBuffer.getChannelData(2) , dataSR = inBuffer.getChannelData(3) , dataOutL = outBuffer.getChannelData(0) , dataOutR = outBuffer.getChannelData(1) for (var i = 0; i < BLOCK_SIZE; i++) { dataOutL[i] += 0.5 * (dataL[i] + dataSL[i]) dataOutR[i] += 0.5 * (dataR[i] + dataSR[i]) } }; proto$0.speakerMix61 = function(inBuffer, outBuffer) { var dataL = inBuffer.getChannelData(0) , dataR = inBuffer.getChannelData(1) , dataC = inBuffer.getChannelData(2) , dataLFE = inBuffer.getChannelData(3) , dataSL = inBuffer.getChannelData(4) , dataSR = inBuffer.getChannelData(5) , dataOut = outBuffer.getChannelData(0) for (var i = 0; i < BLOCK_SIZE; i++) { dataOut[i] += 0.7071 * (dataL[i] + dataR[i]) + dataC[i] + 0.5 * (dataSL[i] + dataSR[i]) } }; proto$0.speakerMix62 = function(inBuffer, outBuffer) { var dataL = inBuffer.getChannelData(0) , dataR = inBuffer.getChannelData(1) , dataC = inBuffer.getChannelData(2) , dataLFE = inBuffer.getChannelData(3) , dataSL = inBuffer.getChannelData(4) , dataSR = inBuffer.getChannelData(5) , dataOutL = outBuffer.getChannelData(0) , dataOutR = outBuffer.getChannelData(1) for (var i = 0; i < BLOCK_SIZE; i++) { dataOutL[i] += dataL[i] + 0.7071 * (dataC[i] + dataSL[i]) dataOutR[i] += dataR[i] + 0.7071 * (dataC[i] + dataSR[i]) } }; proto$0.speakerMix64 = function(inBuffer, outBuffer) { var dataL = inBuffer.getChannelData(0) , dataR = inBuffer.getChannelData(1) , dataC = inBuffer.getChannelData(2) , dataLFE = inBuffer.getChannelData(3) , dataSL = inBuffer.getChannelData(4) , dataSR = inBuffer.getChannelData(5) , dataOutL = outBuffer.getChannelData(0) , dataOutR = outBuffer.getChannelData(1) , dataOutSL = outBuffer.getChannelData(2) , dataOutSR = outBuffer.getChannelData(3) for (var i = 0; i < BLOCK_SIZE; i++) { dataOutL[i] += dataL[i] + 0.7071 * dataC[i] dataOutR[i] += dataR[i] + 0.7071 * dataC[i] dataOutSL[i] += dataSL[i] dataOutSR[i] += dataSR[i] } }; proto$0.process = function(inBuffer, outBuffer) { this._process(inBuffer, outBuffer) return outBuffer }; MIXIN$0(ChannelMixing.prototype,proto$0);proto$0=void 0;return ChannelMixing;})(); module.exports = ChannelMixing