{"ast":null,"code":"// let magnitudes = [];\n\nconst Spectrogram = {\n  SAMPLE_RATE: 44100,\n  FRAME_SIZE: 512,\n  // Number of audio samples used to generate LPC Coeffs.;\n  MAX_LPC_FREQ: 4096,\n  START_BLUE: \"#50D3D6\",\n  LPC_DISPLAY_RES: 64,\n  // FADE_JUMP_UP: 0.1,\n  // FADE_JUMP_DOWN: 0.1,\n  // TARGET_SPACE: 0.001,\n  // const FRAME_RATE = 40;\n\n  // const ENABLE_MEAN_MAG = false;\n  BROADCASTS_PER_SECOND: 6,\n  // used for 'offline' mode too\n  // const DRAW_PEAK_THRESHOLD = 0.3;\n  // const HIDE_WAVE_MAG_THRESHOLD = -1; // -1 means always animate wave, otherwise min energy.\n  HIDE_WAVE_FRAME_THRESHOLD: 60,\n  EMPTY_WAVE_MAG: 0.3,\n  numFramesBelowMin: 0,\n  drawLoop: false,\n  fpsCount: 0,\n  // let frameCounter = 0;\n\n  lastReceivedCoeffs: [1, 2, 3],\n  // let receiveEnabled = false;\n\n  // let wavePaused = false;\n  magnitudes: [],\n  // #hc ?????\n  // let snapshotCoeffs = [1, 2, 3];\n\n  // ANIMATION --------------------------------------------\n  // spectro\n  waveStartAnimation: (position, callback) => {\n    const WIDTH = 4;\n    const SPEED = 6;\n    const canvas = document.getElementById(\"spectraGraph\");\n    const context = canvas.getContext(\"2d\");\n    if (position * SPEED > canvas.width) {\n      callback();\n      return;\n    }\n    context.clearRect(0, 0, canvas.width, canvas.height);\n    context.beginPath();\n    context.strokeStyle = \"#50D3D6\"; //START_BLUE;\n    context.lineWidth = 1;\n    let ps = position * SPEED;\n    const GOLD_WINDOW = 30;\n    for (let i = ps; i <= ps + canvas.width / WIDTH; i++) {\n      if (i > canvas.width / 2 - GOLD_WINDOW && i < canvas.width / 2 + GOLD_WINDOW) {\n        context.strokeStyle = \"gold\";\n      } else {\n        context.strokeStyle = \"#50D3D6\"; //START_BLUE;\n      }\n      let xPos = i;\n      let yPos = canvas.height;\n      let sin_start = i - ps;\n      yPos = canvas.height * (1 - Math.sin(sin_start * (Math.PI * WIDTH / canvas.width)));\n      context.moveTo(xPos, canvas.height);\n      context.lineTo(xPos, yPos);\n      context.stroke();\n      context.beginPath();\n    }\n\n    //context.stroke();\n    window.requestAnimationFrame(function () {\n      this.waveStartAnimation(position + 1, callback);\n    });\n  },\n  // end waveStartAnimation()\n\n  // Helpers -----------------------------\n  convertToMono: (input, audioContext) => {\n    const splitter = audioContext.createChannelSplitter(2);\n    const merger = audioContext.createChannelMerger(2);\n    input.connect(splitter);\n    splitter.connect(merger, 0, 0);\n    splitter.connect(merger, 0, 1);\n    return merger;\n  },\n  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  },\n  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  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  },\n  updateMagnitudes: (newMagnitudes, magnitudes) => {\n    const newMags = [];\n    console.log(magnitudes);\n    let FADE_JUMP_UP = 0.00; // re-visit\n    let FADE_JUMP_DOWN = 0.00; // re-visit\n    let TARGET_SPACE = 0.001; // re-visit\n\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  },\n  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  }\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};\nexport default Spectrogram;","map":{"version":3,"names":["Spectrogram","SAMPLE_RATE","FRAME_SIZE","MAX_LPC_FREQ","START_BLUE","LPC_DISPLAY_RES","BROADCASTS_PER_SECOND","HIDE_WAVE_FRAME_THRESHOLD","EMPTY_WAVE_MAG","numFramesBelowMin","drawLoop","fpsCount","lastReceivedCoeffs","magnitudes","waveStartAnimation","position","callback","WIDTH","SPEED","canvas","document","getElementById","context","getContext","width","clearRect","height","beginPath","strokeStyle","lineWidth","ps","GOLD_WINDOW","i","xPos","yPos","sin_start","Math","sin","PI","moveTo","lineTo","stroke","window","requestAnimationFrame","convertToMono","input","audioContext","splitter","createChannelSplitter","merger","createChannelMerger","connect","expandArraySmoothly","source","targetResolution","numSteps","length","newArray","Array","sourceRes","stepDiff","j","push","getMean","arr","result","createArrayWithSameValue","value","size","updateMagnitudes","newMagnitudes","newMags","console","log","FADE_JUMP_UP","FADE_JUMP_DOWN","TARGET_SPACE","diff","max","normalizeIfNecessary","magsToAdjust","maxMag","apply","adjustedMags"],"sources":["D:/Project/UC_Trains_Voice/react-demo/src/gavt/Wave/lib/Spectrogram.js"],"sourcesContent":["// let magnitudes = [];\r\n\r\nconst Spectrogram = {\r\n    SAMPLE_RATE: 44100,\r\n    FRAME_SIZE: 512, // Number of audio samples used to generate LPC Coeffs.;\r\n    MAX_LPC_FREQ:4096,\r\n    START_BLUE: \"#50D3D6\",\r\n    LPC_DISPLAY_RES: 64,\r\n    // FADE_JUMP_UP: 0.1,\r\n    // FADE_JUMP_DOWN: 0.1,\r\n    // TARGET_SPACE: 0.001,\r\n    // const FRAME_RATE = 40;\r\n\r\n    // const ENABLE_MEAN_MAG = false;\r\n    BROADCASTS_PER_SECOND: 6,   // used for 'offline' mode too\r\n    // const DRAW_PEAK_THRESHOLD = 0.3;\r\n    // const HIDE_WAVE_MAG_THRESHOLD = -1; // -1 means always animate wave, otherwise min energy.\r\n    HIDE_WAVE_FRAME_THRESHOLD: 60,\r\n    EMPTY_WAVE_MAG: 0.3,\r\n\r\n    numFramesBelowMin: 0,\r\n\r\n    drawLoop: false,\r\n    fpsCount: 0,\r\n    // let frameCounter = 0;\r\n\r\n    lastReceivedCoeffs: [1, 2, 3],\r\n    // let receiveEnabled = false;\r\n\r\n    // let wavePaused = false;\r\n    magnitudes: [],  // #hc ?????\r\n    // let snapshotCoeffs = [1, 2, 3];\r\n\r\n    // ANIMATION --------------------------------------------\r\n    // spectro\r\n    waveStartAnimation: (position, callback) => {\r\n        const WIDTH = 4;\r\n        const SPEED = 6;\r\n        const canvas = document.getElementById(\"spectraGraph\");\r\n        const context = canvas.getContext(\"2d\");\r\n    \r\n        if (position * SPEED > canvas.width) {\r\n        callback();\r\n        return;\r\n        }\r\n        context.clearRect(0, 0, canvas.width, canvas.height);\r\n        context.beginPath();\r\n        context.strokeStyle = \"#50D3D6\";//START_BLUE;\r\n        context.lineWidth = 1;\r\n        let ps = position * SPEED;\r\n        const GOLD_WINDOW = 30;\r\n        for (let i = ps; i <= ps + canvas.width / WIDTH; i++) {\r\n        if (\r\n            i > canvas.width / 2 - GOLD_WINDOW &&\r\n            i < canvas.width / 2 + GOLD_WINDOW\r\n        ) {\r\n            context.strokeStyle = \"gold\";\r\n        } else {\r\n            context.strokeStyle = \"#50D3D6\"; //START_BLUE;\r\n        }\r\n        let xPos = i;\r\n        let yPos = canvas.height;\r\n        let sin_start = i - ps;\r\n        yPos =\r\n            canvas.height *\r\n            (1 - Math.sin(sin_start * ((Math.PI * WIDTH) / canvas.width)));\r\n        context.moveTo(xPos, canvas.height);\r\n        context.lineTo(xPos, yPos);\r\n        context.stroke();\r\n        context.beginPath();\r\n        }\r\n    \r\n        //context.stroke();\r\n        window.requestAnimationFrame(function () {\r\n            this.waveStartAnimation(position + 1, callback);\r\n        });\r\n    },// end waveStartAnimation()\r\n\r\n    // Helpers -----------------------------\r\n    convertToMono: (input, audioContext) => {\r\n        const splitter = audioContext.createChannelSplitter(2);\r\n        const merger = audioContext.createChannelMerger(2);\r\n        input.connect(splitter);\r\n        splitter.connect(merger, 0, 0);\r\n        splitter.connect(merger, 0, 1);\r\n        return merger;\r\n      },\r\n    \r\n    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\n    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    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\n    updateMagnitudes: (newMagnitudes, magnitudes) => {\r\n        const newMags = [];\r\n        console.log(magnitudes)\r\n        let FADE_JUMP_UP = 0.00;     // re-visit\r\n        let FADE_JUMP_DOWN = 0.00;   // re-visit\r\n        let TARGET_SPACE = 0.001;   // re-visit\r\n\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\n      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\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\n}\r\n\r\nexport default Spectrogram;"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}