node-audio-mixer
Version:
PCM audio mixer with customizable parameters
25 lines (24 loc) • 1.19 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.changeIntType = changeIntType;
const GetMethodName_1 = require("../General/GetMethodName");
const IsLittleEndian_1 = require("../General/IsLittleEndian");
const GetValueRange_1 = require("../General/GetValueRange");
function changeIntType(audioData, params, unsigned = false) {
const bytesPerElement = params.bitDepth / 8;
const isLe = (0, IsLittleEndian_1.isLittleEndian)(params.endianness);
const valueRange = (0, GetValueRange_1.getValueRange)(params.bitDepth, false);
const getSampleMethod = `get${(0, GetMethodName_1.getMethodName)(params.bitDepth, params.unsigned, params.float)}`;
const setSampleMethod = `set${(0, GetMethodName_1.getMethodName)(params.bitDepth, params.unsigned, params.float)}`;
for (let index = 0; index < audioData.byteLength; index += bytesPerElement) {
let sample = audioData[getSampleMethod](index, isLe);
if (unsigned) {
sample += valueRange.max + 1;
}
else {
sample -= valueRange.max + 1;
}
audioData[setSampleMethod](index, sample, isLe);
}
params.unsigned = unsigned;
}