framefields 2.0.9 → 2.0.10

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 (165) hide show
  1. package/dist/audio/index.mjs +10 -10
  2. package/dist/{audio-Dev4NGPa.mjs → audio-B7Al-W_0.mjs} +3 -3
  3. package/dist/{audio-Dev4NGPa.mjs.map → audio-B7Al-W_0.mjs.map} +1 -1
  4. package/dist/{dist-DgfykO99.mjs → dist-B9PkqWnN.mjs} +26 -13
  5. package/dist/dist-B9PkqWnN.mjs.map +1 -0
  6. package/dist/{dist-CoSg-CWr.mjs → dist-BFjSQP7i.mjs} +2 -2
  7. package/dist/{dist-CoSg-CWr.mjs.map → dist-BFjSQP7i.mjs.map} +1 -1
  8. package/dist/effects/index.mjs +23 -23
  9. package/dist/{effects-hxRwxjyC.mjs → effects-CREopCyP.mjs} +2 -2
  10. package/dist/{effects-hxRwxjyC.mjs.map → effects-CREopCyP.mjs.map} +1 -1
  11. package/dist/fonts/index.mjs +1 -1
  12. package/dist/{fonts-BznIea-I.mjs → fonts-DhEQ5h6E.mjs} +2 -2
  13. package/dist/{fonts-BznIea-I.mjs.map → fonts-DhEQ5h6E.mjs.map} +1 -1
  14. package/dist/index-CvDVpaKn.d.mts.map +1 -1
  15. package/dist/index-D1zaOwEU.d.mts.map +1 -1
  16. package/dist/index-fo4E7A6C.d.mts.map +1 -1
  17. package/dist/index.mjs +38 -38
  18. package/dist/preview/index.mjs +10 -10
  19. package/dist/{preview-DZTbEON9.mjs → preview-9ifxywUM.mjs} +2 -2
  20. package/dist/{preview-DZTbEON9.mjs.map → preview-9ifxywUM.mjs.map} +1 -1
  21. package/dist/preview-engine/{chunk-VWLR2AZR.mjs → chunk-AEK5BO3J.mjs} +1 -1
  22. package/dist/preview-engine/{chunk-5PPSCISJ.mjs → chunk-AG5JNZYQ.mjs} +1 -1
  23. package/dist/preview-engine/chunk-MJM3NFEC.mjs +315 -0
  24. package/dist/preview-engine/{chunk-BUWK5RJ4.mjs → chunk-QTKJXDIW.mjs} +1 -1
  25. package/dist/preview-engine/{chunk-WQ7BFSKF.mjs → chunk-RNOO4UR5.mjs} +1 -1
  26. package/dist/preview-engine/{chunk-OF75EHTX.mjs → chunk-T6CC2KCZ.mjs} +1 -1
  27. package/dist/preview-engine/fonts.mjs +1 -1
  28. package/dist/preview-engine/framefields.mjs +1 -1
  29. package/dist/preview-engine/player.mjs +1 -1
  30. package/dist/preview-engine/{renderers-LTNTQLWE.mjs → renderers-7HNVXNAI.mjs} +1 -1
  31. package/dist/{program-C797QMRL.mjs → program-xRfFoPxe.mjs} +2 -2
  32. package/dist/{program-C797QMRL.mjs.map → program-xRfFoPxe.mjs.map} +1 -1
  33. package/dist/renderer/index.mjs +2 -2
  34. package/dist/{renderer-CV8diddR.mjs → renderer-5h0llpx7.mjs} +2 -2
  35. package/dist/{renderer-CV8diddR.mjs.map → renderer-5h0llpx7.mjs.map} +1 -1
  36. package/dist/{renderer-C2gnWTQZ.mjs → renderer-6GeDT4Mx.mjs} +2 -2
  37. package/dist/{renderer-C2gnWTQZ.mjs.map → renderer-6GeDT4Mx.mjs.map} +1 -1
  38. package/dist/{renderer-BE4Ns0nw.mjs → renderer-8qpGxSSO.mjs} +2 -2
  39. package/dist/{renderer-BE4Ns0nw.mjs.map → renderer-8qpGxSSO.mjs.map} +1 -1
  40. package/dist/{renderer--vY6O19V.mjs → renderer-9wp5R7PL.mjs} +2 -2
  41. package/dist/{renderer--vY6O19V.mjs.map → renderer-9wp5R7PL.mjs.map} +1 -1
  42. package/dist/renderer-B4F6wL68.mjs +3 -0
  43. package/dist/renderer-B4i1jmiT.mjs +3 -0
  44. package/dist/renderer-B5ylY3uM.mjs +3 -0
  45. package/dist/{renderer-DPpgBTlK.mjs → renderer-BA8YwBRQ.mjs} +2 -2
  46. package/dist/{renderer-DPpgBTlK.mjs.map → renderer-BA8YwBRQ.mjs.map} +1 -1
  47. package/dist/{renderer-CpUbDJAV.mjs → renderer-BGXbGqY4.mjs} +2 -2
  48. package/dist/{renderer-CpUbDJAV.mjs.map → renderer-BGXbGqY4.mjs.map} +1 -1
  49. package/dist/{renderer-CckJJHbM.mjs → renderer-BJ6Y-7ke.mjs} +2 -2
  50. package/dist/{renderer-CckJJHbM.mjs.map → renderer-BJ6Y-7ke.mjs.map} +1 -1
  51. package/dist/renderer-BPw23wiR.mjs +3 -0
  52. package/dist/{renderer-DRpE3ZW4.mjs → renderer-BZmfKIom.mjs} +2 -2
  53. package/dist/{renderer-DRpE3ZW4.mjs.map → renderer-BZmfKIom.mjs.map} +1 -1
  54. package/dist/{renderer-B8gTyU3w.mjs → renderer-BgdkEFmv.mjs} +2 -2
  55. package/dist/{renderer-B8gTyU3w.mjs.map → renderer-BgdkEFmv.mjs.map} +1 -1
  56. package/dist/renderer-BghW-bSZ.mjs +3 -0
  57. package/dist/{renderer-CB8hMQgm.mjs → renderer-BiSALMQy.mjs} +1 -1
  58. package/dist/{renderer-BgqjWI7K.mjs → renderer-BnvqEqvE.mjs} +2 -2
  59. package/dist/{renderer-BgqjWI7K.mjs.map → renderer-BnvqEqvE.mjs.map} +1 -1
  60. package/dist/{renderer-CxQ5v4fJ.mjs → renderer-BpCxKWQm.mjs} +2 -2
  61. package/dist/{renderer-CxQ5v4fJ.mjs.map → renderer-BpCxKWQm.mjs.map} +1 -1
  62. package/dist/{renderer-9QCHY8Kh.mjs → renderer-BtRfKx5N.mjs} +2 -2
  63. package/dist/{renderer-9QCHY8Kh.mjs.map → renderer-BtRfKx5N.mjs.map} +1 -1
  64. package/dist/{renderer-EmG34sT2.mjs → renderer-But0u-xi.mjs} +2 -2
  65. package/dist/{renderer-EmG34sT2.mjs.map → renderer-But0u-xi.mjs.map} +1 -1
  66. package/dist/renderer-Bw3oZ9YT.mjs +3 -0
  67. package/dist/renderer-C2009W-_.mjs +3 -0
  68. package/dist/renderer-C36yoGXG.mjs +3 -0
  69. package/dist/{renderer-DX38J6mK.mjs → renderer-CIYcdZuZ.mjs} +2 -2
  70. package/dist/{renderer-DX38J6mK.mjs.map → renderer-CIYcdZuZ.mjs.map} +1 -1
  71. package/dist/{renderer-5jfDUKd4.mjs → renderer-CJNyhr_S.mjs} +2 -2
  72. package/dist/{renderer-5jfDUKd4.mjs.map → renderer-CJNyhr_S.mjs.map} +1 -1
  73. package/dist/renderer-CM1_2ZWA.mjs +3 -0
  74. package/dist/{renderer-BXaK02qA.mjs → renderer-CNF10fCq.mjs} +2 -2
  75. package/dist/{renderer-BXaK02qA.mjs.map → renderer-CNF10fCq.mjs.map} +1 -1
  76. package/dist/{renderer-BTYncYDf.mjs → renderer-CStktK20.mjs} +39 -39
  77. package/dist/{renderer-BTYncYDf.mjs.map → renderer-CStktK20.mjs.map} +1 -1
  78. package/dist/renderer-CWlzudP8.mjs +3 -0
  79. package/dist/{renderer-DAFyJ4dv.mjs → renderer-CcU7dVn9.mjs} +2 -2
  80. package/dist/{renderer-DAFyJ4dv.mjs.map → renderer-CcU7dVn9.mjs.map} +1 -1
  81. package/dist/renderer-Cd5vzrGs.mjs +3 -0
  82. package/dist/renderer-CeJ_vDXI.mjs +3 -0
  83. package/dist/{renderer-BcPpcKDI.mjs → renderer-CfeoxM_3.mjs} +2 -2
  84. package/dist/{renderer-BcPpcKDI.mjs.map → renderer-CfeoxM_3.mjs.map} +1 -1
  85. package/dist/{renderer-DgSO5OO0.mjs → renderer-CgmFh6MY.mjs} +1 -1
  86. package/dist/{renderer-gT0ADXMW.mjs → renderer-CoZKST2Y.mjs} +2 -2
  87. package/dist/{renderer-gT0ADXMW.mjs.map → renderer-CoZKST2Y.mjs.map} +1 -1
  88. package/dist/{renderer-DnF3aXPX.mjs → renderer-CroHPOsX.mjs} +2 -2
  89. package/dist/{renderer-DnF3aXPX.mjs.map → renderer-CroHPOsX.mjs.map} +1 -1
  90. package/dist/renderer-D5Z6mda5.mjs +3 -0
  91. package/dist/{renderer-D3uNI10l.mjs → renderer-D7ztfQHX.mjs} +2 -2
  92. package/dist/{renderer-D3uNI10l.mjs.map → renderer-D7ztfQHX.mjs.map} +1 -1
  93. package/dist/{renderer-6PqlYQjC.mjs → renderer-DAMJZNtX.mjs} +2 -2
  94. package/dist/{renderer-6PqlYQjC.mjs.map → renderer-DAMJZNtX.mjs.map} +1 -1
  95. package/dist/{renderer-D6Gi_h4K.mjs → renderer-DBlPbsgi.mjs} +1 -1
  96. package/dist/renderer-DCJa7OGk.mjs +3 -0
  97. package/dist/{renderer-B4ecTNR7.mjs → renderer-DCkSR2Ne.mjs} +2 -2
  98. package/dist/{renderer-B4ecTNR7.mjs.map → renderer-DCkSR2Ne.mjs.map} +1 -1
  99. package/dist/renderer-DGwSl7g1.mjs +3 -0
  100. package/dist/{renderer-lq4n1hSS.mjs → renderer-DNNqpK7t.mjs} +2 -2
  101. package/dist/{renderer-lq4n1hSS.mjs.map → renderer-DNNqpK7t.mjs.map} +1 -1
  102. package/dist/renderer-DNoRNfMm.mjs +3 -0
  103. package/dist/renderer-DOZ8bpyY.mjs +3 -0
  104. package/dist/renderer-DRHyRNU8.mjs +3 -0
  105. package/dist/{renderer-CKJb_Lky.mjs → renderer-DTvfYkI9.mjs} +2 -2
  106. package/dist/{renderer-CKJb_Lky.mjs.map → renderer-DTvfYkI9.mjs.map} +1 -1
  107. package/dist/{renderer-CuqhAB4i.mjs → renderer-DYm4duFr.mjs} +2 -2
  108. package/dist/{renderer-CuqhAB4i.mjs.map → renderer-DYm4duFr.mjs.map} +1 -1
  109. package/dist/{renderer-xp_J0ln7.mjs → renderer-DdVBt8Rz.mjs} +2 -2
  110. package/dist/{renderer-xp_J0ln7.mjs.map → renderer-DdVBt8Rz.mjs.map} +1 -1
  111. package/dist/{renderer-BpJgfBQ8.mjs → renderer-DffynBHa.mjs} +2 -2
  112. package/dist/{renderer-BpJgfBQ8.mjs.map → renderer-DffynBHa.mjs.map} +1 -1
  113. package/dist/{renderer-DCK73tcD.mjs → renderer-DjTiNeAp.mjs} +2 -2
  114. package/dist/{renderer-DCK73tcD.mjs.map → renderer-DjTiNeAp.mjs.map} +1 -1
  115. package/dist/{renderer-Dn8v2o9L.mjs → renderer-Dju9CaeL.mjs} +2 -2
  116. package/dist/{renderer-Dn8v2o9L.mjs.map → renderer-Dju9CaeL.mjs.map} +1 -1
  117. package/dist/renderer-DlD85Xoi.mjs +3 -0
  118. package/dist/renderer-Dr0bgOrW.mjs +3 -0
  119. package/dist/{renderer-zvtpCnqy.mjs → renderer-DryPrxYc.mjs} +1 -1
  120. package/dist/renderer-DurtG-Hc.mjs +3 -0
  121. package/dist/{renderer-CrVAvP92.mjs → renderer-DxtHmyAa.mjs} +2 -2
  122. package/dist/{renderer-CrVAvP92.mjs.map → renderer-DxtHmyAa.mjs.map} +1 -1
  123. package/dist/renderer-eFv9HBmL.mjs +3 -0
  124. package/dist/renderer-iuV6wQoL.mjs +4 -0
  125. package/dist/{renderer-BwmZUkvd.mjs → renderer-jkZ_IQnW.mjs} +2 -2
  126. package/dist/{renderer-BwmZUkvd.mjs.map → renderer-jkZ_IQnW.mjs.map} +1 -1
  127. package/dist/renderer-n-uuWPF4.mjs +3 -0
  128. package/dist/renderer-rzccTFuY.mjs +3 -0
  129. package/dist/{renderer-C-PfbkPu.mjs → renderer-wVldKtFU.mjs} +2 -2
  130. package/dist/{renderer-C-PfbkPu.mjs.map → renderer-wVldKtFU.mjs.map} +1 -1
  131. package/dist/{renderer-B1UeU7lX.mjs → renderer-xKOVmd2O.mjs} +4 -4
  132. package/dist/{renderer-B1UeU7lX.mjs.map → renderer-xKOVmd2O.mjs.map} +1 -1
  133. package/dist/renderer-y9eGFPFL.mjs +3 -0
  134. package/dist/{renderers-CP8CFWDs-Ciap7y_j.mjs → renderers-CP8CFWDs-BLgwUYX2.mjs} +2 -2
  135. package/dist/{renderers-CP8CFWDs-Ciap7y_j.mjs.map → renderers-CP8CFWDs-BLgwUYX2.mjs.map} +1 -1
  136. package/dist/signals/index.mjs +4 -4
  137. package/package.json +55 -55
  138. package/dist/dist-DgfykO99.mjs.map +0 -1
  139. package/dist/preview-engine/chunk-ZJFAGIOM.mjs +0 -315
  140. package/dist/renderer-3uTfN95I.mjs +0 -3
  141. package/dist/renderer-B5GslTP-.mjs +0 -3
  142. package/dist/renderer-BUIWeIKQ.mjs +0 -3
  143. package/dist/renderer-B_LfC88A.mjs +0 -3
  144. package/dist/renderer-B_zmicsE.mjs +0 -3
  145. package/dist/renderer-BtNxtXkR.mjs +0 -3
  146. package/dist/renderer-C-sZSHtf.mjs +0 -3
  147. package/dist/renderer-C1zifktw.mjs +0 -3
  148. package/dist/renderer-CCt2XTSM.mjs +0 -3
  149. package/dist/renderer-CMXcaArD.mjs +0 -3
  150. package/dist/renderer-CW9D5zCP.mjs +0 -3
  151. package/dist/renderer-D1R7vBUl.mjs +0 -3
  152. package/dist/renderer-D5yawxtJ.mjs +0 -3
  153. package/dist/renderer-DC8jr1Ay.mjs +0 -3
  154. package/dist/renderer-DCv-Abvn.mjs +0 -4
  155. package/dist/renderer-DPLFhzaV.mjs +0 -3
  156. package/dist/renderer-DVsF2FDr.mjs +0 -3
  157. package/dist/renderer-DetDm3ep.mjs +0 -3
  158. package/dist/renderer-DhMhJh_G.mjs +0 -3
  159. package/dist/renderer-DhQld4Qt.mjs +0 -3
  160. package/dist/renderer-Dn3rc3ah.mjs +0 -3
  161. package/dist/renderer-Dw9LxE2f.mjs +0 -3
  162. package/dist/renderer-HvrQZw5E.mjs +0 -3
  163. package/dist/renderer-QdJE56ts.mjs +0 -3
  164. package/dist/renderer-euGyUN2O.mjs +0 -3
  165. package/dist/renderer-p3SmBFP9.mjs +0 -3
