diff --git a/package-lock.json b/package-lock.json index 6b491de..aa00983 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,7 +8,6 @@ "name": "bpm-counter", "version": "0.1.0", "dependencies": { - "@ctrl/react-adsense": "^1.7.0", "@microsoft/applicationinsights-clickanalytics-js": "^2.8.8", "@microsoft/applicationinsights-react-js": "^3.4.0", "@microsoft/applicationinsights-web": "^2.8.8", @@ -26,7 +25,7 @@ "react-router-dom": "^5.3.0", "react-scripts": "^5.0.1", "react-toastify": "^8.0.2", - "realtime-bpm-analyzer": "^1.1.5", + "realtime-bpm-analyzer": "^4.0.2", "rollup": "^2.56.3", "rollup-plugin-node-resolve": "^5.2.0", "rollup-plugin-replace": "^2.2.0", @@ -2328,14 +2327,6 @@ "postcss-selector-parser": "^6.0.10" } }, - "node_modules/@ctrl/react-adsense": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@ctrl/react-adsense/-/react-adsense-1.7.0.tgz", - "integrity": "sha512-TrDGbAo8KRPHnX/Jtv9CkMV90vK7M/sz8KNECTQgcsHO4e5GyNZL3jqCY4WA0MCwfT48NH34qzyV9e2SWsceLw==", - "dependencies": { - "tslib": "^2.5.0" - } - }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", @@ -5180,25 +5171,6 @@ "node": ">= 4.0.0" } }, - "node_modules/audio-type": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/audio-type/-/audio-type-1.0.2.tgz", - "integrity": "sha512-vEbOFc2+he+/b5tLmnBINnHUYb3GDzW5tNPa9DHdyKdyLxO0w3V1Dtr9wjLswPXByCCt9uTRu6IzHZ/J/Om4uw==", - "dependencies": { - "is-flac": "^1.1.0", - "is-m4a": "^1.1.0", - "is-mp3": "^1.1.0", - "is-ogg": "^1.1.0", - "is-wav": "^1.1.0", - "read-chunk": "^2.0.0" - }, - "bin": { - "audio-type": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/audiomotion-analyzer": { "version": "3.6.1", "resolved": "https://registry.npmjs.org/audiomotion-analyzer/-/audiomotion-analyzer-3.6.1.tgz", @@ -5535,27 +5507,6 @@ "node": ">=8" } }, - "node_modules/biquad-coeffs-webaudio": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/biquad-coeffs-webaudio/-/biquad-coeffs-webaudio-1.2.0.tgz", - "integrity": "sha512-wLvCRy6dt5/KJBiViyzqFn2zf/mQnXvSfUbAXnD1U2sC+AG3AQY29N3dHJgnoDBytQMcjkuYguV/90m0BTcUOg==", - "dependencies": { - "biquad-coeffs-webaudio-v2": "^1.2.0" - } - }, - "node_modules/biquad-coeffs-webaudio-v1": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/biquad-coeffs-webaudio-v1/-/biquad-coeffs-webaudio-v1-1.2.0.tgz", - "integrity": "sha512-ozb34pekehZ8XmQFv4se+osI4GZYICOxkjgfD3YG0uxfvWmbZp4FSInNBZfTDTam7Sd3Chq2exlqasX+df14Tg==" - }, - "node_modules/biquad-coeffs-webaudio-v2": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/biquad-coeffs-webaudio-v2/-/biquad-coeffs-webaudio-v2-1.2.0.tgz", - "integrity": "sha512-xdK2tWv6AKab8sqnCgFBleJaxOHpW1HeY2tManUU2bpYYJFE2xhNHVVmKhroXZq2lfy7rjNNJOHK4Gm2y7LgIQ==", - "dependencies": { - "biquad-coeffs-webaudio-v1": "^1.2.0" - } - }, "node_modules/bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", @@ -8374,11 +8325,6 @@ "node": ">= 0.6" } }, - "node_modules/fourier-transform": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/fourier-transform/-/fourier-transform-1.1.2.tgz", - "integrity": "sha512-TjdHddt7Wul3RXvm3O5euI64aAzUPhE1rqzuAFsIu7Puyny6CNLgL8bbKtYoIK71HSF90o+9WjUmRsXmYGYD0Q==" - }, "node_modules/fraction.js": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", @@ -9315,14 +9261,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-flac": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-flac/-/is-flac-1.1.2.tgz", - "integrity": "sha512-bMCyh610qy9IAHHHxqMskwTbTHipJLRdcjrNkQjlwMJgAiA5DyVkBXF545xX+n/PFdlmUtG/2wAEV4WmdiJyrQ==", - "engines": { - "node": ">=4" - } - }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -9350,14 +9288,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-m4a": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-m4a/-/is-m4a-1.1.0.tgz", - "integrity": "sha512-8LPSOaBA4OvJYlxVUMKGckZeoJxd0VhTqkb7noLdbcwGJCaYce6KC4GFTcK8H1rmUeXcLcH2ywODpVLJSIbLtg==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-map": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", @@ -9371,14 +9301,6 @@ "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==" }, - "node_modules/is-mp3": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-mp3/-/is-mp3-1.1.3.tgz", - "integrity": "sha512-s9jAf4qmxd8MCOE0BRLzs9uZMM+hWWkIHBkPFOLU5NPT0ooCOaINRQ8ePBKWsfh1jOZr7Y7zFXpWxtIKaJhn4w==", - "engines": { - "node": ">=4" - } - }, "node_modules/is-negative-zero": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", @@ -9420,14 +9342,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-ogg": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-ogg/-/is-ogg-1.1.2.tgz", - "integrity": "sha512-5xNx56wkCD/WtIq2Ykzw6UhwtAEMT1+3II61wMEKgHjkCcEraCfOJi/XaOZWXMXVO+cvdhAHHBCaJHgx5xLagg==", - "engines": { - "node": ">=4" - } - }, "node_modules/is-path-inside": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", @@ -9564,14 +9478,6 @@ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" }, - "node_modules/is-wav": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-wav/-/is-wav-1.1.2.tgz", - "integrity": "sha512-gLOkWlnwd//lRpIhe2u3Ow3mMls/4DIvoLuXwfxpOd/JBuql099f0ZTxwxqHn9Lz+ZG+7ZIMKPyIKG3D7Fot7A==", - "engines": { - "node": ">=4" - } - }, "node_modules/is-weakmap": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", @@ -12215,11 +12121,6 @@ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" }, - "node_modules/nmap": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/nmap/-/nmap-1.1.0.tgz", - "integrity": "sha512-Mczjm9cSruux65U7fh6mWiSEpfmqVZFY5M4zGXz5VBI9tSFqrdLSqegeqC/IiUDh8mbC8JUF948bJz1VogdVyQ==" - }, "node_modules/no-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", @@ -14580,26 +14481,6 @@ "pify": "^2.3.0" } }, - "node_modules/read-chunk": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/read-chunk/-/read-chunk-2.1.0.tgz", - "integrity": "sha512-QQqB2O9KX/BnztP1xkTRsBxABcWHCXTqQYmEm/DdNId1nw+leKkZvV/g5oCKUrXolGtU3zouoIxMLToAYyDgDw==", - "dependencies": { - "pify": "^3.0.0", - "safe-buffer": "^5.1.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/read-chunk/node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", - "engines": { - "node": ">=4" - } - }, "node_modules/readable-stream": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", @@ -14625,13 +14506,10 @@ } }, "node_modules/realtime-bpm-analyzer": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/realtime-bpm-analyzer/-/realtime-bpm-analyzer-1.1.5.tgz", - "integrity": "sha512-Sho/K5osjMZXHlnpg1+pndr0PYAi4IX3OEpJzpw2Tmt4tUUWjw6hC1fJeonv6p7ll22d3XLqPF0QBpzO1O5XKQ==", - "deprecated": "deprecate version using scriptProcessorNode", - "dependencies": { - "web-audio-engine": "^0.13.4" - } + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/realtime-bpm-analyzer/-/realtime-bpm-analyzer-4.0.2.tgz", + "integrity": "sha512-F4PLzZ0KzDvkOg4C5YeTM7VJjrDakMpBNI3uRz3tOq+HDXW/p/pwuDXs6KB7EUpiiLwSQrlRIptugofeBTeGNA==", + "license": "MIT" }, "node_modules/recursive-readdir": { "version": "2.2.3", @@ -15145,12 +15023,6 @@ "url": "https://opencollective.com/webpack" } }, - "node_modules/scijs-window-functions": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/scijs-window-functions/-/scijs-window-functions-2.0.2.tgz", - "integrity": "sha512-VpMbP/mqbwOqZgSdkNRQgn/0sPrx0r5yhG99lyenoYFaw45vKN3BmTLNSaTaEV7d7s6s8viSaKR4uhOa+lsbFg==", - "deprecated": "This package has been renamed 'window-function'. The API is otherwise the same. Please switch." - }, "node_modules/select-hose": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", @@ -16643,16 +16515,6 @@ "node": ">=10.13.0" } }, - "node_modules/wav-decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/wav-decoder/-/wav-decoder-1.3.0.tgz", - "integrity": "sha512-4U6O/JNb1dPO90CO2YMTQ5N2plJcntm39vNMvRq9VZ4Vy5FzS7Lnx95N2QcYUyKYcZfCbhI//W3dSHA8YnOQyQ==" - }, - "node_modules/wav-encoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/wav-encoder/-/wav-encoder-1.3.0.tgz", - "integrity": "sha512-FXJdEu2qDOI+wbVYZpu21CS1vPEg5NaxNskBr4SaULpOJMrLE6xkH8dECa7PiS+ZoeyvP7GllWUAxPN3AvFSEw==" - }, "node_modules/wbuf": { "version": "1.7.3", "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", @@ -16661,23 +16523,6 @@ "minimalistic-assert": "^1.0.0" } }, - "node_modules/web-audio-engine": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/web-audio-engine/-/web-audio-engine-0.13.4.tgz", - "integrity": "sha512-ZglW6UMlHXXzHhHiMjhr6qMT1Jwg9OydRo1lg6T864+SaoPUnJtvD6AW4uWa+Gl++Cw8CkpIk/5Arc5QiKugJA==", - "dependencies": { - "audio-type": "^1.0.2", - "biquad-coeffs-webaudio": "^1.2.0", - "fourier-transform": "^1.0.2", - "nmap": "^1.1.0", - "scijs-window-functions": "^2.0.2", - "wav-decoder": "^1.1.0", - "wav-encoder": "^1.1.0" - }, - "engines": { - "node": ">= 4.0.0" - } - }, "node_modules/web-vitals": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-1.1.2.tgz", diff --git a/package.json b/package.json index 9bf2427..457f69f 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "react-router-dom": "^5.3.0", "react-scripts": "^5.0.1", "react-toastify": "^8.0.2", - "realtime-bpm-analyzer": "^1.1.5", + "realtime-bpm-analyzer": "^4.0.2", "rollup": "^2.56.3", "rollup-plugin-node-resolve": "^5.2.0", "rollup-plugin-replace": "^2.2.0", diff --git a/src/Home.js b/src/Home.js index 1dda2ba..513010f 100644 --- a/src/Home.js +++ b/src/Home.js @@ -1,8 +1,8 @@ -/* eslint-disable no-unused-vars */ +git /* eslint-disable no-unused-vars */ import './Home.css'; import Feedback from './Feedback.js'; import React, { useEffect, useState } from 'react'; -import RealTimeBPMAnalyzer from 'realtime-bpm-analyzer'; +import { createRealTimeBpmProcessor } from 'realtime-bpm-analyzer'; import AudioMotionAnalyzer from 'audiomotion-analyzer'; import { ToastContainer, toast } from 'react-toastify'; import 'react-toastify/dist/ReactToastify.css'; @@ -129,64 +129,53 @@ function Home(props) { window.location.reload(); }; - const onStream = (stream) => { + const onStream = async (stream) => { input = context.createMediaStreamSource(stream); - scriptProcessorNode = context.createScriptProcessor(bufferSize, 1, 1); - input.connect(scriptProcessorNode); - scriptProcessorNode.connect(context.destination); - - const onAudioProcess = new RealTimeBPMAnalyzer({ - debug: props.isDebug, - scriptNode: { - bufferSize: bufferSize, - numberOfInputChannels: 1, - numberOfOutputChannels: 1, - }, - computeBPMDelay: 5000, - stabilizationTime: 10000, + // Create the BPM processor node using the new API + const bpmNode = await createRealTimeBpmProcessor(context, { continuousAnalysis: true, - pushTime: 1000, - pushCallback: (err, bpm, threshold) => { - if (err) { - log.warn(`${err.name}: ${err.message}`); - - setIsResultReady(false); - return; - } + stabilizationTime: 10000, + debug: props.isDebug, + }); - if (bpm && bpm.length) { + // Connect the microphone input to the BPM processor + input.connect(bpmNode); + // Optionally connect to destination if you want to hear the audio + // bpmNode.connect(context.destination); + + // Listen for BPM events + bpmNode.port.onmessage = (event) => { + if (event.data.message === 'BPM') { + const bpmArr = event.data.data.bpm; + const threshold = event.data.data.threshold; + if (bpmArr && bpmArr.length) { setIsResultReady(true); setThreshold(Math.round(threshold * 100) / 100); + setPrimaryBPM(`${bpmArr[0].tempo}`); + setSecondaryBPM(`${bpmArr[1]?.tempo || ''}`); - setPrimaryBPM(`${bpm[0].tempo}`); - setSecondaryBPM(`${bpm[1].tempo}`); - - log.info(bpm); + log.info(bpmArr); log.info(`Threshold, ${threshold}`); ReactGA.event('detect', { mode: 'realtime', - bpm: bpm[0].tempo, + bpm: bpmArr[0].tempo, threshold: threshold, }); appInsights.trackEvent({ name: 'detect', properties: { mode: 'realtime', - bpm: bpm[0].tempo, + bpm: bpmArr[0].tempo, threshold: threshold, }, }); } - }, - onBpmStabilized: (threshold) => { - onAudioProcess.clearValidPeaks(threshold); - }, - }); - - scriptProcessorNode.onaudioprocess = (e) => { - onAudioProcess.analyze(e); + } + if (event.data.message === 'BPM_STABLE') { + // Optionally handle stabilized BPM + } }; }; diff --git a/yarn.lock b/yarn.lock index 14ef78a..f1a1a46 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1289,13 +1289,6 @@ resolved "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.2.0.tgz" integrity sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw== -"@ctrl/react-adsense@^1.7.0": - version "1.7.0" - resolved "https://registry.npmjs.org/@ctrl/react-adsense/-/react-adsense-1.7.0.tgz" - integrity sha512-TrDGbAo8KRPHnX/Jtv9CkMV90vK7M/sz8KNECTQgcsHO4e5GyNZL3jqCY4WA0MCwfT48NH34qzyV9e2SWsceLw== - dependencies: - tslib "^2.5.0" - "@eslint-community/eslint-utils@^4.2.0": version "4.4.0" resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz" @@ -2903,18 +2896,6 @@ at-least-node@^1.0.0: resolved "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz" integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== -audio-type@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/audio-type/-/audio-type-1.0.2.tgz" - integrity sha512-vEbOFc2+he+/b5tLmnBINnHUYb3GDzW5tNPa9DHdyKdyLxO0w3V1Dtr9wjLswPXByCCt9uTRu6IzHZ/J/Om4uw== - dependencies: - is-flac "^1.1.0" - is-m4a "^1.1.0" - is-mp3 "^1.1.0" - is-ogg "^1.1.0" - is-wav "^1.1.0" - read-chunk "^2.0.0" - audiomotion-analyzer@^3.5.0: version "3.6.1" resolved "https://registry.npmjs.org/audiomotion-analyzer/-/audiomotion-analyzer-3.6.1.tgz" @@ -3113,25 +3094,6 @@ binary-extensions@^2.0.0: resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== -biquad-coeffs-webaudio-v1@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/biquad-coeffs-webaudio-v1/-/biquad-coeffs-webaudio-v1-1.2.0.tgz" - integrity sha512-ozb34pekehZ8XmQFv4se+osI4GZYICOxkjgfD3YG0uxfvWmbZp4FSInNBZfTDTam7Sd3Chq2exlqasX+df14Tg== - -biquad-coeffs-webaudio-v2@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/biquad-coeffs-webaudio-v2/-/biquad-coeffs-webaudio-v2-1.2.0.tgz" - integrity sha512-xdK2tWv6AKab8sqnCgFBleJaxOHpW1HeY2tManUU2bpYYJFE2xhNHVVmKhroXZq2lfy7rjNNJOHK4Gm2y7LgIQ== - dependencies: - biquad-coeffs-webaudio-v1 "^1.2.0" - -biquad-coeffs-webaudio@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/biquad-coeffs-webaudio/-/biquad-coeffs-webaudio-1.2.0.tgz" - integrity sha512-wLvCRy6dt5/KJBiViyzqFn2zf/mQnXvSfUbAXnD1U2sC+AG3AQY29N3dHJgnoDBytQMcjkuYguV/90m0BTcUOg== - dependencies: - biquad-coeffs-webaudio-v2 "^1.2.0" - bluebird@^3.5.5: version "3.7.2" resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz" @@ -4861,11 +4823,6 @@ forwarded@0.2.0: resolved "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz" integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== -fourier-transform@^1.0.2: - version "1.1.2" - resolved "https://registry.npmjs.org/fourier-transform/-/fourier-transform-1.1.2.tgz" - integrity sha512-TjdHddt7Wul3RXvm3O5euI64aAzUPhE1rqzuAFsIu7Puyny6CNLgL8bbKtYoIK71HSF90o+9WjUmRsXmYGYD0Q== - fraction.js@^4.2.0: version "4.2.0" resolved "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz" @@ -5512,11 +5469,6 @@ is-extglob@^2.1.1: resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== -is-flac@^1.1.0: - version "1.1.2" - resolved "https://registry.npmjs.org/is-flac/-/is-flac-1.1.2.tgz" - integrity sha512-bMCyh610qy9IAHHHxqMskwTbTHipJLRdcjrNkQjlwMJgAiA5DyVkBXF545xX+n/PFdlmUtG/2wAEV4WmdiJyrQ== - is-fullwidth-code-point@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" @@ -5534,11 +5486,6 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" -is-m4a@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/is-m4a/-/is-m4a-1.1.0.tgz" - integrity sha512-8LPSOaBA4OvJYlxVUMKGckZeoJxd0VhTqkb7noLdbcwGJCaYce6KC4GFTcK8H1rmUeXcLcH2ywODpVLJSIbLtg== - is-map@^2.0.1, is-map@^2.0.2: version "2.0.2" resolved "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz" @@ -5549,11 +5496,6 @@ is-module@^1.0.0: resolved "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz" integrity sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g== -is-mp3@^1.1.0: - version "1.1.3" - resolved "https://registry.npmjs.org/is-mp3/-/is-mp3-1.1.3.tgz" - integrity sha512-s9jAf4qmxd8MCOE0BRLzs9uZMM+hWWkIHBkPFOLU5NPT0ooCOaINRQ8ePBKWsfh1jOZr7Y7zFXpWxtIKaJhn4w== - is-negative-zero@^2.0.2: version "2.0.2" resolved "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz" @@ -5576,11 +5518,6 @@ is-obj@^1.0.1: resolved "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz" integrity sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg== -is-ogg@^1.1.0: - version "1.1.2" - resolved "https://registry.npmjs.org/is-ogg/-/is-ogg-1.1.2.tgz" - integrity sha512-5xNx56wkCD/WtIq2Ykzw6UhwtAEMT1+3II61wMEKgHjkCcEraCfOJi/XaOZWXMXVO+cvdhAHHBCaJHgx5xLagg== - is-path-inside@^3.0.3: version "3.0.3" resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz" @@ -5661,11 +5598,6 @@ is-typedarray@^1.0.0: resolved "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== -is-wav@^1.1.0: - version "1.1.2" - resolved "https://registry.npmjs.org/is-wav/-/is-wav-1.1.2.tgz" - integrity sha512-gLOkWlnwd//lRpIhe2u3Ow3mMls/4DIvoLuXwfxpOd/JBuql099f0ZTxwxqHn9Lz+ZG+7ZIMKPyIKG3D7Fot7A== - is-weakmap@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz" @@ -6788,11 +6720,6 @@ neo-async@^2.6.2: resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== -nmap@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/nmap/-/nmap-1.1.0.tgz" - integrity sha512-Mczjm9cSruux65U7fh6mWiSEpfmqVZFY5M4zGXz5VBI9tSFqrdLSqegeqC/IiUDh8mbC8JUF948bJz1VogdVyQ== - no-case@^3.0.4: version "3.0.4" resolved "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz" @@ -7158,11 +7085,6 @@ pify@^2.3.0: resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz" - integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== - pirates@^4.0.1, pirates@^4.0.4: version "4.0.6" resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz" @@ -8105,14 +8027,6 @@ read-cache@^1.0.0: dependencies: pify "^2.3.0" -read-chunk@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/read-chunk/-/read-chunk-2.1.0.tgz" - integrity sha512-QQqB2O9KX/BnztP1xkTRsBxABcWHCXTqQYmEm/DdNId1nw+leKkZvV/g5oCKUrXolGtU3zouoIxMLToAYyDgDw== - dependencies: - pify "^3.0.0" - safe-buffer "^5.1.1" - readable-stream@^2.0.1: version "2.3.8" resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz" @@ -8142,12 +8056,10 @@ readdirp@~3.6.0: dependencies: picomatch "^2.2.1" -realtime-bpm-analyzer@^1.1.5: - version "1.1.5" - resolved "https://registry.npmjs.org/realtime-bpm-analyzer/-/realtime-bpm-analyzer-1.1.5.tgz" - integrity sha512-Sho/K5osjMZXHlnpg1+pndr0PYAi4IX3OEpJzpw2Tmt4tUUWjw6hC1fJeonv6p7ll22d3XLqPF0QBpzO1O5XKQ== - dependencies: - web-audio-engine "^0.13.4" +realtime-bpm-analyzer@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/realtime-bpm-analyzer/-/realtime-bpm-analyzer-4.0.2.tgz" + integrity sha512-F4PLzZ0KzDvkOg4C5YeTM7VJjrDakMpBNI3uRz3tOq+HDXW/p/pwuDXs6KB7EUpiiLwSQrlRIptugofeBTeGNA== recursive-readdir@^2.2.2: version "2.2.3" @@ -8385,7 +8297,7 @@ safe-array-concat@^1.0.0: has-symbols "^1.0.3" isarray "^2.0.5" -safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@>=5.1.0, safe-buffer@~5.2.0, safe-buffer@5.2.1: +safe-buffer@^5.1.0, safe-buffer@>=5.1.0, safe-buffer@~5.2.0, safe-buffer@5.2.1: version "5.2.1" resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -8484,11 +8396,6 @@ schema-utils@2.7.0: ajv "^6.12.2" ajv-keywords "^3.4.1" -scijs-window-functions@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/scijs-window-functions/-/scijs-window-functions-2.0.2.tgz" - integrity sha512-VpMbP/mqbwOqZgSdkNRQgn/0sPrx0r5yhG99lyenoYFaw45vKN3BmTLNSaTaEV7d7s6s8viSaKR4uhOa+lsbFg== - select-hose@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz" @@ -9212,7 +9119,7 @@ tsconfig-paths@^3.14.1: minimist "^1.2.6" strip-bom "^3.0.0" -tslib@*, tslib@^2.0.3, tslib@^2.5.0: +tslib@*, tslib@^2.0.3: version "2.6.0" resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz" integrity sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA== @@ -9454,16 +9361,6 @@ watchpack@^2.4.0: glob-to-regexp "^0.4.1" graceful-fs "^4.1.2" -wav-decoder@^1.1.0: - version "1.3.0" - resolved "https://registry.npmjs.org/wav-decoder/-/wav-decoder-1.3.0.tgz" - integrity sha512-4U6O/JNb1dPO90CO2YMTQ5N2plJcntm39vNMvRq9VZ4Vy5FzS7Lnx95N2QcYUyKYcZfCbhI//W3dSHA8YnOQyQ== - -wav-encoder@^1.1.0: - version "1.3.0" - resolved "https://registry.npmjs.org/wav-encoder/-/wav-encoder-1.3.0.tgz" - integrity sha512-FXJdEu2qDOI+wbVYZpu21CS1vPEg5NaxNskBr4SaULpOJMrLE6xkH8dECa7PiS+ZoeyvP7GllWUAxPN3AvFSEw== - wbuf@^1.1.0, wbuf@^1.7.3: version "1.7.3" resolved "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz" @@ -9471,19 +9368,6 @@ wbuf@^1.1.0, wbuf@^1.7.3: dependencies: minimalistic-assert "^1.0.0" -web-audio-engine@^0.13.4: - version "0.13.4" - resolved "https://registry.npmjs.org/web-audio-engine/-/web-audio-engine-0.13.4.tgz" - integrity sha512-ZglW6UMlHXXzHhHiMjhr6qMT1Jwg9OydRo1lg6T864+SaoPUnJtvD6AW4uWa+Gl++Cw8CkpIk/5Arc5QiKugJA== - dependencies: - audio-type "^1.0.2" - biquad-coeffs-webaudio "^1.2.0" - fourier-transform "^1.0.2" - nmap "^1.1.0" - scijs-window-functions "^2.0.2" - wav-decoder "^1.1.0" - wav-encoder "^1.1.0" - web-vitals@^1.0.1: version "1.1.2" resolved "https://registry.npmjs.org/web-vitals/-/web-vitals-1.1.2.tgz"