UNPKG

node-audio-mixer

Version:

PCM audio mixer with customizable parameters

25 lines (24 loc) 1.19 kB
"use strict"; 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; }