From 732fefda539e4f3cffc549f141848ebf3fc54992 Mon Sep 17 00:00:00 2001 From: Marek Malek Date: Fri, 20 Feb 2026 17:30:14 +0100 Subject: [PATCH 01/11] feat: 3 first charts --- packages/audiodocs/docs/core/audio-param.mdx | 7 +- packages/audiodocs/package.json | 1 + .../ExponentialRampToValueAtTime/index.tsx | 93 +++++++++ .../Charts/LinearRampToValueAtTime/index.tsx | 73 +++++++ .../Charts/SetValueAtTime/index.tsx | 70 +++++++ .../audiodocs/src/components/Charts/index.tsx | 5 + .../src/components/Charts/styles.module.css | 18 ++ packages/audiodocs/yarn.lock | 186 ++++++++++++++++-- 8 files changed, 435 insertions(+), 18 deletions(-) create mode 100644 packages/audiodocs/src/components/Charts/ExponentialRampToValueAtTime/index.tsx create mode 100644 packages/audiodocs/src/components/Charts/LinearRampToValueAtTime/index.tsx create mode 100644 packages/audiodocs/src/components/Charts/SetValueAtTime/index.tsx create mode 100644 packages/audiodocs/src/components/Charts/index.tsx create mode 100644 packages/audiodocs/src/components/Charts/styles.module.css diff --git a/packages/audiodocs/docs/core/audio-param.mdx b/packages/audiodocs/docs/core/audio-param.mdx index 93f476a25..94e29ee60 100644 --- a/packages/audiodocs/docs/core/audio-param.mdx +++ b/packages/audiodocs/docs/core/audio-param.mdx @@ -3,6 +3,7 @@ sidebar_position: 4 --- import { Optional, ReadOnly } from '@site/src/components/Badges'; +import { SetValueAtTimeChart, LinearRampToValueAtTimeChart, ExponentialRampToValueAtTimeChart } from '@site/src/components/Charts'; # AudioParam @@ -36,7 +37,7 @@ as they are more efficient for continuous changes. For more specific use cases, ::: -![](/img/setValueAtTime.png) + | Parameter | Type | Description | | :---: | :---: | :---- | @@ -56,7 +57,7 @@ as they are more efficient for continuous changes. For more specific use cases, Schedules a gradual linear change to the new value. The change begins at the time designated for the previous event. It follows a linear ramp to the `value`, achieving it by the specified `endTime`. -![](/img/linearRampToValueAtTime.png) + | Parameter | Type | Description | | :---: | :---: | :---- | @@ -76,7 +77,7 @@ The change begins at the time designated for the previous event. It follows a li Schedules a gradual exponential change to the new value. The change begins at the time designated for the previous event. It follows an exponential ramp to the `value`, achieving it by the specified `endTime`. -![](/img/exponentialRampToValueAtTime.png) + | Parameter | Type | Description | | :---: | :---: | :---- | diff --git a/packages/audiodocs/package.json b/packages/audiodocs/package.json index 81ceb1280..49bd58c71 100644 --- a/packages/audiodocs/package.json +++ b/packages/audiodocs/package.json @@ -54,6 +54,7 @@ "react-native-reanimated": "^4.0.3", "react-native-web": "^0.21.1", "react-native-worklets": "^0.4.1", + "recharts": "^3.7.0", "rehype-katex": "7", "remark-math": "6", "source-map": "^0.7.4", diff --git a/packages/audiodocs/src/components/Charts/ExponentialRampToValueAtTime/index.tsx b/packages/audiodocs/src/components/Charts/ExponentialRampToValueAtTime/index.tsx new file mode 100644 index 000000000..447c3fa7f --- /dev/null +++ b/packages/audiodocs/src/components/Charts/ExponentialRampToValueAtTime/index.tsx @@ -0,0 +1,93 @@ +import { LineChart, CartesianGrid, XAxis, YAxis, ReferenceLine, Label, Tooltip, Line} from "recharts"; + + +import styles from '../styles.module.css'; + +// Generate exponential ramp data with more intermediate points +const generateExponentialRampData = () => { + const startTime = 0.2; + const endTime = 0.8; + const startValue = 0.2; + const targetValue = 0.8; + const data = []; + + // Add points before the ramp + for (let time = 0.0; time < startTime; time += 0.1) { + data.push({ time: parseFloat(time.toFixed(1)), value: startValue }); + } + + // Generate exponential ramp points + const steps = 60; // More granular steps for smooth curve + for (let i = 0; i <= steps; i++) { + const t = i / steps; + const time = startTime + t * (endTime - startTime); + // Exponential interpolation: value = startValue * (targetValue / startValue)^t + const value = startValue * Math.pow(targetValue / startValue, t); + data.push({ time: parseFloat(time.toFixed(3)), value: parseFloat(value.toFixed(3)) }); + } + + // Add points after the ramp + for (let time = endTime + 0.1; time <= 0.9; time += 0.1) { + data.push({ time: parseFloat(time.toFixed(1)), value: targetValue }); + } + + return data; +}; + +const exponentialRampToValueAtTimeData = generateExponentialRampData(); + +const ExponentialRampToValueAtTimeChart = () => ( + + + + + + + + + + + + + + + +); + +export default ExponentialRampToValueAtTimeChart; diff --git a/packages/audiodocs/src/components/Charts/LinearRampToValueAtTime/index.tsx b/packages/audiodocs/src/components/Charts/LinearRampToValueAtTime/index.tsx new file mode 100644 index 000000000..b71530d72 --- /dev/null +++ b/packages/audiodocs/src/components/Charts/LinearRampToValueAtTime/index.tsx @@ -0,0 +1,73 @@ +import { LineChart, CartesianGrid, XAxis, YAxis, ReferenceLine, Label, Tooltip, Line} from "recharts"; + + +import styles from '../styles.module.css'; + +const linearRampToValueAtTimeData = [ + { time: 0.0, value: 0.2 }, + { time: 0.1, value: 0.2}, + { time: 0.2, value: 0.2 }, + { time: 0.3, value: 0.3 }, + { time: 0.4, value: 0.4 }, + { time: 0.5, value: 0.5 }, + { time: 0.6, value: 0.6 }, + { time: 0.7, value: 0.7 }, + { time: 0.8, value: 0.8 }, + { time: 0.9, value: 0.8 }, +]; + +const LinearRampToValueAtTimeChart = () => ( + + + + + + + + + + + + + + + +); + +export default LinearRampToValueAtTimeChart; \ No newline at end of file diff --git a/packages/audiodocs/src/components/Charts/SetValueAtTime/index.tsx b/packages/audiodocs/src/components/Charts/SetValueAtTime/index.tsx new file mode 100644 index 000000000..aeef0a52c --- /dev/null +++ b/packages/audiodocs/src/components/Charts/SetValueAtTime/index.tsx @@ -0,0 +1,70 @@ +import { LineChart, XAxis, YAxis, CartesianGrid, Tooltip, Line, ReferenceLine, Label } from 'recharts'; + +import styles from '../styles.module.css'; + +const setValueAtTimeData = [ + { time: 0.0, value: 0.2 }, + { time: 0.1, value: 0.2 }, + { time: 0.2, value: 0.2 }, + { time: 0.3, value: 0.2 }, + { time: 0.3, value: 0.8 }, + { time: 0.4, value: 0.8 }, + { time: 0.5, value: 0.8 }, + { time: 0.6, value: 0.8 }, + { time: 0.7, value: 0.8 }, + { time: 0.8, value: 0.8 }, + { time: 0.9, value: 0.8 }, +]; + +const SetValueAtTimeChart = () => ( + + + + + + + + + + + + + +); + +export default SetValueAtTimeChart; \ No newline at end of file diff --git a/packages/audiodocs/src/components/Charts/index.tsx b/packages/audiodocs/src/components/Charts/index.tsx new file mode 100644 index 000000000..2b3cf164c --- /dev/null +++ b/packages/audiodocs/src/components/Charts/index.tsx @@ -0,0 +1,5 @@ +import SetValueAtTimeChart from "./SetValueAtTime"; +import LinearRampToValueAtTimeChart from "./LinearRampToValueAtTime"; +import ExponentialRampToValueAtTimeChart from "./ExponentialRampToValueAtTime"; + +export { SetValueAtTimeChart, LinearRampToValueAtTimeChart, ExponentialRampToValueAtTimeChart }; \ No newline at end of file diff --git a/packages/audiodocs/src/components/Charts/styles.module.css b/packages/audiodocs/src/components/Charts/styles.module.css new file mode 100644 index 000000000..6122310b7 --- /dev/null +++ b/packages/audiodocs/src/components/Charts/styles.module.css @@ -0,0 +1,18 @@ +.chart { + width: 100%; + max-height: 70vh; + aspect-ratio: 3/2; +} + +.leadingLine { + color: var(--ifm-color-primary); +} + +.referenceLine { + color: var(--ifm-color-primary); +} + +.label { + fill: var(--ifm-font-color-base); + font-weight: normal; +} \ No newline at end of file diff --git a/packages/audiodocs/yarn.lock b/packages/audiodocs/yarn.lock index 07781ef6b..b2eb89120 100644 --- a/packages/audiodocs/yarn.lock +++ b/packages/audiodocs/yarn.lock @@ -1833,7 +1833,7 @@ vfile "^6.0.1" webpack "^5.88.1" -"@docusaurus/module-type-aliases@3.9.2": +"@docusaurus/module-type-aliases@3.9.2", "@docusaurus/module-type-aliases@^3.9.2": version "3.9.2" resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-3.9.2.tgz#993c7cb0114363dea5ef6855e989b3ad4b843a34" integrity sha512-8qVe2QA9hVLzvnxP46ysuofJUIc/yYQ82tvA/rBTrnpXtCjNSFLxEZfd5U8cYZuJIVlkPxamsIgwd5tGZXfvew== @@ -2104,10 +2104,10 @@ fs-extra "^11.1.1" tslib "^2.6.0" -"@docusaurus/tsconfig@3.7.0": - version "3.7.0" - resolved "https://registry.yarnpkg.com/@docusaurus/tsconfig/-/tsconfig-3.7.0.tgz#654dcc524e25b8809af0f1b0b42485c18c047ab5" - integrity sha512-vRsyj3yUZCjscgfgcFYjIsTcAru/4h4YH2/XAE8Rs7wWdnng98PgWKvP5ovVc4rmRpRg2WChVW0uOy2xHDvDBQ== +"@docusaurus/tsconfig@^3.9.2": + version "3.9.2" + resolved "https://registry.yarnpkg.com/@docusaurus/tsconfig/-/tsconfig-3.9.2.tgz#7f440e0ae665b841e1d487749037f26a0275f9c1" + integrity sha512-j6/Fp4Rlpxsc632cnRnl5HpOWeb6ZKssDj6/XzzAzVGXXfm9Eptx3rxCC+fDzySn9fHTS+CWJjPineCR1bB5WQ== "@docusaurus/types@3.9.2": version "3.9.2" @@ -3225,6 +3225,18 @@ resolved "https://registry.yarnpkg.com/@react-native/polyfills/-/polyfills-2.0.0.tgz#4c40b74655c83982c8cf47530ee7dc13d957b6aa" integrity sha512-K0aGNn1TjalKj+65D7ycc1//H9roAQ51GJVk5ZJQFb2teECGmzd86bYDC0aYdbRf7gtovescq4Zt6FR0tgXiHQ== +"@reduxjs/toolkit@1.x.x || 2.x.x": + version "2.11.2" + resolved "https://registry.yarnpkg.com/@reduxjs/toolkit/-/toolkit-2.11.2.tgz#582225acea567329ca6848583e7dd72580d38e82" + integrity sha512-Kd6kAHTA6/nUpp8mySPqj3en3dm0tdMIgbttnQ1xFMVpufoj+ADi8pXLBsd4xzTRHQa7t/Jv8W5UnCuW4kuWMQ== + dependencies: + "@standard-schema/spec" "^1.0.0" + "@standard-schema/utils" "^0.3.0" + immer "^11.0.0" + redux "^5.0.1" + redux-thunk "^3.1.0" + reselect "^5.1.0" + "@resvg/resvg-wasm@2.4.0": version "2.4.0" resolved "https://registry.yarnpkg.com/@resvg/resvg-wasm/-/resvg-wasm-2.4.0.tgz#e01164b9a267c822e1ff797daa2fb91b663ea6f0" @@ -3296,6 +3308,16 @@ micromark-util-character "^1.1.0" micromark-util-symbol "^1.0.1" +"@standard-schema/spec@^1.0.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@standard-schema/spec/-/spec-1.1.0.tgz#a79b55dbaf8604812f52d140b2c9ab41bc150bb8" + integrity sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w== + +"@standard-schema/utils@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@standard-schema/utils/-/utils-0.3.0.tgz#3d5e608f16c2390c10528e98e59aef6bf73cae7b" + integrity sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g== + "@svgr/babel-plugin-add-jsx-attribute@8.0.0": version "8.0.0" resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz#4001f5d5dd87fa13303e36ee106e3ff3a7eb8b22" @@ -3484,23 +3506,62 @@ dependencies: "@types/node" "*" +"@types/d3-array@^3.0.3": + version "3.2.2" + resolved "https://registry.yarnpkg.com/@types/d3-array/-/d3-array-3.2.2.tgz#e02151464d02d4a1b44646d0fcdb93faf88fde8c" + integrity sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw== + +"@types/d3-color@*": + version "3.1.3" + resolved "https://registry.yarnpkg.com/@types/d3-color/-/d3-color-3.1.3.tgz#368c961a18de721da8200e80bf3943fb53136af2" + integrity sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A== + +"@types/d3-ease@^3.0.0": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/d3-ease/-/d3-ease-3.0.2.tgz#e28db1bfbfa617076f7770dd1d9a48eaa3b6c51b" + integrity sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA== + +"@types/d3-interpolate@^3.0.1": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz#412b90e84870285f2ff8a846c6eb60344f12a41c" + integrity sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA== + dependencies: + "@types/d3-color" "*" + +"@types/d3-path@*": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@types/d3-path/-/d3-path-3.1.1.tgz#f632b380c3aca1dba8e34aa049bcd6a4af23df8a" + integrity sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg== + "@types/d3-scale-chromatic@^3.0.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz#dc6d4f9a98376f18ea50bad6c39537f1b5463c39" integrity sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ== -"@types/d3-scale@^4.0.3": +"@types/d3-scale@^4.0.2", "@types/d3-scale@^4.0.3": version "4.0.9" resolved "https://registry.yarnpkg.com/@types/d3-scale/-/d3-scale-4.0.9.tgz#57a2f707242e6fe1de81ad7bfcccaaf606179afb" integrity sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw== dependencies: "@types/d3-time" "*" -"@types/d3-time@*": +"@types/d3-shape@^3.1.0": + version "3.1.8" + resolved "https://registry.yarnpkg.com/@types/d3-shape/-/d3-shape-3.1.8.tgz#d1516cc508753be06852cd06758e3bb54a22b0e3" + integrity sha512-lae0iWfcDeR7qt7rA88BNiqdvPS5pFVPpo5OfjElwNaT2yyekbM0C9vK+yqBqEmHr6lDkRnYNoTBYlAgJa7a4w== + dependencies: + "@types/d3-path" "*" + +"@types/d3-time@*", "@types/d3-time@^3.0.0": version "3.0.4" resolved "https://registry.yarnpkg.com/@types/d3-time/-/d3-time-3.0.4.tgz#8472feecd639691450dd8000eb33edd444e1323f" integrity sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g== +"@types/d3-timer@^3.0.0": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/d3-timer/-/d3-timer-3.0.2.tgz#70bbda77dc23aa727413e22e214afa3f0e852f70" + integrity sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw== + "@types/debug@^4.0.0": version "4.1.12" resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.12.tgz#a155f21690871953410df4b6b6f53187f0500917" @@ -3893,6 +3954,11 @@ resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.11.tgz#11af57b127e32487774841f7a4e54eab166d03c4" integrity sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA== +"@types/use-sync-external-store@^0.0.6": + version "0.0.6" + resolved "https://registry.yarnpkg.com/@types/use-sync-external-store/-/use-sync-external-store-0.0.6.tgz#60be8d21baab8c305132eb9cb912ed497852aadc" + integrity sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg== + "@types/webxr@*": version "0.5.23" resolved "https://registry.yarnpkg.com/@types/webxr/-/webxr-0.5.23.tgz#fe2b76ffa9600d118f2fcdf855fa93bcf8e79f8c" @@ -5764,7 +5830,7 @@ cytoscape@^3.28.1: dependencies: internmap "^1.0.0" -"d3-array@2 - 3", "d3-array@2.10.0 - 3", "d3-array@2.5.0 - 3", d3-array@3, d3-array@^3.2.0: +"d3-array@2 - 3", "d3-array@2.10.0 - 3", "d3-array@2.5.0 - 3", d3-array@3, d3-array@^3.1.6, d3-array@^3.2.0: version "3.2.4" resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-3.2.4.tgz#15fec33b237f97ac5d7c986dc77da273a8ed0bb5" integrity sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg== @@ -5835,7 +5901,7 @@ d3-delaunay@6: iconv-lite "0.6" rw "1" -"d3-ease@1 - 3", d3-ease@3: +"d3-ease@1 - 3", d3-ease@3, d3-ease@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/d3-ease/-/d3-ease-3.0.1.tgz#9658ac38a2140d59d346160f1f6c30fda0bd12f4" integrity sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w== @@ -5873,7 +5939,7 @@ d3-hierarchy@3: resolved "https://registry.yarnpkg.com/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz#b01cd42c1eed3d46db77a5966cf726f8c09160c6" integrity sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA== -"d3-interpolate@1 - 3", "d3-interpolate@1.2.0 - 3", d3-interpolate@3: +"d3-interpolate@1 - 3", "d3-interpolate@1.2.0 - 3", d3-interpolate@3, d3-interpolate@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-3.0.1.tgz#3c47aa5b32c5b3dfb56ef3fd4342078a632b400d" integrity sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g== @@ -5921,7 +5987,7 @@ d3-scale-chromatic@3: d3-color "1 - 3" d3-interpolate "1 - 3" -d3-scale@4: +d3-scale@4, d3-scale@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-4.0.2.tgz#82b38e8e8ff7080764f8dcec77bd4be393689396" integrity sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ== @@ -5937,7 +6003,7 @@ d3-scale@4: resolved "https://registry.yarnpkg.com/d3-selection/-/d3-selection-3.0.0.tgz#c25338207efa72cc5b9bd1458a1a41901f1e1b31" integrity sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ== -d3-shape@3: +d3-shape@3, d3-shape@^3.1.0: version "3.2.0" resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-3.2.0.tgz#a1a839cbd9ba45f28674c69d7f855bcf91dfc6a5" integrity sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA== @@ -5958,14 +6024,14 @@ d3-shape@^1.2.0: dependencies: d3-time "1 - 3" -"d3-time@1 - 3", "d3-time@2.1.1 - 3", d3-time@3: +"d3-time@1 - 3", "d3-time@2.1.1 - 3", d3-time@3, d3-time@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-3.1.0.tgz#9310db56e992e3c0175e1ef385e545e48a9bb5c7" integrity sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q== dependencies: d3-array "2 - 3" -"d3-timer@1 - 3", d3-timer@3: +"d3-timer@1 - 3", d3-timer@3, d3-timer@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-3.0.1.tgz#6284d2a2708285b1abb7e201eda4380af35e63b0" integrity sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA== @@ -6065,6 +6131,11 @@ decamelize@^1.2.0: resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== +decimal.js-light@^2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/decimal.js-light/-/decimal.js-light-2.5.1.tgz#134fd32508f19e208f4fb2f8dac0d2626a867934" + integrity sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg== + decode-named-character-reference@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decode-named-character-reference/-/decode-named-character-reference-1.2.0.tgz#25c32ae6dd5e21889549d40f676030e9514cc0ed" @@ -6490,6 +6561,11 @@ es-set-tostringtag@^2.1.0: has-tostringtag "^1.0.2" hasown "^2.0.2" +es-toolkit@^1.39.3: + version "1.44.0" + resolved "https://registry.yarnpkg.com/es-toolkit/-/es-toolkit-1.44.0.tgz#b363b436b6115c3cc9cc21954c1e08ecdaa51c8c" + integrity sha512-6penXeZalaV88MM3cGkFZZfOoLGWshWWfdy0tWw/RlVVyhvMaWSBTOvXNeiW3e5FwdS5ePW0LGEu17zT139ktg== + esast-util-from-estree@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/esast-util-from-estree/-/esast-util-from-estree-2.0.0.tgz#8d1cfb51ad534d2f159dc250e604f3478a79f1ad" @@ -6778,6 +6854,11 @@ eventemitter3@^4.0.0, eventemitter3@^4.0.4: resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== +eventemitter3@^5.0.1: + version "5.0.4" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.4.tgz#a86d66170433712dde814707ac52b5271ceb1feb" + integrity sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw== + events@^3.2.0: version "3.3.0" resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" @@ -7871,6 +7952,16 @@ image-size@^2.0.2: resolved "https://registry.yarnpkg.com/image-size/-/image-size-2.0.2.tgz#84a7b43704db5736f364bf0d1b029821299b4bdc" integrity sha512-IRqXKlaXwgSMAMtpNzZa1ZAe8m+Sa1770Dhk8VkSsP9LS+iHD62Zd8FQKs8fbPiagBE7BzoFX23cxFnwshpV6w== +immer@^10.1.1: + version "10.2.0" + resolved "https://registry.yarnpkg.com/immer/-/immer-10.2.0.tgz#88a4ce06a1af64172d254b70f7cb04df51c871b1" + integrity sha512-d/+XTN3zfODyjr89gM3mPq1WNX2B8pYsu7eORitdwyA2sBubnTl3laYlBk4sXY5FUa5qTZGBDPJICVbvqzjlbw== + +immer@^11.0.0: + version "11.1.4" + resolved "https://registry.yarnpkg.com/immer/-/immer-11.1.4.tgz#37aee86890b134a8f1a2fadd44361fb86c6ae67e" + integrity sha512-XREFCPo6ksxVzP4E0ekD5aMdf8WMwmdNaz6vuvxgI40UaEiu6q3p8X52aU6GdyvLY3XXX/8R7JOTXStz/nBbRw== + import-fresh@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" @@ -12073,6 +12164,14 @@ react-reconciler@0.27.0: loose-envify "^1.1.0" scheduler "^0.21.0" +"react-redux@8.x.x || 9.x.x": + version "9.2.0" + resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-9.2.0.tgz#96c3ab23fb9a3af2cb4654be4b51c989e32366f5" + integrity sha512-ROY9fvHhwOD9ySfrF0wmvu//bKCQ6AeZZq1nJNtbDC+kk5DuSuNX/n6YWYF/SYy7bSba4D4FSz8DJeKY/S/r+g== + dependencies: + "@types/use-sync-external-store" "^0.0.6" + use-sync-external-store "^1.4.0" + react-refresh@^0.4.0: version "0.4.3" resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.4.3.tgz#966f1750c191672e76e16c2efa569150cc73ab53" @@ -12188,6 +12287,23 @@ recast@^0.21.0: source-map "~0.6.1" tslib "^2.0.1" +recharts@^3.7.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/recharts/-/recharts-3.7.0.tgz#e3c72656ba18841085293e83bfc9a4f78b20abdd" + integrity sha512-l2VCsy3XXeraxIID9fx23eCb6iCBsxUQDnE8tWm6DFdszVAO7WVY/ChAD9wVit01y6B2PMupYiMmQwhgPHc9Ew== + dependencies: + "@reduxjs/toolkit" "1.x.x || 2.x.x" + clsx "^2.1.1" + decimal.js-light "^2.5.1" + es-toolkit "^1.39.3" + eventemitter3 "^5.0.1" + immer "^10.1.1" + react-redux "8.x.x || 9.x.x" + reselect "5.1.1" + tiny-invariant "^1.3.3" + use-sync-external-store "^1.2.2" + victory-vendor "^37.0.2" + rechoir@^0.8.0: version "0.8.0" resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.8.0.tgz#49f866e0d32146142da3ad8f0eff352b3215ff22" @@ -12235,6 +12351,16 @@ recma-stringify@^1.0.0: unified "^11.0.0" vfile "^6.0.0" +redux-thunk@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-3.1.0.tgz#94aa6e04977c30e14e892eae84978c1af6058ff3" + integrity sha512-NW2r5T6ksUKXCabzhL9z+h206HQw/NJkcLm1GPImRQ8IzfXwRGqjVhKJGauHirT0DAuyy6hjdnMZaRoAcy0Klw== + +redux@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/redux/-/redux-5.0.1.tgz#97fa26881ce5746500125585d5642c77b6e9447b" + integrity sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w== + reflect-metadata@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.2.2.tgz#400c845b6cba87a21f2c65c4aeb158f4fa4d9c5b" @@ -12499,6 +12625,11 @@ requires-port@^1.0.0: resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== +reselect@5.1.1, reselect@^5.1.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/reselect/-/reselect-5.1.1.tgz#c766b1eb5d558291e5e550298adb0becc24bb72e" + integrity sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w== + reselect@^4.1.7: version "4.1.8" resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.1.8.tgz#3f5dc671ea168dccdeb3e141236f69f02eaec524" @@ -13464,7 +13595,7 @@ tiny-inflate@^1.0.0: resolved "https://registry.yarnpkg.com/tiny-inflate/-/tiny-inflate-1.0.3.tgz#122715494913a1805166aaf7c93467933eea26c4" integrity sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw== -tiny-invariant@^1.0.2: +tiny-invariant@^1.0.2, tiny-invariant@^1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.3.3.tgz#46680b7a873a0d5d10005995eb90a70d74d60127" integrity sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg== @@ -13941,6 +14072,11 @@ use-sync-external-store@^1.0.0: resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.5.0.tgz#55122e2a3edd2a6c106174c27485e0fd59bcfca0" integrity sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A== +use-sync-external-store@^1.2.2, use-sync-external-store@^1.4.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz#b174bfa65cb2b526732d9f2ac0a408027876f32d" + integrity sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w== + usehooks-ts@^2.9.1: version "2.16.0" resolved "https://registry.yarnpkg.com/usehooks-ts/-/usehooks-ts-2.16.0.tgz#31deaa2f1147f65666aae925bd890b54e63b0d3f" @@ -14070,6 +14206,26 @@ vfile@^6.0.0, vfile@^6.0.1: "@types/unist" "^3.0.0" vfile-message "^4.0.0" +victory-vendor@^37.0.2: + version "37.3.6" + resolved "https://registry.yarnpkg.com/victory-vendor/-/victory-vendor-37.3.6.tgz#401ac4b029a0b3d33e0cba8e8a1d765c487254da" + integrity sha512-SbPDPdDBYp+5MJHhBCAyI7wKM3d5ivekigc2Dk2s7pgbZ9wIgIBYGVw4zGHBml/qTFbexrofXW6Gu4noGxrOwQ== + dependencies: + "@types/d3-array" "^3.0.3" + "@types/d3-ease" "^3.0.0" + "@types/d3-interpolate" "^3.0.1" + "@types/d3-scale" "^4.0.2" + "@types/d3-shape" "^3.1.0" + "@types/d3-time" "^3.0.0" + "@types/d3-timer" "^3.0.0" + d3-array "^3.1.6" + d3-ease "^3.0.1" + d3-interpolate "^3.0.1" + d3-scale "^4.0.2" + d3-shape "^3.1.0" + d3-time "^3.0.0" + d3-timer "^3.0.1" + vlq@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/vlq/-/vlq-1.0.1.tgz#c003f6e7c0b4c1edd623fd6ee50bbc0d6a1de468" From b2138cc36114cda0884c2b7ede8279e1ea27a04f Mon Sep 17 00:00:00 2001 From: Marek Malek Date: Fri, 20 Feb 2026 17:30:53 +0100 Subject: [PATCH 02/11] feat: add setTargetAtTime --- packages/audiodocs/docs/core/audio-param.mdx | 3 +- .../Charts/SetTargetAtTime/index.tsx | 81 +++++++++++++++++++ .../audiodocs/src/components/Charts/index.tsx | 3 +- 3 files changed, 85 insertions(+), 2 deletions(-) create mode 100644 packages/audiodocs/src/components/Charts/SetTargetAtTime/index.tsx diff --git a/packages/audiodocs/docs/core/audio-param.mdx b/packages/audiodocs/docs/core/audio-param.mdx index 94e29ee60..c76a7ce86 100644 --- a/packages/audiodocs/docs/core/audio-param.mdx +++ b/packages/audiodocs/docs/core/audio-param.mdx @@ -3,7 +3,7 @@ sidebar_position: 4 --- import { Optional, ReadOnly } from '@site/src/components/Badges'; -import { SetValueAtTimeChart, LinearRampToValueAtTimeChart, ExponentialRampToValueAtTimeChart } from '@site/src/components/Charts'; +import {SetValueAtTimeChart, LinearRampToValueAtTimeChart, ExponentialRampToValueAtTimeChart, SetTargetAtTimeChart } from '@site/src/components/Charts'; # AudioParam @@ -98,6 +98,7 @@ Schedules a gradual change to the new value at the start time. This method is useful for decay or release portions of [ADSR envelopes](/docs/effects/gain-node#envelope---adsr). ![](/img/setTargetAtTime.png) + | Parameter | Type | Description | | :---: | :---: | :---- | diff --git a/packages/audiodocs/src/components/Charts/SetTargetAtTime/index.tsx b/packages/audiodocs/src/components/Charts/SetTargetAtTime/index.tsx new file mode 100644 index 000000000..b64dc80d7 --- /dev/null +++ b/packages/audiodocs/src/components/Charts/SetTargetAtTime/index.tsx @@ -0,0 +1,81 @@ +import { LineChart, XAxis, YAxis, CartesianGrid, Tooltip, Line, ReferenceLine, Label } from 'recharts'; + +import styles from '../styles.module.css'; + +const generateSetTargetAtTimeData = () => { + const startTime = 0.3; + const timeConstant = 0.1; + const previousValue = 0.2; + const targetValue = 0.8; + const data = []; + + // Add points before the change + for (let time = 0.0; time < startTime; time += 0.1) { + data.push({ time: parseFloat(time.toFixed(1)), value: previousValue }); + } + + // Generate points after the change using the formula + const steps = 60; // More granular steps for smooth curve + + for (let i = 0; i < steps; i++) { + const t = i / steps; + const time = startTime + t * (0.9 - startTime); // Spread points until 0.9 + const value = targetValue + (previousValue - targetValue) * Math.exp(-(time - startTime) / timeConstant); + data.push({ time: parseFloat(time.toFixed(3)), value: parseFloat(value.toFixed(3)) }); + } + + return data; +} + +const SetTargetAtTimeChart = () => ( + + + + + + + + + + + + + +); + +export default SetTargetAtTimeChart; \ No newline at end of file diff --git a/packages/audiodocs/src/components/Charts/index.tsx b/packages/audiodocs/src/components/Charts/index.tsx index 2b3cf164c..8798dc344 100644 --- a/packages/audiodocs/src/components/Charts/index.tsx +++ b/packages/audiodocs/src/components/Charts/index.tsx @@ -1,5 +1,6 @@ import SetValueAtTimeChart from "./SetValueAtTime"; import LinearRampToValueAtTimeChart from "./LinearRampToValueAtTime"; import ExponentialRampToValueAtTimeChart from "./ExponentialRampToValueAtTime"; +import SetTargetAtTimeChart from "./SetTargetAtTime"; -export { SetValueAtTimeChart, LinearRampToValueAtTimeChart, ExponentialRampToValueAtTimeChart }; \ No newline at end of file +export { SetValueAtTimeChart, LinearRampToValueAtTimeChart, ExponentialRampToValueAtTimeChart, SetTargetAtTimeChart }; \ No newline at end of file From b501bac67d73a36a86261f280d86335982b4f5fd Mon Sep 17 00:00:00 2001 From: Marek Malek Date: Fri, 20 Feb 2026 17:31:00 +0100 Subject: [PATCH 03/11] feat: add referenceLabel --- packages/audiodocs/docs/core/audio-param.mdx | 1 - .../Charts/SetTargetAtTime/index.tsx | 74 ++++++++++++++++++- .../src/components/Charts/styles.module.css | 7 ++ 3 files changed, 79 insertions(+), 3 deletions(-) diff --git a/packages/audiodocs/docs/core/audio-param.mdx b/packages/audiodocs/docs/core/audio-param.mdx index c76a7ce86..9f490cb3b 100644 --- a/packages/audiodocs/docs/core/audio-param.mdx +++ b/packages/audiodocs/docs/core/audio-param.mdx @@ -97,7 +97,6 @@ The change begins at the time designated for the previous event. It follows an e Schedules a gradual change to the new value at the start time. This method is useful for decay or release portions of [ADSR envelopes](/docs/effects/gain-node#envelope---adsr). -![](/img/setTargetAtTime.png) | Parameter | Type | Description | diff --git a/packages/audiodocs/src/components/Charts/SetTargetAtTime/index.tsx b/packages/audiodocs/src/components/Charts/SetTargetAtTime/index.tsx index b64dc80d7..ae4f1dfc3 100644 --- a/packages/audiodocs/src/components/Charts/SetTargetAtTime/index.tsx +++ b/packages/audiodocs/src/components/Charts/SetTargetAtTime/index.tsx @@ -1,7 +1,67 @@ -import { LineChart, XAxis, YAxis, CartesianGrid, Tooltip, Line, ReferenceLine, Label } from 'recharts'; +import { LineChart, XAxis, YAxis, CartesianGrid, Tooltip, Line, ReferenceLine, Label, ReferenceDot } from 'recharts'; import styles from '../styles.module.css'; +const CustomLabelWithArrow = (props: any) => { + const { viewBox, cx, cy } = props; + + // Use cx/cy if available (from ReferenceDot), otherwise fallback to viewBox + const dotX = cx || viewBox?.cx || viewBox?.x || 0; + const dotY = cy || viewBox?.cy || viewBox?.y || 0; + + // Position label below the dot + const labelY = dotY + 30; + const arrowStartY = labelY; + const arrowEndY = dotY + 8; + + return ( + + {/* Arrow pointing from label to dot */} + + + + + + + {/* Label text */} + + timeConstant controls + + + the change rate + + + ); +}; + const generateSetTargetAtTimeData = () => { const startTime = 0.3; const timeConstant = 0.1; @@ -74,8 +134,18 @@ const SetTargetAtTimeChart = () => ( activeDot={false} isAnimationActive={true} /> + } + /> ); -export default SetTargetAtTimeChart; \ No newline at end of file +export default SetTargetAtTimeChart; \ No newline at end of file diff --git a/packages/audiodocs/src/components/Charts/styles.module.css b/packages/audiodocs/src/components/Charts/styles.module.css index 6122310b7..b5431e6e3 100644 --- a/packages/audiodocs/src/components/Charts/styles.module.css +++ b/packages/audiodocs/src/components/Charts/styles.module.css @@ -15,4 +15,11 @@ .label { fill: var(--ifm-font-color-base); font-weight: normal; + font-size: medium; +} + +.referenceLabel { + fill: var(--ifm-font-color-base); + font-weight: normal; + font-size: small; } \ No newline at end of file From 47e8de6e305ee0065fe17377e0f3fa3cc3e05bd5 Mon Sep 17 00:00:00 2001 From: Marek Malek Date: Fri, 20 Feb 2026 17:31:05 +0100 Subject: [PATCH 04/11] feat: add setValueCurveAtTime --- packages/audiodocs/docs/core/audio-param.mdx | 4 +- .../Charts/SetValueCurveAtTime/index.tsx | 77 +++++++++++++++++++ .../audiodocs/src/components/Charts/index.tsx | 3 +- 3 files changed, 81 insertions(+), 3 deletions(-) create mode 100644 packages/audiodocs/src/components/Charts/SetValueCurveAtTime/index.tsx diff --git a/packages/audiodocs/docs/core/audio-param.mdx b/packages/audiodocs/docs/core/audio-param.mdx index 9f490cb3b..ffe5c9368 100644 --- a/packages/audiodocs/docs/core/audio-param.mdx +++ b/packages/audiodocs/docs/core/audio-param.mdx @@ -3,7 +3,7 @@ sidebar_position: 4 --- import { Optional, ReadOnly } from '@site/src/components/Badges'; -import {SetValueAtTimeChart, LinearRampToValueAtTimeChart, ExponentialRampToValueAtTimeChart, SetTargetAtTimeChart } from '@site/src/components/Charts'; +import { SetValueAtTimeChart, LinearRampToValueAtTimeChart, ExponentialRampToValueAtTimeChart, SetTargetAtTimeChart, SetValueCurveAtTimeChart } from '@site/src/components/Charts'; # AudioParam @@ -118,7 +118,7 @@ This method is useful for decay or release portions of [ADSR envelopes](/docs/ef Schedules the parameters's value change following a curve defined by given array. -![](/img/setValueCurveAtTime.png) + | Parameter | Type | Description | | :---: | :---: | :---- | diff --git a/packages/audiodocs/src/components/Charts/SetValueCurveAtTime/index.tsx b/packages/audiodocs/src/components/Charts/SetValueCurveAtTime/index.tsx new file mode 100644 index 000000000..16d95ab48 --- /dev/null +++ b/packages/audiodocs/src/components/Charts/SetValueCurveAtTime/index.tsx @@ -0,0 +1,77 @@ +import { LineChart, XAxis, YAxis, CartesianGrid, Tooltip, Line, ReferenceLine, Label, ReferenceDot } from 'recharts'; + +import styles from '../styles.module.css'; + + +const setValueCurveAtTimeData = [ + { time: 0, value: 0.2 }, + { time: 0.1, value: 0.2}, + { time: 0.2, value: 0.2}, + { time: 0.2, value: 0.5}, + { time: 0.3, value: 0.35}, + { time: 0.4, value: 0.6}, + { time: 0.5, value: 0.45}, + { time: 0.6, value: 0.7}, + { time: 0.7, value: 0.7}, + { time: 0.8, value: 0.7}, + { time: 0.9, value: 0.7}, +]; + +const SetValueCurveAtTimeChart = () => ( + + + + + + + + + + + + + + + + + + + +); + +export default SetValueCurveAtTimeChart; \ No newline at end of file diff --git a/packages/audiodocs/src/components/Charts/index.tsx b/packages/audiodocs/src/components/Charts/index.tsx index 8798dc344..96eeb0929 100644 --- a/packages/audiodocs/src/components/Charts/index.tsx +++ b/packages/audiodocs/src/components/Charts/index.tsx @@ -2,5 +2,6 @@ import SetValueAtTimeChart from "./SetValueAtTime"; import LinearRampToValueAtTimeChart from "./LinearRampToValueAtTime"; import ExponentialRampToValueAtTimeChart from "./ExponentialRampToValueAtTime"; import SetTargetAtTimeChart from "./SetTargetAtTime"; +import SetValueCurveAtTimeChart from "./SetValueCurveAtTime"; -export { SetValueAtTimeChart, LinearRampToValueAtTimeChart, ExponentialRampToValueAtTimeChart, SetTargetAtTimeChart }; \ No newline at end of file +export { SetValueAtTimeChart, LinearRampToValueAtTimeChart, ExponentialRampToValueAtTimeChart, SetTargetAtTimeChart, SetValueCurveAtTimeChart }; \ No newline at end of file From afd3a9852596466e65a2bdc75da8437c8c913665 Mon Sep 17 00:00:00 2001 From: Marek Malek Date: Fri, 20 Feb 2026 17:31:36 +0100 Subject: [PATCH 05/11] fix: labels --- .../components/Charts/SetValueCurveAtTime/index.tsx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/audiodocs/src/components/Charts/SetValueCurveAtTime/index.tsx b/packages/audiodocs/src/components/Charts/SetValueCurveAtTime/index.tsx index 16d95ab48..e4365b1a8 100644 --- a/packages/audiodocs/src/components/Charts/SetValueCurveAtTime/index.tsx +++ b/packages/audiodocs/src/components/Charts/SetValueCurveAtTime/index.tsx @@ -65,11 +65,11 @@ const SetValueCurveAtTimeChart = () => ( activeDot={false} isAnimationActive={true} /> - - - - - + + + + + ); From 253aa80eb07db572332bb643af7f4ad666dcca1b Mon Sep 17 00:00:00 2001 From: Marek Malek Date: Fri, 20 Feb 2026 17:31:47 +0100 Subject: [PATCH 06/11] refactor: add base chart component --- .../ExponentialRampToValueAtTime/index.tsx | 109 ++++++++---------- .../Charts/LinearRampToValueAtTime/index.tsx | 47 +------- .../Charts/SetTargetAtTime/index.tsx | 46 +------- .../Charts/SetValueAtTime/index.tsx | 36 +----- .../Charts/SetValueCurveAtTime/index.tsx | 59 ++-------- .../Charts/common/AudioParamChartBase.tsx | 76 ++++++++++++ .../audiodocs/src/components/Charts/index.tsx | 6 +- 7 files changed, 156 insertions(+), 223 deletions(-) create mode 100644 packages/audiodocs/src/components/Charts/common/AudioParamChartBase.tsx diff --git a/packages/audiodocs/src/components/Charts/ExponentialRampToValueAtTime/index.tsx b/packages/audiodocs/src/components/Charts/ExponentialRampToValueAtTime/index.tsx index 447c3fa7f..a8829681a 100644 --- a/packages/audiodocs/src/components/Charts/ExponentialRampToValueAtTime/index.tsx +++ b/packages/audiodocs/src/components/Charts/ExponentialRampToValueAtTime/index.tsx @@ -1,10 +1,13 @@ -import { LineChart, CartesianGrid, XAxis, YAxis, ReferenceLine, Label, Tooltip, Line} from "recharts"; - +import { + Label, + ReferenceLine +} from 'recharts'; +import { FC } from 'react'; +import AudioParamChartBase, { AudioParamDataPoint } from '../common/AudioParamChartBase'; import styles from '../styles.module.css'; -// Generate exponential ramp data with more intermediate points -const generateExponentialRampData = () => { +const generateExponentialRampData = (): AudioParamDataPoint[] => { const startTime = 0.2; const endTime = 0.8; const startValue = 0.2; @@ -17,13 +20,16 @@ const generateExponentialRampData = () => { } // Generate exponential ramp points - const steps = 60; // More granular steps for smooth curve + const steps = 60; for (let i = 0; i <= steps; i++) { const t = i / steps; const time = startTime + t * (endTime - startTime); // Exponential interpolation: value = startValue * (targetValue / startValue)^t const value = startValue * Math.pow(targetValue / startValue, t); - data.push({ time: parseFloat(time.toFixed(3)), value: parseFloat(value.toFixed(3)) }); + data.push({ + time: parseFloat(time.toFixed(3)), + value: parseFloat(value.toFixed(3)), + }); } // Add points after the ramp @@ -34,60 +40,41 @@ const generateExponentialRampData = () => { return data; }; -const exponentialRampToValueAtTimeData = generateExponentialRampData(); - -const ExponentialRampToValueAtTimeChart = () => ( - - - - - - - - - - - - - - - +const ExponentialRampToValueAtTimeChart: FC = () => ( + + + + + + + + + + ); - + export default ExponentialRampToValueAtTimeChart; diff --git a/packages/audiodocs/src/components/Charts/LinearRampToValueAtTime/index.tsx b/packages/audiodocs/src/components/Charts/LinearRampToValueAtTime/index.tsx index b71530d72..3d95e90cb 100644 --- a/packages/audiodocs/src/components/Charts/LinearRampToValueAtTime/index.tsx +++ b/packages/audiodocs/src/components/Charts/LinearRampToValueAtTime/index.tsx @@ -1,6 +1,8 @@ -import { LineChart, CartesianGrid, XAxis, YAxis, ReferenceLine, Label, Tooltip, Line} from "recharts"; +import { Label, ReferenceLine } from "recharts"; +import { FC } from "react"; +import AudioParamChartBase, { AudioParamChartBaseProps } from "../common/AudioParamChartBase"; import styles from '../styles.module.css'; const linearRampToValueAtTimeData = [ @@ -16,34 +18,8 @@ const linearRampToValueAtTimeData = [ { time: 0.9, value: 0.8 }, ]; -const LinearRampToValueAtTimeChart = () => ( - - - - +const LinearRampToValueAtTimeChart: FC = () => ( + @@ -56,18 +32,7 @@ const LinearRampToValueAtTimeChart = () => ( - - - + ); export default LinearRampToValueAtTimeChart; \ No newline at end of file diff --git a/packages/audiodocs/src/components/Charts/SetTargetAtTime/index.tsx b/packages/audiodocs/src/components/Charts/SetTargetAtTime/index.tsx index ae4f1dfc3..67765434d 100644 --- a/packages/audiodocs/src/components/Charts/SetTargetAtTime/index.tsx +++ b/packages/audiodocs/src/components/Charts/SetTargetAtTime/index.tsx @@ -1,5 +1,6 @@ -import { LineChart, XAxis, YAxis, CartesianGrid, Tooltip, Line, ReferenceLine, Label, ReferenceDot } from 'recharts'; +import { Label, ReferenceDot, ReferenceLine } from 'recharts'; +import ChartBaseWrapper, { AudioParamDataPoint } from '../common/AudioParamChartBase'; import styles from '../styles.module.css'; const CustomLabelWithArrow = (props: any) => { @@ -62,7 +63,7 @@ const CustomLabelWithArrow = (props: any) => { ); }; -const generateSetTargetAtTimeData = () => { +const generateSetTargetAtTimeData = (): AudioParamDataPoint[] => { const startTime = 0.3; const timeConstant = 0.1; const previousValue = 0.2; @@ -88,33 +89,7 @@ const generateSetTargetAtTimeData = () => { } const SetTargetAtTimeChart = () => ( - - - - + @@ -124,16 +99,6 @@ const SetTargetAtTimeChart = () => ( - ( visibility={'hidden'} label={(props) => } /> - - + ); export default SetTargetAtTimeChart; \ No newline at end of file diff --git a/packages/audiodocs/src/components/Charts/SetValueAtTime/index.tsx b/packages/audiodocs/src/components/Charts/SetValueAtTime/index.tsx index aeef0a52c..7970c95c6 100644 --- a/packages/audiodocs/src/components/Charts/SetValueAtTime/index.tsx +++ b/packages/audiodocs/src/components/Charts/SetValueAtTime/index.tsx @@ -1,6 +1,8 @@ -import { LineChart, XAxis, YAxis, CartesianGrid, Tooltip, Line, ReferenceLine, Label } from 'recharts'; +import { Label, Line, ReferenceLine, Tooltip } from 'recharts'; +import AudioParamChartBase, { AudioParamChartBaseProps } from '../common/AudioParamChartBase'; import styles from '../styles.module.css'; +import { FC } from 'react'; const setValueAtTimeData = [ { time: 0.0, value: 0.2 }, @@ -16,34 +18,8 @@ const setValueAtTimeData = [ { time: 0.9, value: 0.8 }, ]; -const SetValueAtTimeChart = () => ( - - - - +const SetValueAtTimeChart: FC = () => ( + @@ -64,7 +40,7 @@ const SetValueAtTimeChart = () => ( isAnimationActive={true} /> - + ); export default SetValueAtTimeChart; \ No newline at end of file diff --git a/packages/audiodocs/src/components/Charts/SetValueCurveAtTime/index.tsx b/packages/audiodocs/src/components/Charts/SetValueCurveAtTime/index.tsx index e4365b1a8..58931d7f4 100644 --- a/packages/audiodocs/src/components/Charts/SetValueCurveAtTime/index.tsx +++ b/packages/audiodocs/src/components/Charts/SetValueCurveAtTime/index.tsx @@ -1,6 +1,8 @@ -import { LineChart, XAxis, YAxis, CartesianGrid, Tooltip, Line, ReferenceLine, Label, ReferenceDot } from 'recharts'; +import { Label, ReferenceDot, ReferenceLine } from 'recharts'; +import AudioParamChartBase, { AudioParamChartBaseProps } from '../common/AudioParamChartBase'; import styles from '../styles.module.css'; +import { FC } from 'react'; const setValueCurveAtTimeData = [ @@ -11,40 +13,14 @@ const setValueCurveAtTimeData = [ { time: 0.3, value: 0.35}, { time: 0.4, value: 0.6}, { time: 0.5, value: 0.45}, - { time: 0.6, value: 0.7}, - { time: 0.7, value: 0.7}, - { time: 0.8, value: 0.7}, - { time: 0.9, value: 0.7}, + { time: 0.6, value: 0.8}, + { time: 0.7, value: 0.8}, + { time: 0.8, value: 0.8}, + { time: 0.9, value: 0.8}, ]; -const SetValueCurveAtTimeChart = () => ( - - - - +const SetValueCurveAtTimeChart: FC = () => ( + @@ -54,24 +30,13 @@ const SetValueCurveAtTimeChart = () => ( - - + - - - + + ); export default SetValueCurveAtTimeChart; \ No newline at end of file diff --git a/packages/audiodocs/src/components/Charts/common/AudioParamChartBase.tsx b/packages/audiodocs/src/components/Charts/common/AudioParamChartBase.tsx new file mode 100644 index 000000000..760b91f40 --- /dev/null +++ b/packages/audiodocs/src/components/Charts/common/AudioParamChartBase.tsx @@ -0,0 +1,76 @@ +import { + CartesianGrid, + Line, + LineChart, + Tooltip, + XAxis, + YAxis +} from 'recharts'; + +import { FC, ReactNode } from 'react'; +import styles from '../styles.module.css'; + +export type AudioParamDataPoint = { + time: number; + value: number; +}; + +export interface AudioParamChartBaseProps { + children: ReactNode; + data: AudioParamDataPoint[]; +} + +const AudioParamChartBase: FC = ({ + children, + data, +}) => ( + + + + + + {children} + +); + +export default AudioParamChartBase; diff --git a/packages/audiodocs/src/components/Charts/index.tsx b/packages/audiodocs/src/components/Charts/index.tsx index 96eeb0929..cb587720e 100644 --- a/packages/audiodocs/src/components/Charts/index.tsx +++ b/packages/audiodocs/src/components/Charts/index.tsx @@ -1,7 +1,7 @@ -import SetValueAtTimeChart from "./SetValueAtTime"; -import LinearRampToValueAtTimeChart from "./LinearRampToValueAtTime"; import ExponentialRampToValueAtTimeChart from "./ExponentialRampToValueAtTime"; +import LinearRampToValueAtTimeChart from "./LinearRampToValueAtTime"; import SetTargetAtTimeChart from "./SetTargetAtTime"; +import SetValueAtTimeChart from "./SetValueAtTime"; import SetValueCurveAtTimeChart from "./SetValueCurveAtTime"; -export { SetValueAtTimeChart, LinearRampToValueAtTimeChart, ExponentialRampToValueAtTimeChart, SetTargetAtTimeChart, SetValueCurveAtTimeChart }; \ No newline at end of file +export { ExponentialRampToValueAtTimeChart, LinearRampToValueAtTimeChart, SetTargetAtTimeChart, SetValueAtTimeChart, SetValueCurveAtTimeChart }; From 8c0c30f364242cf4ba64b5566d030eaa54199265 Mon Sep 17 00:00:00 2001 From: Marek Malek Date: Fri, 20 Feb 2026 17:38:47 +0100 Subject: [PATCH 07/11] chore: remove old charts --- .../static/img/exponentialRampToValueAtTime.png | Bin 29099 -> 0 bytes .../static/img/linearRampToValueAtTime.png | Bin 24991 -> 0 bytes .../audiodocs/static/img/setTargetAtTime.png | Bin 34369 -> 0 bytes .../audiodocs/static/img/setValueAtTime.png | Bin 17079 -> 0 bytes .../static/img/setValueCurveAtTime.png | Bin 45163 -> 0 bytes 5 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 packages/audiodocs/static/img/exponentialRampToValueAtTime.png delete mode 100644 packages/audiodocs/static/img/linearRampToValueAtTime.png delete mode 100644 packages/audiodocs/static/img/setTargetAtTime.png delete mode 100644 packages/audiodocs/static/img/setValueAtTime.png delete mode 100644 packages/audiodocs/static/img/setValueCurveAtTime.png diff --git a/packages/audiodocs/static/img/exponentialRampToValueAtTime.png b/packages/audiodocs/static/img/exponentialRampToValueAtTime.png deleted file mode 100644 index e2f4d213cda540659a9ef4e5053f8b2617f6cf7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29099 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 z 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 diff --git a/packages/audiodocs/static/img/linearRampToValueAtTime.png b/packages/audiodocs/static/img/linearRampToValueAtTime.png deleted file mode 100644 index b16565e8efb79cfbb0cc0f6c5776d13af1428e50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24991 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 D&K#u9 diff --git a/packages/audiodocs/static/img/setValueCurveAtTime.png b/packages/audiodocs/static/img/setValueCurveAtTime.png deleted file mode 100644 index 6137342199cc4f36d62cb157817370d9eb08fc04..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45163 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 Date: Mon, 23 Feb 2026 10:04:02 +0100 Subject: [PATCH 08/11] feat: add arrowheads --- .../Charts/common/AudioParamChartBase.tsx | 26 ++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/packages/audiodocs/src/components/Charts/common/AudioParamChartBase.tsx b/packages/audiodocs/src/components/Charts/common/AudioParamChartBase.tsx index 760b91f40..c74f7647a 100644 --- a/packages/audiodocs/src/components/Charts/common/AudioParamChartBase.tsx +++ b/packages/audiodocs/src/components/Charts/common/AudioParamChartBase.tsx @@ -29,7 +29,29 @@ const AudioParamChartBase: FC = ({ responsive data={data} margin={{ left: 50, bottom: 20, top: 10 }}> - + + + + + + + + + = ({ }} strokeWidth={2} stroke="currentColor" + style={{ markerEnd: 'url(#arrow-x)' }} /> = ({ }} strokeWidth={2} stroke="currentColor" + style={{ markerStart: 'url(#arrow-y)' }} /> Date: Mon, 23 Feb 2026 10:27:59 +0100 Subject: [PATCH 09/11] feat: add resposiveness, fix labels --- .../Charts/SetValueCurveAtTime/index.tsx | 16 ++++++++-------- .../src/components/Charts/styles.module.css | 8 ++++++++ 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/packages/audiodocs/src/components/Charts/SetValueCurveAtTime/index.tsx b/packages/audiodocs/src/components/Charts/SetValueCurveAtTime/index.tsx index 58931d7f4..9ed96c9e7 100644 --- a/packages/audiodocs/src/components/Charts/SetValueCurveAtTime/index.tsx +++ b/packages/audiodocs/src/components/Charts/SetValueCurveAtTime/index.tsx @@ -1,8 +1,8 @@ import { Label, ReferenceDot, ReferenceLine } from 'recharts'; -import AudioParamChartBase, { AudioParamChartBaseProps } from '../common/AudioParamChartBase'; -import styles from '../styles.module.css'; import { FC } from 'react'; +import AudioParamChartBase from '../common/AudioParamChartBase'; +import styles from '../styles.module.css'; const setValueCurveAtTimeData = [ @@ -31,12 +31,12 @@ const SetValueCurveAtTimeChart: FC = () => (