framefields 2.0.2 → 2.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (174) hide show
  1. package/README.md +6 -6
  2. package/dist/audio/index.mjs +10 -10
  3. package/dist/{audio-x28ZgQBP.mjs → audio-DbxiKp5p.mjs} +3 -3
  4. package/dist/{audio-x28ZgQBP.mjs.map → audio-DbxiKp5p.mjs.map} +1 -1
  5. package/dist/{dist-1iUYuPct.mjs → dist-CGIme1vZ.mjs} +2 -2
  6. package/dist/{dist-1iUYuPct.mjs.map → dist-CGIme1vZ.mjs.map} +1 -1
  7. package/dist/{dist-gjHmorxL.mjs → dist-DuIv211_.mjs} +16 -2
  8. package/dist/dist-DuIv211_.mjs.map +1 -0
  9. package/dist/effects/index.d.mts +1 -1
  10. package/dist/effects/index.mjs +23 -23
  11. package/dist/{effects-CHWORCYd.mjs → effects-B_APkGJJ.mjs} +2 -2
  12. package/dist/{effects-CHWORCYd.mjs.map → effects-B_APkGJJ.mjs.map} +1 -1
  13. package/dist/fonts/index.mjs +1 -1
  14. package/dist/{fonts-DrGTBJJk.mjs → fonts-CwwIhe1o.mjs} +2 -2
  15. package/dist/{fonts-DrGTBJJk.mjs.map → fonts-CwwIhe1o.mjs.map} +1 -1
  16. package/dist/{index-DKFGNyMB.d.mts → index-CnAk1hTw.d.mts} +8 -1
  17. package/dist/{index-DKFGNyMB.d.mts.map → index-CnAk1hTw.d.mts.map} +1 -1
  18. package/dist/index-D2jDC7O5.d.mts.map +1 -1
  19. package/dist/{index-B0BNPEoH.d.mts → index-D7llSs-m.d.mts} +2 -2
  20. package/dist/index-D7llSs-m.d.mts.map +1 -0
  21. package/dist/index.d.mts +68 -61
  22. package/dist/index.d.mts.map +1 -1
  23. package/dist/index.mjs +38 -38
  24. package/dist/index.mjs.map +1 -1
  25. package/dist/preview/index.d.mts +1 -1
  26. package/dist/preview/index.mjs +10 -10
  27. package/dist/{preview-uQM210iy.mjs → preview-D7TqF9i_.mjs} +2 -2
  28. package/dist/{preview-uQM210iy.mjs.map → preview-D7TqF9i_.mjs.map} +1 -1
  29. package/dist/preview-engine/{chunk-MT2DZQHO.mjs → chunk-4Q7JG6WJ.mjs} +1 -1
  30. package/dist/preview-engine/{chunk-SWD76532.mjs → chunk-PCB2VB5K.mjs} +2 -2
  31. package/dist/preview-engine/{chunk-DPST2XLC.mjs → chunk-QARN3FLA.mjs} +6 -6
  32. package/dist/preview-engine/chunk-UC7CSW2A.mjs +1 -0
  33. package/dist/preview-engine/effects.mjs +1 -1
  34. package/dist/preview-engine/framefields.mjs +1 -1
  35. package/dist/preview-engine/player.mjs +5 -5
  36. package/dist/preview-engine/{renderers-YVN3EIOP.mjs → renderers-76MPTVZK.mjs} +1 -1
  37. package/dist/{program-Dl510wmI.mjs → program-Cjva0Nw2.mjs} +2 -2
  38. package/dist/{program-Dl510wmI.mjs.map → program-Cjva0Nw2.mjs.map} +1 -1
  39. package/dist/renderer/index.d.mts +1 -1
  40. package/dist/renderer/index.mjs +2 -2
  41. package/dist/renderer-0kXgErRZ.mjs +3 -0
  42. package/dist/{renderer-B9-QSJcG.mjs → renderer-1ccLpvz3.mjs} +2 -2
  43. package/dist/{renderer-B9-QSJcG.mjs.map → renderer-1ccLpvz3.mjs.map} +1 -1
  44. package/dist/{renderer-I-Sw3JBB.mjs → renderer-8dDNjgzG.mjs} +2 -2
  45. package/dist/{renderer-I-Sw3JBB.mjs.map → renderer-8dDNjgzG.mjs.map} +1 -1
  46. package/dist/{renderer-DxjVQV6f.mjs → renderer-9ZcinEHr.mjs} +2 -2
  47. package/dist/{renderer-DxjVQV6f.mjs.map → renderer-9ZcinEHr.mjs.map} +1 -1
  48. package/dist/{renderer-CB5aWAaf.mjs → renderer-B0DTz9Fr.mjs} +2 -2
  49. package/dist/{renderer-CB5aWAaf.mjs.map → renderer-B0DTz9Fr.mjs.map} +1 -1
  50. package/dist/{renderer-B1CvhW4p.mjs → renderer-B5Tq5MWB.mjs} +2 -2
  51. package/dist/{renderer-B1CvhW4p.mjs.map → renderer-B5Tq5MWB.mjs.map} +1 -1
  52. package/dist/{renderer-vCFTm0oe.mjs → renderer-B6YiOv7l.mjs} +2 -2
  53. package/dist/{renderer-vCFTm0oe.mjs.map → renderer-B6YiOv7l.mjs.map} +1 -1
  54. package/dist/{renderer-7DOcIxFG.mjs → renderer-B8ugHLDi.mjs} +2 -2
  55. package/dist/{renderer-7DOcIxFG.mjs.map → renderer-B8ugHLDi.mjs.map} +1 -1
  56. package/dist/renderer-B9e4XyZy.mjs +3 -0
  57. package/dist/renderer-BBhCaxS2.mjs +3 -0
  58. package/dist/{renderer-B_NuVaIP.mjs → renderer-BBweieq9.mjs} +2 -2
  59. package/dist/{renderer-B_NuVaIP.mjs.map → renderer-BBweieq9.mjs.map} +1 -1
  60. package/dist/renderer-BC0iMueW.mjs +3 -0
  61. package/dist/renderer-BGd1VV9J.mjs +3 -0
  62. package/dist/renderer-BJKbasW6.mjs +3 -0
  63. package/dist/{renderer-OWQmmg4Z.mjs → renderer-BQgAn_oc.mjs} +2 -2
  64. package/dist/{renderer-OWQmmg4Z.mjs.map → renderer-BQgAn_oc.mjs.map} +1 -1
  65. package/dist/renderer-BV3mlZMX.mjs +3 -0
  66. package/dist/{renderer-ByDhfrPE.mjs → renderer-BXDrwZNT.mjs} +2 -2
  67. package/dist/{renderer-ByDhfrPE.mjs.map → renderer-BXDrwZNT.mjs.map} +1 -1
  68. package/dist/{renderer-CwQhzcUn.mjs → renderer-BcckaXum.mjs} +2 -2
  69. package/dist/{renderer-CwQhzcUn.mjs.map → renderer-BcckaXum.mjs.map} +1 -1
  70. package/dist/{renderer-BsgIcBKH.mjs → renderer-BgAzIw8w.mjs} +2 -2
  71. package/dist/{renderer-BsgIcBKH.mjs.map → renderer-BgAzIw8w.mjs.map} +1 -1
  72. package/dist/renderer-BgO4XWZz.mjs +3 -0
  73. package/dist/{renderer-Tp6OXWNZ.mjs → renderer-Bh1pfpzz.mjs} +2 -2
  74. package/dist/{renderer-Tp6OXWNZ.mjs.map → renderer-Bh1pfpzz.mjs.map} +1 -1
  75. package/dist/renderer-Bk842iGl.mjs +4 -0
  76. package/dist/{renderer-CszOjcRW.mjs → renderer-Bmt3fpzg.mjs} +1 -1
  77. package/dist/renderer-Bn7jX6n3.mjs +3 -0
  78. package/dist/{renderer-HFfcJlmR.mjs → renderer-BusX07ZE.mjs} +2 -2
  79. package/dist/{renderer-HFfcJlmR.mjs.map → renderer-BusX07ZE.mjs.map} +1 -1
  80. package/dist/{renderer-k2JL79kM.mjs → renderer-BwE5dnyL.mjs} +2 -2
  81. package/dist/{renderer-k2JL79kM.mjs.map → renderer-BwE5dnyL.mjs.map} +1 -1
  82. package/dist/{renderer-CclIvsLO.mjs → renderer-CBdqOoTN.mjs} +1 -1
  83. package/dist/renderer-CPKOjnkT.mjs +3 -0
  84. package/dist/renderer-CSgVUPHu.mjs +3 -0
  85. package/dist/renderer-CUr66blo.mjs +3 -0
  86. package/dist/{renderer-BXMmISWG.mjs → renderer-CXO4wWOT.mjs} +2 -2
  87. package/dist/{renderer-BXMmISWG.mjs.map → renderer-CXO4wWOT.mjs.map} +1 -1
  88. package/dist/renderer-CYC-j_8W.mjs +3 -0
  89. package/dist/{renderer-vvpdx1vk.mjs → renderer-CcDfRa1o.mjs} +2 -2
  90. package/dist/{renderer-vvpdx1vk.mjs.map → renderer-CcDfRa1o.mjs.map} +1 -1
  91. package/dist/{renderer-CMzEjdzi.mjs → renderer-CeF66MG3.mjs} +2 -2
  92. package/dist/{renderer-CMzEjdzi.mjs.map → renderer-CeF66MG3.mjs.map} +1 -1
  93. package/dist/{renderer-Ryo2CEFD.mjs → renderer-CkLD7Lp7.mjs} +2 -2
  94. package/dist/{renderer-Ryo2CEFD.mjs.map → renderer-CkLD7Lp7.mjs.map} +1 -1
  95. package/dist/{renderer-Dt6fzgX5.mjs → renderer-CuppzplW.mjs} +2 -2
  96. package/dist/{renderer-Dt6fzgX5.mjs.map → renderer-CuppzplW.mjs.map} +1 -1
  97. package/dist/{renderer-CB7lH5K8.mjs → renderer-CxE-8m71.mjs} +1 -1
  98. package/dist/renderer-Cy7k7eN9.mjs +3 -0
  99. package/dist/renderer-D3poaM-T.mjs +3 -0
  100. package/dist/renderer-D69vFGNB.mjs +3 -0
  101. package/dist/{renderer-COkcU3db.mjs → renderer-D9lcIxrz.mjs} +4 -4
  102. package/dist/{renderer-COkcU3db.mjs.map → renderer-D9lcIxrz.mjs.map} +1 -1
  103. package/dist/{renderer-BQHbp-Sp.mjs → renderer-DFA0KBdj.mjs} +2 -2
  104. package/dist/{renderer-BQHbp-Sp.mjs.map → renderer-DFA0KBdj.mjs.map} +1 -1
  105. package/dist/{renderer-CDOUAN7X.mjs → renderer-DG3VnR50.mjs} +2 -2
  106. package/dist/{renderer-CDOUAN7X.mjs.map → renderer-DG3VnR50.mjs.map} +1 -1
  107. package/dist/{renderer-BGXU6vcW.mjs → renderer-DQQnEcSA.mjs} +2 -2
  108. package/dist/{renderer-BGXU6vcW.mjs.map → renderer-DQQnEcSA.mjs.map} +1 -1
  109. package/dist/{renderer-D7EX8IjU.mjs → renderer-DVSagfD4.mjs} +2 -2
  110. package/dist/{renderer-D7EX8IjU.mjs.map → renderer-DVSagfD4.mjs.map} +1 -1
  111. package/dist/{renderer-C17wL9QX.mjs → renderer-DWvg6ZKK.mjs} +2 -2
  112. package/dist/{renderer-C17wL9QX.mjs.map → renderer-DWvg6ZKK.mjs.map} +1 -1
  113. package/dist/{renderer-Dp_FfvF-.mjs → renderer-Daa-Af8y.mjs} +2 -2
  114. package/dist/{renderer-Dp_FfvF-.mjs.map → renderer-Daa-Af8y.mjs.map} +1 -1
  115. package/dist/renderer-DiXzb5FQ.mjs +3 -0
  116. package/dist/{renderer-pxXf9dvk.mjs → renderer-DjYRCzzV.mjs} +2 -2
  117. package/dist/{renderer-pxXf9dvk.mjs.map → renderer-DjYRCzzV.mjs.map} +1 -1
  118. package/dist/renderer-DkKjy-Q0.mjs +3 -0
  119. package/dist/renderer-DlxCfGuA.mjs +3 -0
  120. package/dist/{renderer-Cj-whdVr.mjs → renderer-Dm0r9IBd.mjs} +2 -2
  121. package/dist/{renderer-Cj-whdVr.mjs.map → renderer-Dm0r9IBd.mjs.map} +1 -1
  122. package/dist/renderer-DnUe5mD1.mjs +3 -0
  123. package/dist/renderer-DwtLqidh.mjs +3 -0
  124. package/dist/{renderer-DbaQLI4z.mjs → renderer-NYcVjCOi.mjs} +2 -2
  125. package/dist/{renderer-DbaQLI4z.mjs.map → renderer-NYcVjCOi.mjs.map} +1 -1
  126. package/dist/{renderer-WkVrkCVA.mjs → renderer-VHpQTPbr.mjs} +2 -2
  127. package/dist/{renderer-WkVrkCVA.mjs.map → renderer-VHpQTPbr.mjs.map} +1 -1
  128. package/dist/renderer-WaLyCr37.mjs +3 -0
  129. package/dist/{renderer-BAQmR0Zo.mjs → renderer-Y7-Us00q.mjs} +1 -1
  130. package/dist/{renderer-Cl1oUXMi.mjs → renderer-aH8p3zLE.mjs} +2 -2
  131. package/dist/{renderer-Cl1oUXMi.mjs.map → renderer-aH8p3zLE.mjs.map} +1 -1
  132. package/dist/renderer-rrz9Fhwo.mjs +3 -0
  133. package/dist/{renderer-CH8sdfYX.mjs → renderer-s_HENMCc.mjs} +2 -2
  134. package/dist/{renderer-CH8sdfYX.mjs.map → renderer-s_HENMCc.mjs.map} +1 -1
  135. package/dist/renderer-ssnm_dWv.mjs +3 -0
  136. package/dist/{renderer-Fco4EmAu.mjs → renderer-vnHsTpQf.mjs} +111 -60
  137. package/dist/{renderer-Fco4EmAu.mjs.map → renderer-vnHsTpQf.mjs.map} +1 -1
  138. package/dist/renderer-xc9wkiC7.mjs +3 -0
  139. package/dist/{renderer-XcmYTd6P.mjs → renderer-z6Qb5Z-W.mjs} +143 -4
  140. package/dist/renderer-z6Qb5Z-W.mjs.map +1 -0
  141. package/dist/{renderers-BWg16W-V-BXG_cjhM.mjs → renderers-BWg16W-V-FofeEqQL.mjs} +2 -2
  142. package/dist/{renderers-BWg16W-V-BXG_cjhM.mjs.map → renderers-BWg16W-V-FofeEqQL.mjs.map} +1 -1
  143. package/dist/signals/index.mjs +4 -4
  144. package/package.json +54 -54
  145. package/dist/dist-gjHmorxL.mjs.map +0 -1
  146. package/dist/index-B0BNPEoH.d.mts.map +0 -1
  147. package/dist/preview-engine/chunk-DRLEOHN5.mjs +0 -1
  148. package/dist/renderer-3BNskNuJ.mjs +0 -3
  149. package/dist/renderer-9dHlMQGX.mjs +0 -3
  150. package/dist/renderer-BGvORwkQ.mjs +0 -3
  151. package/dist/renderer-BLikd6BK.mjs +0 -3
  152. package/dist/renderer-BSbTJBWc.mjs +0 -3
  153. package/dist/renderer-BU1rwNRT.mjs +0 -3
  154. package/dist/renderer-BZJm3m4f.mjs +0 -3
  155. package/dist/renderer-BqyAgNt3.mjs +0 -3
  156. package/dist/renderer-BryTM2g7.mjs +0 -3
  157. package/dist/renderer-CQCoggIa.mjs +0 -3
  158. package/dist/renderer-CV2m6k1V.mjs +0 -3
  159. package/dist/renderer-CYY-poLe.mjs +0 -3
  160. package/dist/renderer-C_Ki91kc.mjs +0 -3
  161. package/dist/renderer-CmApuKjS.mjs +0 -3
  162. package/dist/renderer-Cu074POw.mjs +0 -3
  163. package/dist/renderer-D4qLmox-.mjs +0 -3
  164. package/dist/renderer-D6cJ6MSq.mjs +0 -3
  165. package/dist/renderer-DQLGnEFc.mjs +0 -3
  166. package/dist/renderer-DY2SVYUW.mjs +0 -3
  167. package/dist/renderer-DoAY5JbB.mjs +0 -4
  168. package/dist/renderer-DuplLRbp.mjs +0 -3
  169. package/dist/renderer-DvfUbZ31.mjs +0 -3
  170. package/dist/renderer-Q_uUQipO.mjs +0 -3
  171. package/dist/renderer-UQFCgeNx.mjs +0 -3
  172. package/dist/renderer-XcmYTd6P.mjs.map +0 -1
  173. package/dist/renderer-eMsnzJg9.mjs +0 -3
  174. package/dist/renderer-pHiz78e0.mjs +0 -3