@@ -1,14 +1,14 @@
1
- import { C as WebGPUAudioProcessor } from "../dist-DgfykO99.mjs";
2
- import { t as renderers_default$1 } from "../renderers-CP8CFWDs-Ciap7y_j.mjs";
3
- import { i as mixAudioTracks } from "../dist-CoSg-CWr.mjs";
4
- import { t as renderers_default$2 } from "../renderer-CrVAvP92.mjs";
5
- import { t as renderers_default$3 } from "../renderer-CKJb_Lky.mjs";
6
- import { t as renderers_default } from "../renderer-D3uNI10l.mjs";
7
- import { t as renderers_default$4 } from "../renderer-lq4n1hSS.mjs";
8
- import { t as renderers_default$5 } from "../renderer-BcPpcKDI.mjs";
9
- import { t as renderers_default$6 } from "../renderer-BXaK02qA.mjs";
1
+ import { C as WebGPUAudioProcessor } from "../dist-B9PkqWnN.mjs";
2
+ import { t as renderers_default$1 } from "../renderers-CP8CFWDs-BLgwUYX2.mjs";
3
+ import { i as mixAudioTracks } from "../dist-BFjSQP7i.mjs";
4
+ import { t as renderers_default$2 } from "../renderer-DxtHmyAa.mjs";
5
+ import { t as renderers_default$3 } from "../renderer-DTvfYkI9.mjs";
6
+ import { t as renderers_default } from "../renderer-D7ztfQHX.mjs";
7
+ import { t as renderers_default$4 } from "../renderer-DNNqpK7t.mjs";
8
+ import { t as renderers_default$5 } from "../renderer-CfeoxM_3.mjs";
9
+ import { t as renderers_default$6 } from "../renderer-CNF10fCq.mjs";
10
10
  import "../renderer-C2n-EHxg.mjs";
