{"ast":null,"code":"/*\r\n    This is a lib of fns that are used by waveAudio.js & waveDrawLoop.js.\r\n    They process the magnitude and peak data returned from the LPC in order to prepare it for the canvas drawLoop. \r\n*/\n\nconst getMean = arr => {\n  let result = 0;\n  for (let i = 0; i < arr.length; i++) {\n    result += arr[i];\n  }\n  return result / arr.length;\n};\n\n// const scale = (lpc) => {\n//     const sensitivityValueEle = document.getElementById(\n//         \"sensitivitySlider\"\n//     );\n\n//     if (sensitivityValueEle !== null) {\n//         for (let i = 0; i < lpc.length; i++) {\n//             let factor = parseInt(sensitivityValueEle.value) / 100.0;\n//             lpc[i] = lpc[i] * factor;\n//         }\n//     }\n//     return lpc;\n// };\n\nconst updateMagnitudes = (newMagnitudes, magnitudes) => {\n  const FADE_JUMP_UP = 0.1;\n  const FADE_JUMP_DOWN = 0.1;\n  const TARGET_SPACE = 0.001;\n  const newMags = [];\n  for (let i = 0; i < magnitudes.length; i++) {\n    if (magnitudes[i] > newMagnitudes[i] - TARGET_SPACE / 2 && magnitudes[i] < newMagnitudes[i] + TARGET_SPACE / 2) {\n      newMags.push(magnitudes[i]); // Do nothing.\n    } else if (magnitudes[i] < newMagnitudes[i]) {\n      let diff = newMagnitudes[i] - magnitudes[i];\n      newMags.push(magnitudes[i] + diff * FADE_JUMP_UP);\n    } else {\n      let diff = magnitudes[i] - newMagnitudes[i];\n      newMags.push(Math.max(magnitudes[i] - FADE_JUMP_DOWN * diff, 0));\n    }\n  }\n  return newMags;\n};\nconst createArrayWithSameValue = (value, size) => {\n  const arr = new Array();\n  for (let i = 0; i < size; i++) {\n    arr.push(value);\n  }\n  return arr;\n};\nconst normalizeIfNecessary = magsToAdjust => {\n  const maxMag = Math.max.apply(Math, magsToAdjust);\n  let adjustedMags = magsToAdjust;\n  if (maxMag > 1.0) {\n    adjustedMags = new Array();\n    for (let i = 0; i < magsToAdjust.length; i++) {\n      adjustedMags.push(magsToAdjust[i] / maxMag);\n      if (adjustedMags[i] > 1.0) {\n        console.log(adjustedMags[i]);\n      }\n    }\n  }\n  return adjustedMags;\n};\nconst expandArraySmoothly = (source, targetResolution) => {\n  const numSteps = targetResolution / source.length;\n  const newArray = new Array();\n  for (let i = 0; i < source.length; i++) {\n    let sourceRes = source[i];\n    let stepDiff = 0;\n    if (i < source.length - 1) {\n      stepDiff = (source[i + 1] - source[i]) / numSteps;\n    }\n    for (let j = 0; j < numSteps; j++) {\n      newArray.push(sourceRes + stepDiff * j);\n    }\n  }\n  return newArray;\n};\nexport { getMean, updateMagnitudes, createArrayWithSameValue, normalizeIfNecessary, expandArraySmoothly };","map":{"version":3,"names":["getMean","arr","result","i","length","updateMagnitudes","newMagnitudes","magnitudes","FADE_JUMP_UP","FADE_JUMP_DOWN","TARGET_SPACE","newMags","push","diff","Math","max","createArrayWithSameValue","value","size","Array","normalizeIfNecessary","magsToAdjust","maxMag","apply","adjustedMags","console","log","expandArraySmoothly","source","targetResolution","numSteps","newArray","sourceRes","stepDiff","j"],"sources":["D:/Project/UC_Trains_Voice/react-demo/src/gavt/Wave/lib/spectroHelpers.js"],"sourcesContent":["/*\r\n    This is a lib of fns that are used by waveAudio.js & waveDrawLoop.js.\r\n    They process the magnitude and peak data returned from the LPC in order to prepare it for the canvas drawLoop. \r\n*/\r\n\r\n\r\nconst getMean = (arr) => {\r\n    let result = 0;\r\n    for (let i = 0; i < arr.length; i++) {\r\n        result += arr[i];\r\n    }\r\n    return result / arr.length;\r\n};\r\n\r\n// const scale = (lpc) => {\r\n//     const sensitivityValueEle = document.getElementById(\r\n//         \"sensitivitySlider\"\r\n//     );\r\n\r\n//     if (sensitivityValueEle !== null) {\r\n//         for (let i = 0; i < lpc.length; i++) {\r\n//             let factor = parseInt(sensitivityValueEle.value) / 100.0;\r\n//             lpc[i] = lpc[i] * factor;\r\n//         }\r\n//     }\r\n//     return lpc;\r\n// };\r\n\r\nconst updateMagnitudes = (newMagnitudes, magnitudes) => {\r\n    const FADE_JUMP_UP = 0.1;\r\n    const FADE_JUMP_DOWN = 0.1;\r\n    const TARGET_SPACE = 0.001;\r\n\r\n    const newMags = [];\r\n    for (let i = 0; i < magnitudes.length; i++) {\r\n        if (\r\n            magnitudes[i] > newMagnitudes[i] - TARGET_SPACE / 2 &&\r\n            magnitudes[i] < newMagnitudes[i] + TARGET_SPACE / 2\r\n        ) {\r\n            newMags.push(magnitudes[i]); // Do nothing.\r\n        } else if (magnitudes[i] < newMagnitudes[i]) {\r\n            let diff = newMagnitudes[i] - magnitudes[i];\r\n            newMags.push(magnitudes[i] + diff * FADE_JUMP_UP);\r\n        } else {\r\n            let diff = magnitudes[i] - newMagnitudes[i];\r\n            newMags.push(Math.max(magnitudes[i] - FADE_JUMP_DOWN * diff, 0));\r\n        }\r\n    }\r\n    return newMags;\r\n};\r\n\r\nconst createArrayWithSameValue = (value, size) => {\r\n    const arr = new Array();\r\n    for (let i = 0; i < size; i++) {\r\n        arr.push(value);\r\n    }\r\n    return arr;\r\n};\r\n\r\nconst normalizeIfNecessary = (magsToAdjust) => {\r\n    const maxMag = Math.max.apply(Math, magsToAdjust);\r\n    let adjustedMags = magsToAdjust;\r\n    if (maxMag > 1.0) {\r\n        adjustedMags = new Array();\r\n        for (let i = 0; i < magsToAdjust.length; i++) {\r\n            adjustedMags.push(magsToAdjust[i] / maxMag);\r\n            if (adjustedMags[i] > 1.0) {\r\n                console.log(adjustedMags[i]);\r\n            }\r\n        }\r\n    }\r\n    return adjustedMags;\r\n};\r\n\r\nconst expandArraySmoothly = (source, targetResolution) => {\r\n    const numSteps = targetResolution / source.length;\r\n    const newArray = new Array();\r\n    for (let i = 0; i < source.length; i++) {\r\n        let sourceRes = source[i];\r\n        let stepDiff = 0;\r\n        if (i < source.length - 1) {\r\n            stepDiff = (source[i + 1] - source[i]) / numSteps;\r\n        }\r\n        for (let j = 0; j < numSteps; j++) {\r\n            newArray.push(sourceRes + stepDiff * j);\r\n        }\r\n    }\r\n    return newArray;\r\n};\r\n\r\nexport {    getMean, updateMagnitudes, createArrayWithSameValue, \r\n            normalizeIfNecessary, expandArraySmoothly \r\n        }"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}