package/README.md CHANGED
@@ -32,18 +32,18 @@ Every frame of these films is rendered by framefields from TypeScript in [`examp
32
32
  <table>
33
33
  <tr>
34
34
  <td width="33%" align="center">
35
- <a href="https://youtu.be/w6IQNrhJJek"><img src="https://raw.githubusercontent.com/gatewai-dev/framefields/main/assets/showcase/framefields-launch.jpg" alt="Framefields launch film" width="100%"></a>
36
- <br><a href="https://youtu.be/w6IQNrhJJek"><b>Framefields launch</b></a>
35
+ <a href="https://youtu.be/FVXTqAozAv8"><img src="https://raw.githubusercontent.com/gatewai-dev/framefields/main/assets/showcase/framefields-launch.jpg" alt="Framefields launch film" width="100%"></a>
36
+ <br><a href="https://youtu.be/FVXTqAozAv8"><b>Framefields launch</b></a>
37
37
  <br><sub><a href="https://github.com/gatewai-dev/framefields/blob/main/examples/22_framefields_launch"><code>22_framefields_launch</code></a></sub>
38
38
  </td>
39
39
  <td width="33%" align="center">
40
- <a href="https://youtu.be/YeIpp4xf_j8"><img src="https://raw.githubusercontent.com/gatewai-dev/framefields/main/assets/showcase/full-circle.jpg" alt="Full Circle film" width="100%"></a>
41
- <br><a href="https://youtu.be/YeIpp4xf_j8"><b>Full Circle</b></a>
40
+ <a href="https://youtu.be/9BF1snfmg3o"><img src="https://raw.githubusercontent.com/gatewai-dev/framefields/main/assets/showcase/full-circle.jpg" alt="Full Circle film" width="100%"></a>
41
+ <br><a href="https://youtu.be/9BF1snfmg3o"><b>Full Circle</b></a>
42
42
  <br><sub><a href="https://github.com/gatewai-dev/framefields/blob/main/examples/21_full_circle"><code>21_full_circle</code></a></sub>
43
43
  </td>
44
44
  <td width="33%" align="center">
45
- <a href="https://youtu.be/R5Zug49FTTQ"><img src="https://raw.githubusercontent.com/gatewai-dev/framefields/main/assets/showcase/dancer.jpg" alt="Dancer showcase film" width="100%"></a>
46
- <br><a href="https://youtu.be/R5Zug49FTTQ"><b>Dancer showcase</b></a>
45
+ <a href="https://youtu.be/RQ3yi_lzPqI"><img src="https://raw.githubusercontent.com/gatewai-dev/framefields/main/assets/showcase/dancer.jpg" alt="Dancer showcase film" width="100%"></a>
46
+ <br><a href="https://youtu.be/RQ3yi_lzPqI"><b>Dancer showcase</b></a>
47
47
  <br><sub><a href="https://github.com/gatewai-dev/framefields/blob/main/examples/19_framefields_film"><code>19_framefields_film</code></a></sub>
48
48
  </td>
49
49
  </tr>
@@ -1,14 +1,14 @@
1
- import { C as WebGPUAudioProcessor } from "../dist-gjHmorxL.mjs";
2
- import { t as renderers_default$1 } from "../renderers-BWg16W-V-BXG_cjhM.mjs";
3
- import { i as mixAudioTracks } from "../dist-1iUYuPct.mjs";
4
- import { t as renderers_default$2 } from "../renderer-Tp6OXWNZ.mjs";
5
- import { t as renderers_default$3 } from "../renderer-vCFTm0oe.mjs";
6
- import { t as renderers_default } from "../renderer-C17wL9QX.mjs";
7
- import { t as renderers_default$4 } from "../renderer-7DOcIxFG.mjs";
8
- import { t as renderers_default$5 } from "../renderer-BGXU6vcW.mjs";
9
- import { t as renderers_default$6 } from "../renderer-vvpdx1vk.mjs";
1
+ import { C as WebGPUAudioProcessor } from "../dist-DuIv211_.mjs";
2
+ import { t as renderers_default$1 } from "../renderers-BWg16W-V-FofeEqQL.mjs";
3
+ import { i as mixAudioTracks } from "../dist-CGIme1vZ.mjs";
4
+ import { t as renderers_default$2 } from "../renderer-Bh1pfpzz.mjs";
5
+ import { t as renderers_default$3 } from "../renderer-B6YiOv7l.mjs";
6
+ import { t as renderers_default } from "../renderer-DWvg6ZKK.mjs";
7
+ import { t as renderers_default$4 } from "../renderer-B8ugHLDi.mjs";
8
+ import { t as renderers_default$5 } from "../renderer-DQQnEcSA.mjs";
9
+ import { t as renderers_default$6 } from "../renderer-CcDfRa1o.mjs";
10
10
  import "../renderer-C2n-EHxg.mjs";
11
- import { t as renderers_default$7 } from "../renderer-WkVrkCVA.mjs";
11
+ import { t as renderers_default$7 } from "../renderer-VHpQTPbr.mjs";
12
12
  import { i as softLimit, n as mixSfxInto, r as renderSfx, t as encodeStereoWav } from "../audio-TAvPwzLR.mjs";
13
13
 
14
14
  export { WebGPUAudioProcessor, renderers_default as audioFadeRenderer, renderers_default$1 as audioSignalExtractorRenderer, renderers_default$2 as compressorRenderer, renderers_default$3 as delayRenderer, encodeStereoWav, mixAudioTracks, mixSfxInto, renderers_default$4 as noiseGateRenderer, renderers_default$5 as parametricEqRenderer, renderSfx, renderers_default$6 as reverbRenderer, softLimit, renderers_default$7 as stereoPanningRenderer };
@@ -1,6 +1,6 @@
1
1
  import { _t as frameArraySignal } from "./dist-Bx6J0VcM.mjs";
2
- import { F as ensureDevice, i as AudioSignalComputePipeline } from "./dist-gjHmorxL.mjs";
3
- import { n as decodeAudioSource } from "./dist-1iUYuPct.mjs";
2
+ import { F as ensureDevice, i as AudioSignalComputePipeline } from "./dist-DuIv211_.mjs";
3
+ import { n as decodeAudioSource } from "./dist-CGIme1vZ.mjs";
4
4
 
5
5
  //#region src/signals/audio.ts
6
6
  const AudioSignal = {
@@ -82,4 +82,4 @@ const AudioSignal = {
82
82
 
83
83
  //#endregion
84
84
  export { AudioSignal as t };
85
- //# sourceMappingURL=audio-x28ZgQBP.mjs.map
85
+ //# sourceMappingURL=audio-DbxiKp5p.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"audio-x28ZgQBP.mjs","names":[],"sources":["../src/signals/audio.ts"],"sourcesContent":["import { decodeAudioSource } from \"@framefields/compositions\";\nimport {\n\ttype FrameSignal,\n\tframeArraySignal,\n\ttype GPUTextureBinding,\n} from \"@framefields/core\";\nimport {\n\ttype AudioSignalComputeConfig,\n\tAudioSignalComputePipeline,\n\tensureDevice,\n} from \"@framefields/webgpu-renderers\";\n\nexport interface AudioSignalOptions extends AudioSignalComputeConfig {\n\tfps?: number;\n\ttargetWidth?: number;\n\tpreviewMode?: \"waveform\" | \"envelope\" | \"beat_markers\" | \"spectrum\";\n}\n\nexport interface ExtractedAudioSignalsBundle {\n\tprimary: FrameSignal<number>;\n\tbeat: FrameSignal<number>;\n\tbass: FrameSignal<number>;\n\tenergy: FrameSignal<number>;\n\tdurationSec: number;\n\tnumFrames: number;\n\tsampleRate: number;\n\ttextureView: unknown;\n\ttexture: unknown;\n\tprimaryBuffer: unknown;\n\tbeatBuffer: unknown;\n\tbassBuffer: unknown;\n\tenergyBuffer: unknown;\n\tseekFrame(frame: number): void;\n}\n\nexport const AudioSignal = {\n\tasync extractFromChannels(\n\t\tchannels: Float32Array[],\n\t\tsampleRate: number,\n\t\toptions: AudioSignalOptions = {},\n\t): Promise<ExtractedAudioSignalsBundle> {\n\t\tconst device = await ensureDevice();\n\t\tconst fps = options.fps ?? 24;\n\t\tconst targetWidth = options.targetWidth ?? 512;\n\n\t\tconst extracted = await AudioSignalComputePipeline.extractFeatures(\n\t\t\tdevice,\n\t\t\tchannels,\n\t\t\tsampleRate,\n\t\t\tfps,\n\t\t\toptions,\n\t\t\ttargetWidth,\n\t\t);\n\n\t\tconst samples = extracted.channelSamples ?? {\n\t\t\tprimary: new Float32Array(extracted.numFrames),\n\t\t\tbeat: new Float32Array(extracted.numFrames),\n\t\t\tbass: new Float32Array(extracted.numFrames),\n\t\t\tenergy: new Float32Array(extracted.numFrames),\n\t\t};\n\n\t\tconst primaryBinding: GPUTextureBinding = {\n\t\t\tnodeId: \"audio_primary\",\n\t\t\tchannel: \"primary\",\n\t\t\ttextureView: extracted.textureView,\n\t\t\ttexture: extracted.texture,\n\t\t\tbuffer: extracted.primaryBuffer,\n\t\t\tstats: extracted.stats.primary,\n\t\t};\n\t\tconst beatBinding: GPUTextureBinding = {\n\t\t\tnodeId: \"audio_beat\",\n\t\t\tchannel: \"beat\",\n\t\t\ttextureView: extracted.textureView,\n\t\t\ttexture: extracted.texture,\n\t\t\tbuffer: extracted.beatBuffer,\n\t\t\tstats: extracted.stats.beat,\n\t\t};\n\t\tconst bassBinding: GPUTextureBinding = {\n\t\t\tnodeId: \"audio_bass\",\n\t\t\tchannel: \"bass\",\n\t\t\ttextureView: extracted.textureView,\n\t\t\ttexture: extracted.texture,\n\t\t\tbuffer: extracted.bassBuffer,\n\t\t\tstats: extracted.stats.bass,\n\t\t};\n\t\tconst energyBinding: GPUTextureBinding = {\n\t\t\tnodeId: \"audio_energy\",\n\t\t\tchannel: \"energy\",\n\t\t\ttextureView: extracted.textureView,\n\t\t\ttexture: extracted.texture,\n\t\t\tbuffer: extracted.energyBuffer,\n\t\t\tstats: extracted.stats.energy,\n\t\t};\n\n\t\tconst primary = frameArraySignal(samples.primary, fps, primaryBinding);\n\t\tconst beat = frameArraySignal(samples.beat, fps, beatBinding);\n\t\tconst bass = frameArraySignal(samples.bass, fps, bassBinding);\n\t\tconst energy = frameArraySignal(samples.energy, fps, energyBinding);\n\n\t\treturn {\n\t\t\tprimary,\n\t\t\tbeat,\n\t\t\tbass,\n\t\t\tenergy,\n\t\t\tdurationSec: extracted.durationSec,\n\t\t\tnumFrames: extracted.numFrames,\n\t\t\tsampleRate,\n\t\t\ttextureView: extracted.textureView,\n\t\t\ttexture: extracted.texture,\n\t\t\tprimaryBuffer: extracted.primaryBuffer,\n\t\t\tbeatBuffer: extracted.beatBuffer,\n\t\t\tbassBuffer: extracted.bassBuffer,\n\t\t\tenergyBuffer: extracted.energyBuffer,\n\t\t\tseekFrame(frame: number) {\n\t\t\t\tprimary.seekFrame?.(frame);\n\t\t\t\tbeat.seekFrame?.(frame);\n\t\t\t\tbass.seekFrame?.(frame);\n\t\t\t\tenergy.seekFrame?.(frame);\n\t\t\t},\n\t\t};\n\t},\n\n\tasync extract(\n\t\tsource: string,\n\t\toptions: AudioSignalOptions = {},\n\t): Promise<ExtractedAudioSignalsBundle> {\n\t\tconst decoded = await decodeAudioSource(source);\n\t\tif (!decoded || decoded.channels.length === 0) {\n\t\t\tthrow new Error(\n\t\t\t\t`Failed to decode audio source for feature extraction: ${source}`,\n\t\t\t);\n\t\t}\n\t\treturn AudioSignal.extractFromChannels(\n\t\t\tdecoded.channels,\n\t\t\tdecoded.sampleRate,\n\t\t\toptions,\n\t\t);\n\t},\n};\n"],"mappings":";;;;;AAmCA,MAAa,cAAc;CAC1B,MAAM,oBACL,UACA,YACA,UAA8B,EAAE,EACO;EACvC,MAAM,SAAS,MAAM,cAAc;EACnC,MAAM,MAAM,QAAQ,OAAO;EAC3B,MAAM,cAAc,QAAQ,eAAe;EAE3C,MAAM,YAAY,MAAM,2BAA2B,gBAClD,QACA,UACA,YACA,KACA,SACA,YACA;EAED,MAAM,UAAU,UAAU,kBAAkB;GAC3C,SAAS,IAAI,aAAa,UAAU,UAAU;GAC9C,MAAM,IAAI,aAAa,UAAU,UAAU;GAC3C,MAAM,IAAI,aAAa,UAAU,UAAU;GAC3C,QAAQ,IAAI,aAAa,UAAU,UAAU;GAC7C;EAED,MAAM,iBAAoC;GACzC,QAAQ;GACR,SAAS;GACT,aAAa,UAAU;GACvB,SAAS,UAAU;GACnB,QAAQ,UAAU;GAClB,OAAO,UAAU,MAAM;GACvB;EACD,MAAM,cAAiC;GACtC,QAAQ;GACR,SAAS;GACT,aAAa,UAAU;GACvB,SAAS,UAAU;GACnB,QAAQ,UAAU;GAClB,OAAO,UAAU,MAAM;GACvB;EACD,MAAM,cAAiC;GACtC,QAAQ;GACR,SAAS;GACT,aAAa,UAAU;GACvB,SAAS,UAAU;GACnB,QAAQ,UAAU;GAClB,OAAO,UAAU,MAAM;GACvB;EACD,MAAM,gBAAmC;GACxC,QAAQ;GACR,SAAS;GACT,aAAa,UAAU;GACvB,SAAS,UAAU;GACnB,QAAQ,UAAU;GAClB,OAAO,UAAU,MAAM;GACvB;EAED,MAAM,UAAU,iBAAiB,QAAQ,SAAS,KAAK,eAAe;EACtE,MAAM,OAAO,iBAAiB,QAAQ,MAAM,KAAK,YAAY;EAC7D,MAAM,OAAO,iBAAiB,QAAQ,MAAM,KAAK,YAAY;EAC7D,MAAM,SAAS,iBAAiB,QAAQ,QAAQ,KAAK,cAAc;AAEnE,SAAO;GACN;GACA;GACA;GACA;GACA,aAAa,UAAU;GACvB,WAAW,UAAU;GACrB;GACA,aAAa,UAAU;GACvB,SAAS,UAAU;GACnB,eAAe,UAAU;GACzB,YAAY,UAAU;GACtB,YAAY,UAAU;GACtB,cAAc,UAAU;GACxB,UAAU,OAAe;AACxB,YAAQ,YAAY,MAAM;AAC1B,SAAK,YAAY,MAAM;AACvB,SAAK,YAAY,MAAM;AACvB,WAAO,YAAY,MAAM;;GAE1B;;CAGF,MAAM,QACL,QACA,UAA8B,EAAE,EACO;EACvC,MAAM,UAAU,MAAM,kBAAkB,OAAO;AAC/C,MAAI,CAAC,WAAW,QAAQ,SAAS,WAAW,EAC3C,OAAM,IAAI,MACT,yDAAyD,SACzD;AAEF,SAAO,YAAY,oBAClB,QAAQ,UACR,QAAQ,YACR,QACA;;CAEF"}
1
+ {"version":3,"file":"audio-DbxiKp5p.mjs","names":[],"sources":["../src/signals/audio.ts"],"sourcesContent":["import { decodeAudioSource } from \"@framefields/compositions\";\nimport {\n\ttype FrameSignal,\n\tframeArraySignal,\n\ttype GPUTextureBinding,\n} from \"@framefields/core\";\nimport {\n\ttype AudioSignalComputeConfig,\n\tAudioSignalComputePipeline,\n\tensureDevice,\n} from \"@framefields/webgpu-renderers\";\n\nexport interface AudioSignalOptions extends AudioSignalComputeConfig {\n\tfps?: number;\n\ttargetWidth?: number;\n\tpreviewMode?: \"waveform\" | \"envelope\" | \"beat_markers\" | \"spectrum\";\n}\n\nexport interface ExtractedAudioSignalsBundle {\n\tprimary: FrameSignal<number>;\n\tbeat: FrameSignal<number>;\n\tbass: FrameSignal<number>;\n\tenergy: FrameSignal<number>;\n\tdurationSec: number;\n\tnumFrames: number;\n\tsampleRate: number;\n\ttextureView: unknown;\n\ttexture: unknown;\n\tprimaryBuffer: unknown;\n\tbeatBuffer: unknown;\n\tbassBuffer: unknown;\n\tenergyBuffer: unknown;\n\tseekFrame(frame: number): void;\n}\n\nexport const AudioSignal = {\n\tasync extractFromChannels(\n\t\tchannels: Float32Array[],\n\t\tsampleRate: number,\n\t\toptions: AudioSignalOptions = {},\n\t): Promise<ExtractedAudioSignalsBundle> {\n\t\tconst device = await ensureDevice();\n\t\tconst fps = options.fps ?? 24;\n\t\tconst targetWidth = options.targetWidth ?? 512;\n\n\t\tconst extracted = await AudioSignalComputePipeline.extractFeatures(\n\t\t\tdevice,\n\t\t\tchannels,\n\t\t\tsampleRate,\n\t\t\tfps,\n\t\t\toptions,\n\t\t\ttargetWidth,\n\t\t);\n\n\t\tconst samples = extracted.channelSamples ?? {\n\t\t\tprimary: new Float32Array(extracted.numFrames),\n\t\t\tbeat: new Float32Array(extracted.numFrames),\n\t\t\tbass: new Float32Array(extracted.numFrames),\n\t\t\tenergy: new Float32Array(extracted.numFrames),\n\t\t};\n\n\t\tconst primaryBinding: GPUTextureBinding = {\n\t\t\tnodeId: \"audio_primary\",\n\t\t\tchannel: \"primary\",\n\t\t\ttextureView: extracted.textureView,\n\t\t\ttexture: extracted.texture,\n\t\t\tbuffer: extracted.primaryBuffer,\n\t\t\tstats: extracted.stats.primary,\n\t\t};\n\t\tconst beatBinding: GPUTextureBinding = {\n\t\t\tnodeId: \"audio_beat\",\n\t\t\tchannel: \"beat\",\n\t\t\ttextureView: extracted.textureView,\n\t\t\ttexture: extracted.texture,\n\t\t\tbuffer: extracted.beatBuffer,\n\t\t\tstats: extracted.stats.beat,\n\t\t};\n\t\tconst bassBinding: GPUTextureBinding = {\n\t\t\tnodeId: \"audio_bass\",\n\t\t\tchannel: \"bass\",\n\t\t\ttextureView: extracted.textureView,\n\t\t\ttexture: extracted.texture,\n\t\t\tbuffer: extracted.bassBuffer,\n\t\t\tstats: extracted.stats.bass,\n\t\t};\n\t\tconst energyBinding: GPUTextureBinding = {\n\t\t\tnodeId: \"audio_energy\",\n\t\t\tchannel: \"energy\",\n\t\t\ttextureView: extracted.textureView,\n\t\t\ttexture: extracted.texture,\n\t\t\tbuffer: extracted.energyBuffer,\n\t\t\tstats: extracted.stats.energy,\n\t\t};\n\n\t\tconst primary = frameArraySignal(samples.primary, fps, primaryBinding);\n\t\tconst beat = frameArraySignal(samples.beat, fps, beatBinding);\n\t\tconst bass = frameArraySignal(samples.bass, fps, bassBinding);\n\t\tconst energy = frameArraySignal(samples.energy, fps, energyBinding);\n\n\t\treturn {\n\t\t\tprimary,\n\t\t\tbeat,\n\t\t\tbass,\n\t\t\tenergy,\n\t\t\tdurationSec: extracted.durationSec,\n\t\t\tnumFrames: extracted.numFrames,\n\t\t\tsampleRate,\n\t\t\ttextureView: extracted.textureView,\n\t\t\ttexture: extracted.texture,\n\t\t\tprimaryBuffer: extracted.primaryBuffer,\n\t\t\tbeatBuffer: extracted.beatBuffer,\n\t\t\tbassBuffer: extracted.bassBuffer,\n\t\t\tenergyBuffer: extracted.energyBuffer,\n\t\t\tseekFrame(frame: number) {\n\t\t\t\tprimary.seekFrame?.(frame);\n\t\t\t\tbeat.seekFrame?.(frame);\n\t\t\t\tbass.seekFrame?.(frame);\n\t\t\t\tenergy.seekFrame?.(frame);\n\t\t\t},\n\t\t};\n\t},\n\n\tasync extract(\n\t\tsource: string,\n\t\toptions: AudioSignalOptions = {},\n\t): Promise<ExtractedAudioSignalsBundle> {\n\t\tconst decoded = await decodeAudioSource(source);\n\t\tif (!decoded || decoded.channels.length === 0) {\n\t\t\tthrow new Error(\n\t\t\t\t`Failed to decode audio source for feature extraction: ${source}`,\n\t\t\t);\n\t\t}\n\t\treturn AudioSignal.extractFromChannels(\n\t\t\tdecoded.channels,\n\t\t\tdecoded.sampleRate,\n\t\t\toptions,\n\t\t);\n\t},\n};\n"],"mappings":";;;;;AAmCA,MAAa,cAAc;CAC1B,MAAM,oBACL,UACA,YACA,UAA8B,EAAE,EACO;EACvC,MAAM,SAAS,MAAM,cAAc;EACnC,MAAM,MAAM,QAAQ,OAAO;EAC3B,MAAM,cAAc,QAAQ,eAAe;EAE3C,MAAM,YAAY,MAAM,2BAA2B,gBAClD,QACA,UACA,YACA,KACA,SACA,YACA;EAED,MAAM,UAAU,UAAU,kBAAkB;GAC3C,SAAS,IAAI,aAAa,UAAU,UAAU;GAC9C,MAAM,IAAI,aAAa,UAAU,UAAU;GAC3C,MAAM,IAAI,aAAa,UAAU,UAAU;GAC3C,QAAQ,IAAI,aAAa,UAAU,UAAU;GAC7C;EAED,MAAM,iBAAoC;GACzC,QAAQ;GACR,SAAS;GACT,aAAa,UAAU;GACvB,SAAS,UAAU;GACnB,QAAQ,UAAU;GAClB,OAAO,UAAU,MAAM;GACvB;EACD,MAAM,cAAiC;GACtC,QAAQ;GACR,SAAS;GACT,aAAa,UAAU;GACvB,SAAS,UAAU;GACnB,QAAQ,UAAU;GAClB,OAAO,UAAU,MAAM;GACvB;EACD,MAAM,cAAiC;GACtC,QAAQ;GACR,SAAS;GACT,aAAa,UAAU;GACvB,SAAS,UAAU;GACnB,QAAQ,UAAU;GAClB,OAAO,UAAU,MAAM;GACvB;EACD,MAAM,gBAAmC;GACxC,QAAQ;GACR,SAAS;GACT,aAAa,UAAU;GACvB,SAAS,UAAU;GACnB,QAAQ,UAAU;GAClB,OAAO,UAAU,MAAM;GACvB;EAED,MAAM,UAAU,iBAAiB,QAAQ,SAAS,KAAK,eAAe;EACtE,MAAM,OAAO,iBAAiB,QAAQ,MAAM,KAAK,YAAY;EAC7D,MAAM,OAAO,iBAAiB,QAAQ,MAAM,KAAK,YAAY;EAC7D,MAAM,SAAS,iBAAiB,QAAQ,QAAQ,KAAK,cAAc;AAEnE,SAAO;GACN;GACA;GACA;GACA;GACA,aAAa,UAAU;GACvB,WAAW,UAAU;GACrB;GACA,aAAa,UAAU;GACvB,SAAS,UAAU;GACnB,eAAe,UAAU;GACzB,YAAY,UAAU;GACtB,YAAY,UAAU;GACtB,cAAc,UAAU;GACxB,UAAU,OAAe;AACxB,YAAQ,YAAY,MAAM;AAC1B,SAAK,YAAY,MAAM;AACvB,SAAK,YAAY,MAAM;AACvB,WAAO,YAAY,MAAM;;GAE1B;;CAGF,MAAM,QACL,QACA,UAA8B,EAAE,EACO;EACvC,MAAM,UAAU,MAAM,kBAAkB,OAAO;AAC/C,MAAI,CAAC,WAAW,QAAQ,SAAS,WAAW,EAC3C,OAAM,IAAI,MACT,yDAAyD,SACzD;AAEF,SAAO,YAAY,oBAClB,QAAQ,UACR,QAAQ,YACR,QACA;;CAEF"}
@@ -1,6 +1,6 @@
1
1
  import { Ht as updateClockSignals, Ot as isSignal, Pt as resolveMediaMimeType, bt as getActiveMediaMetadata, f as DEFAULT_DURATION_MS, wt as getMediaType } from "./dist-Bx6J0VcM.mjs";
2
2
  import { i as webgpuRegistry, t as audioRegistry } from "./renderer-CtVkU_GA.mjs";
3
- import { $ as registerHeadlessFont, A as drawLottieNode, B as inputStore, D as drawCaptionNode, M as drawSignalNode, N as drawSvgNode, O as drawGifNode, P as drawVideoNode, b as SlugGeometry, et as shaderStore, it as GetFontAssetUrl, j as drawParagraphNode, k as drawImageNode, ot as getEnv, st as resolveMediaSourceUrl, tt as signalRegistry, y as SlugFontCache } from "./dist-gjHmorxL.mjs";
3
+ import { $ as registerHeadlessFont, A as drawLottieNode, B as inputStore, D as drawCaptionNode, M as drawSignalNode, N as drawSvgNode, O as drawGifNode, P as drawVideoNode, b as SlugGeometry, et as shaderStore, it as GetFontAssetUrl, j as drawParagraphNode, k as drawImageNode, ot as getEnv, st as resolveMediaSourceUrl, tt as signalRegistry, y as SlugFontCache } from "./dist-DuIv211_.mjs";
4
4
  import { AudioSampleSink } from "mediabunny";
5
5
 
6
6
  //#region ../renderers/dist/index.mjs
@@ -1856,4 +1856,4 @@ async function mixAudioTracks(virtualMedia, fps, targetSampleRate = 48e3, device
1856
1856
 
1857
1857
  //#endregion
1858
1858
  export { springCalculation as S, measureTextAsync as _, resolveLayerDuration as a, requiresIsolation as b, MAX_LIGHTS as c, bezier as d, computeStrokeRect as f, measureText as g, measureSpring as h, mixAudioTracks as i, Matrix4Math as l, mapBlendModeToSkia as m, decodeAudioSource as n, Easing as o, interpolate as p, drawCompositionTree as r, LIGHT_UNIFORM_SIZE_BYTES as s, compositionStateStore as t, Vector3Math as u, parseColorToRgb as v, spring as x, preloadFont as y };
1859
- //# sourceMappingURL=dist-1iUYuPct.mjs.map
1859
+ //# sourceMappingURL=dist-CGIme1vZ.mjs.map