{"ast":null,"code":"var _jsxFileName = \"/Users/shanyi/Desktop/Projects/UC_Trains_Voice/react-demo/src/gavt/Wave/WaveCanvas.jsx\",\n  _s = $RefreshSig$();\n// Manually created for GAVT project on 2024-06-03, based on commit 10df1d9 of the original project\nimport { useRef, useState, useEffect } from 'react';\nimport useUserMedia from './useUserMedia';\nimport { getSnapData, updateCoeffsWithVonage, broadcastClearSnapshot, broadcastSnapshot, initAudio, updateCoeffsOffline, updateData, FRAME_SIZE } from './waveAudio';\nimport './Wave.css';\n\n// =====================================================\nimport { jsxDEV as _jsxDEV } from \"react/jsx-dev-runtime\";\nconst WaveCanvas = props => {\n  _s();\n  const DEFAULT_FILTER_ORDER = 40;\n  const {\n    draw,\n    // this is the drawLoop sketch\n    isPaused,\n    // req'd for renderer\n    isTracking,\n    strokeStyle = \"#50D3D6\",\n    ...rest\n  } = props;\n\n  // Audio Vars ------\n  const SAMPLE_RATE = 44100;\n  const refAudioCtx = useRef(null);\n  const analyser = useRef();\n  let microphone = useRef(null);\n  let audioData = []; // Holds the time domain data.\n\n  let lastReceivedCoeffs = []; // self-explanatory\n  const BROADCASTS_PER_SECOND = 6; // used in audioData Interval, affects drawing smoothness, and will eventually be used with Vonage\n\n  // Canvas Vars -------\n  const refCanvas = useRef(); // html holds canvasEle\n  const refCtx = useRef(); // holds canvas drawing ctx\n  const refAniId = useRef(); // holds window.requestAnimationFrame\n  let count = 0; // just a var to count the draw loops\n  let drawData = {\n    magnitudes: [],\n    peaks: []\n  }; // set each audio interval\n  let receiveEnabled = useRef(false);\n  let [sensitivity, setSensitivity] = useState(50);\n\n  // Snapshot Feature --------------\n  const snapCtx = useRef();\n  const refSnapCanvas = useRef();\n  let snapshotCoeffs = useRef(null);\n  let snapData = {\n    magnitudes: [],\n    peaks: []\n  };\n  let getMediaInitiated = useRef(false);\n  // Services ---------\n  const {\n    stream,\n    error,\n    getMedia\n  } = useUserMedia();\n\n  // ------------------------------------------------\n  const renderer = () => {\n    let ctx = refCtx.current;\n    count++;\n    drawData = updateData(drawData, lastReceivedCoeffs, isTracking);\n    if (!isPaused) {\n      // drawLoop. Drawing is passed in thru props.\n      draw(ctx, count, drawData.magnitudes, drawData.peaks, strokeStyle); // FOR WAVE CUSTOMIZATION!\n    } else {\n      return;\n    }\n    if (snapshotCoeffs.current !== null) {\n      displaySnapshot();\n    }\n    refAniId.current = window.requestAnimationFrame(renderer, isPaused, isTracking);\n  };\n  const displaySnapshot = () => {\n    let snapData = getSnapData(snapshotCoeffs.current, sensitivity);\n    draw(snapCtx.current, 0, snapData.magnitudes, snapData.peaks, 'blue');\n  };\n  const unpackArrayFromSignal = signalString => {\n    if (signalString === '') {\n      return [];\n    }\n    const coeffsStrings = signalString.split(' ');\n    const newArray = [];\n    for (const element of coeffsStrings) {\n      newArray.push(parseFloat(element));\n    }\n    return newArray;\n  };\n  const startReceiveIfNecessary = session => {\n    if (!receiveEnabled.current && session) {\n      console.log('starting receive');\n      session.on(\"signal:lpc\", function (event) {\n        //console.log(event.data);\n        //setLastReceivedCoeffs(unpackArrayFromSignal(event.data)); // global\n        lastReceivedCoeffs.current = unpackArrayFromSignal(event.data); // global\n      });\n      receiveEnabled.current = true; // global\n    }\n  };\n\n  // onMount & onWillUnmount ------------------------------------------------\n  useEffect(() => {\n    refCtx.current = refCanvas.current.getContext('2d');\n    snapCtx.current = refSnapCanvas.current.getContext('2d');\n    let interval;\n    if (!stream && !getMediaInitiated.current) {\n      getMediaInitiated.current = true;\n      getMedia();\n    }\n    if (stream) {\n      // console.log('canvas has stream')\n      // console.log('stream.active = ' + stream.active)\n\n      // Anything that attaches to a DOM ele should be CREATED here with a ref.\n      // Once the refs are init'd/created, they can be passed to external scripts for maipulation.\n      if (!refAudioCtx.current) {\n        refAudioCtx.current = new AudioContext({\n          sampleRate: SAMPLE_RATE\n        });\n        analyser.current = refAudioCtx.current.createAnalyser();\n\n        // I assume this will be needed later...but I don't really know\n        microphone.current = refAudioCtx.current.createMediaStreamSource(stream);\n\n        // configs the analyser to our mic input\n        analyser.current = initAudio(microphone.current, refAudioCtx.current, analyser.current);\n      }\n\n      // ready to send to audioData to LPC script, which we will do at an interval\n      interval = setInterval(() => {\n        // console.log('audioData interval');\n        // creates a 1D array\n        audioData = new Float32Array(analyser.current.fftSize);\n        // updates that array with analyser data\n        analyser.current.getFloatTimeDomainData(audioData);\n        var filterOrder = DEFAULT_FILTER_ORDER;\n        // if (profile?.filterOrder) {\n        //   filterOrder = profile.filterOrder;\n        // }\n\n        // call to audio script\n        // if (user?.isOnline) {\n        //   startReceiveIfNecessary(vonageSession);\n        //   // isHotMic? TODO Add real condition.\n        //   if (amIHotMic()) {\n        //     updateCoeffsWithVonage(audioData, vonageSession, filterOrder);\n        //   }\n        // } else {\n        //   //console.log(\"OFFLINE COEFFS\");\n        //   //setLastReceivedCoeffs(updateCoeffsOffline(audioData));\n        //   lastReceivedCoeffs.current = updateCoeffsOffline(audioData, filterOrder);\n        // }\n        lastReceivedCoeffs.current = updateCoeffsOffline(audioData, filterOrder);\n      }, 1000 / BROADCASTS_PER_SECOND);\n\n      // console.log('audioReady. Starting render')\n      renderer();\n    }\n\n    // onUnmount -----------------\n    return () => {\n      clearInterval(interval);\n      console.log('cancel render / cancelAnimationFrame');\n      window.cancelAnimationFrame(refAniId.current);\n    };\n  }, [stream, isPaused, isTracking]);\n\n  // _________________________________________\n  return /*#__PURE__*/_jsxDEV(\"canvas\", {\n    className: \"fullWidth\",\n    ref: refCanvas,\n    ...rest,\n    children: \"Please use an HTML5 browser.\"\n  }, void 0, false, {\n    fileName: _jsxFileName,\n    lineNumber: 162,\n    columnNumber: 7\n  }, this);\n};\n_s(WaveCanvas, \"vvgquRQQMlHXKLZHqndMsKE0vOw=\", false, function () {\n  return [useUserMedia];\n});\n_c = WaveCanvas;\nexport default WaveCanvas;\nvar _c;\n$RefreshReg$(_c, \"WaveCanvas\");","map":{"version":3,"names":["useRef","useState","useEffect","useUserMedia","getSnapData","updateCoeffsWithVonage","broadcastClearSnapshot","broadcastSnapshot","initAudio","updateCoeffsOffline","updateData","FRAME_SIZE","jsxDEV","_jsxDEV","WaveCanvas","props","_s","DEFAULT_FILTER_ORDER","draw","isPaused","isTracking","strokeStyle","rest","SAMPLE_RATE","refAudioCtx","analyser","microphone","audioData","lastReceivedCoeffs","BROADCASTS_PER_SECOND","refCanvas","refCtx","refAniId","count","drawData","magnitudes","peaks","receiveEnabled","sensitivity","setSensitivity","snapCtx","refSnapCanvas","snapshotCoeffs","snapData","getMediaInitiated","stream","error","getMedia","renderer","ctx","current","displaySnapshot","window","requestAnimationFrame","unpackArrayFromSignal","signalString","coeffsStrings","split","newArray","element","push","parseFloat","startReceiveIfNecessary","session","console","log","on","event","data","getContext","interval","AudioContext","sampleRate","createAnalyser","createMediaStreamSource","setInterval","Float32Array","fftSize","getFloatTimeDomainData","filterOrder","clearInterval","cancelAnimationFrame","className","ref","children","fileName","_jsxFileName","lineNumber","columnNumber","_c","$RefreshReg$"],"sources":["/Users/shanyi/Desktop/Projects/UC_Trains_Voice/react-demo/src/gavt/Wave/WaveCanvas.jsx"],"sourcesContent":["// Manually created for GAVT project on 2024-06-03, based on commit 10df1d9 of the original project\nimport { useRef, useState, useEffect } from 'react'\nimport useUserMedia from './useUserMedia'\n\nimport { getSnapData, updateCoeffsWithVonage, broadcastClearSnapshot, broadcastSnapshot, initAudio, updateCoeffsOffline, updateData, FRAME_SIZE } from './waveAudio'\nimport './Wave.css'\n\n// =====================================================\nconst WaveCanvas = props => {  \n\n  const DEFAULT_FILTER_ORDER = 40;\n\n  const {draw, // this is the drawLoop sketch\n    isPaused, // req'd for renderer\n    isTracking,\n    strokeStyle = \"#50D3D6\",\n    ...rest} = props;\n\n  // Audio Vars ------\n  const SAMPLE_RATE = 44100;\n  const refAudioCtx = useRef(null);       \n  const analyser = useRef();\n  let microphone = useRef(null);\n  let audioData = [];                   // Holds the time domain data.\n\n  let lastReceivedCoeffs = [];   // self-explanatory\n  const BROADCASTS_PER_SECOND = 6; // used in audioData Interval, affects drawing smoothness, and will eventually be used with Vonage\n\n  // Canvas Vars -------\n  const refCanvas = useRef();   // html holds canvasEle\n  const refCtx = useRef();      // holds canvas drawing ctx\n  const refAniId = useRef();    // holds window.requestAnimationFrame\n  let count = 0                 // just a var to count the draw loops\n  let drawData = { magnitudes: [], peaks: [], } // set each audio interval\n  let receiveEnabled = useRef(false);\n  let [sensitivity, setSensitivity] = useState(50);\n\n  // Snapshot Feature --------------\n  const snapCtx = useRef();\n  const refSnapCanvas = useRef();\n  let snapshotCoeffs = useRef(null);\n  let snapData = {magnitudes: [], peaks: []}\n\n  let getMediaInitiated = useRef(false);\n  // Services ---------\n  const { stream, error, getMedia } = useUserMedia();\n\n  // ------------------------------------------------\n  const renderer = () => {\n    let ctx = refCtx.current;\n    count++\n    drawData = updateData(drawData, lastReceivedCoeffs, isTracking)\n\n    if(!isPaused) { // drawLoop. Drawing is passed in thru props.\n      draw(ctx, count, drawData.magnitudes, drawData.peaks, strokeStyle) // FOR WAVE CUSTOMIZATION!\n    } else { return }\n    if (snapshotCoeffs.current !== null) {\n      displaySnapshot();\n    }\n    refAniId.current = window.requestAnimationFrame(renderer, isPaused, isTracking)\n  }\n\n  const displaySnapshot = () => {\n    let snapData = getSnapData(snapshotCoeffs.current, sensitivity);\n    draw(snapCtx.current, 0, snapData.magnitudes, snapData.peaks, 'blue');\n  }\n\n  const unpackArrayFromSignal = (signalString) => {\n    if (signalString === '') {\n      return [];\n    }\n    const coeffsStrings = signalString.split(' ');\n    const newArray = [];\n    for (const element of coeffsStrings) {\n      newArray.push(parseFloat(element));\n    }\n    return newArray;\n  };\n\n  const startReceiveIfNecessary = (session) => {\n    if (!receiveEnabled.current && session) {\n      console.log('starting receive');\n      session.on(\"signal:lpc\", function (event) {\n        //console.log(event.data);\n        //setLastReceivedCoeffs(unpackArrayFromSignal(event.data)); // global\n        lastReceivedCoeffs.current = unpackArrayFromSignal(event.data); // global\n      });\n      receiveEnabled.current = true;                                     // global\n    }\n  };  \n\n  // onMount & onWillUnmount ------------------------------------------------\n  useEffect(() => { \n    refCtx.current = refCanvas.current.getContext('2d');\n    snapCtx.current = refSnapCanvas.current.getContext('2d');\n    let interval;\n\n    if (!stream && !getMediaInitiated.current) {\n      getMediaInitiated.current = true;\n      getMedia();\n    }\n\n    if (stream) {\n      // console.log('canvas has stream')\n      // console.log('stream.active = ' + stream.active)\n\n      // Anything that attaches to a DOM ele should be CREATED here with a ref.\n      // Once the refs are init'd/created, they can be passed to external scripts for maipulation.\n      if (!refAudioCtx.current) {\n        refAudioCtx.current = new AudioContext({sampleRate: SAMPLE_RATE,});\n        analyser.current = refAudioCtx.current.createAnalyser();\n\n        // I assume this will be needed later...but I don't really know\n        microphone.current = refAudioCtx.current.createMediaStreamSource(stream);\n\n        // configs the analyser to our mic input\n        analyser.current = initAudio(microphone.current, refAudioCtx.current, analyser.current)\n      }\n\n      // ready to send to audioData to LPC script, which we will do at an interval\n      interval = setInterval(() => {\n        // console.log('audioData interval');\n        // creates a 1D array\n        audioData = new Float32Array(analyser.current.fftSize);\n        // updates that array with analyser data\n        analyser.current.getFloatTimeDomainData(audioData);\n        var filterOrder = DEFAULT_FILTER_ORDER;\n        // if (profile?.filterOrder) {\n        //   filterOrder = profile.filterOrder;\n        // }\n\n        // call to audio script\n        // if (user?.isOnline) {\n        //   startReceiveIfNecessary(vonageSession);\n        //   // isHotMic? TODO Add real condition.\n        //   if (amIHotMic()) {\n        //     updateCoeffsWithVonage(audioData, vonageSession, filterOrder);\n        //   }\n        // } else {\n        //   //console.log(\"OFFLINE COEFFS\");\n        //   //setLastReceivedCoeffs(updateCoeffsOffline(audioData));\n        //   lastReceivedCoeffs.current = updateCoeffsOffline(audioData, filterOrder);\n        // }\n        lastReceivedCoeffs.current = updateCoeffsOffline(audioData, filterOrder);\n      }, 1000 / BROADCASTS_PER_SECOND);\n\n      // console.log('audioReady. Starting render')\n      renderer()\n    }\n\n    // onUnmount -----------------\n    return () => {\n      clearInterval(interval);\n      console.log('cancel render / cancelAnimationFrame')\n      window.cancelAnimationFrame(refAniId.current)\n    } \n  }, [stream, isPaused, isTracking])\n\n\n  // _________________________________________\n  return (\n      <canvas className=\"fullWidth\" ref={refCanvas} {...rest}>\n          Please use an HTML5 browser.\n      </canvas>\n  )\n}\n\nexport default WaveCanvas\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}