11
- import { t as renderers_default$7 } from "../renderer-BpJgfBQ8.mjs";
11
+ import { t as renderers_default$7 } from "../renderer-DffynBHa.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-B9Afsv83.mjs";
2
- import { F as ensureDevice, i as AudioSignalComputePipeline } from "./dist-DgfykO99.mjs";
3
- import { n as decodeAudioSource } from "./dist-CoSg-CWr.mjs";
2
+ import { F as ensureDevice, i as AudioSignalComputePipeline } from "./dist-B9PkqWnN.mjs";
3
+ import { n as decodeAudioSource } from "./dist-BFjSQP7i.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-Dev4NGPa.mjs.map
85
+ //# sourceMappingURL=audio-B7Al-W_0.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"audio-Dev4NGPa.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-B7Al-W_0.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"}
@@ -5751,13 +5751,26 @@ var SlugFontCache = class SlugFontCache$1 {
5751
5751
  if (isNode && !isHttp) {
5752
5752
  const fs$1 = await import(
5753
5753
  /* webpackIgnore: true */
5754
- "fs/promises"
5754
+ "node:fs/promises"
5755
5755
  );
5756
5756
  const path$1 = await import(
5757
5757
  /* webpackIgnore: true */
5758
- "path"
5758
+ "node:path"
5759
5759
  );
5760
+ const fontDirs = [];
5761
+ if (process.env.FONTS_DIR) fontDirs.push(path$1.resolve(process.env.FONTS_DIR));
5762
+ if (process.env.FRAMEFIELDS_FONTS_DIR) fontDirs.push(path$1.resolve(process.env.FRAMEFIELDS_FONTS_DIR));
5763
+ let currentDir = process.cwd();
5764
+ for (let i = 0; i < 5; i++) {
5765
+ fontDirs.push(path$1.resolve(currentDir, "assets/fonts"));
5766
+ const parent = path$1.dirname(currentDir);
5767
+ if (parent === currentDir) break;
5768
+ currentDir = parent;
5769
+ }
5760
5770
  const candidates = [];
5771
+ const addCandidate = (candidatePath) => {
5772
+ if (!candidates.includes(candidatePath)) candidates.push(candidatePath);
5773
+ };
5761
5774
  if (fontUrl && !fontUrl.startsWith("//api/")) {
5762
5775
  let fontPath = fontUrl;
5763
5776
  if (fontUrl.startsWith("file://")) try {
@@ -5765,8 +5778,9 @@ var SlugFontCache = class SlugFontCache$1 {
5765
5778
  } catch {
5766
5779
  fontPath = fontUrl.replace(/^file:\/\//, "");
5767
5780
  }
5768
- candidates.push(fontPath);
5769
- candidates.push(path$1.resolve(process.cwd(), fontPath));
5781
+ addCandidate(fontPath);
5782
+ addCandidate(path$1.resolve(process.cwd(), fontPath));
5783
+ for (const dir of fontDirs) addCandidate(path$1.resolve(dir, path$1.basename(fontPath)));
5770
5784
  }
5771
5785
  const cleanFamily = fontFamily.replace(/['"]/g, "").trim();
5772
5786
  const variations = [
@@ -5774,15 +5788,14 @@ var SlugFontCache = class SlugFontCache$1 {
5774
5788
  cleanFamily.replace(/ /g, ""),
5775
5789
  cleanFamily.replace(/ /g, "_")
5776
5790
  ];
5777
- for (const v of variations) {
5778
- candidates.push(path$1.resolve(process.cwd(), "assets/fonts", v + ".ttf"));
5779
- candidates.push(path$1.resolve(process.cwd(), "assets/fonts", v + ".otf"));
5780
- candidates.push(`/Users/okanaslankan/framefields/assets/fonts/${v}.ttf`);
5781
- candidates.push(`/Users/okanaslankan/Gatewai/apps/gatewai-artifex/assets/fonts/${v}.ttf`);
5782
- candidates.push(`/Users/okanaslankan/Gatewai/apps/gatewai-backend/src/assets/fonts/${v}/font_file.ttf`);
5791
+ for (const dir of fontDirs) for (const v of variations) {
5792
+ addCandidate(path$1.resolve(dir, `${v}.ttf`));
5793
+ addCandidate(path$1.resolve(dir, `${v}.otf`));
5794
+ }
5795
+ for (const dir of fontDirs) {
5796
+ addCandidate(path$1.resolve(dir, "Inter.ttf"));
5797
+ addCandidate(path$1.resolve(dir, "Inter.otf"));
5783
5798
  }
5784
- candidates.push("/Users/okanaslankan/framefields/assets/fonts/Inter.ttf");
5785
- candidates.push("/Users/okanaslankan/Gatewai/apps/gatewai-artifex/assets/fonts/Inter.ttf");
5786
5799
  let nodeBuffer = null;
5787
5800
  for (const c of candidates) try {
5788
5801
  nodeBuffer = await fs$1.readFile(c);
@@ -27629,4 +27642,4 @@ var ScreenSpaceRelightPipeline = class {
27629
27642
 
27630
27643
  //#endregion
27631
27644
  export { probeVideoSize as $, drawLottieNode as A, inputStore as B, WebGPUAudioProcessor as C, drawCaptionNode as D, colorMatrixWgsl as E, ensureDevice as F, lutStore as G, loadFBX as H, generateExtrudedTextGeometry as I, parseColor as J, measureMaxCaptionHeight as K, getHeadlessFontPath as L, drawSignalNode as M, drawSvgNode as N, drawGifNode as O, drawVideoNode as P, poseNodes as Q, getRenderer2D as R, Vector3Math as S, clearAllVideoCache as T, loadModel3D as U, jointMatrices as V, loadOBJ as W, parseMTL as X, parseFBX as Y, parseOBJ as Z, ShadowPipeline as _, Camera3D as a, GetFontAssetUrl as at, SlugGeometry as b, Light3D as c, NodeSurfaceProvider as d, registerHeadlessFont as et, Path3D as f, ScreenSpaceRelightPipeline as g, SSAOPipeline as h, AudioSignalComputePipeline as i, textureCache as it, drawParagraphNode as j, drawImageNode as k, Matrix4Math as l, Renderer3D as m, AudioLatentTrackCache as n, signalRegistry as nt, EffectPipeline as o, getEnv as ot, Renderer2D as p, mediaDecoderCache as q, AudioMeshDeformPipeline as r, srtLoader as rt, GlassPipeline as s, resolveMediaSourceUrl as st, AudioLatentEngine as t, shaderStore as tt, MotionBlurPipeline as u, SignalRegistry as v, buildWGSLSignalFn as w, SlugPipeline as x, SlugFontCache as y, initHeadlessWebGPU as z };
27632
- //# sourceMappingURL=dist-DgfykO99.mjs.map
27645
+ //# sourceMappingURL=dist-B9PkqWnN.mjs.map