framefields 2.9.2 → 2.9.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.
- package/NOTICE.md +14 -0
- package/README.md +1 -5
- package/dist/audio/index.d.mts +5 -4
- package/dist/audio/index.mjs +13 -13
- package/dist/{audio-BfQg37MW.mjs → audio-B6RmYOPe.mjs} +4 -4
- package/dist/{audio-BfQg37MW.mjs.map → audio-B6RmYOPe.mjs.map} +1 -1
- package/dist/{audio-a0MFkK6J.mjs → audio-BlDbnteH.mjs} +1 -1
- package/dist/{audio-a0MFkK6J.mjs.map → audio-BlDbnteH.mjs.map} +1 -1
- package/dist/{audio-Ccpl9mjV.d.mts → audio-D6tBMbHh.d.mts} +4 -3
- package/dist/audio-D6tBMbHh.d.mts.map +1 -0
- package/dist/{check-result-C3jlgV2i.mjs → check-result-Bj7g62ka.mjs} +1 -1
- package/dist/{check-result-C3jlgV2i.mjs.map → check-result-Bj7g62ka.mjs.map} +1 -1
- package/dist/cli/check-worker.mjs +50 -50
- package/dist/cli.mjs +1 -1
- package/dist/components/index.d.mts +14 -11
- package/dist/components/index.mjs +47 -47
- package/dist/dist-BlulwErl.mjs +3 -0
- package/dist/{dist-BlIrsfcn.mjs → dist-ByxHoMQI.mjs} +1 -1
- package/dist/{dist-BlIrsfcn.mjs.map → dist-ByxHoMQI.mjs.map} +1 -1
- package/dist/{dist-Buaaj-Ul.mjs → dist-Cn8bDsQF.mjs} +1 -1
- package/dist/{dist-Buaaj-Ul.mjs.map → dist-Cn8bDsQF.mjs.map} +1 -1
- package/dist/{dist-C1cCW7Bt.mjs → dist-D12-a3-x.mjs} +3 -3
- package/dist/{dist-C1cCW7Bt.mjs.map → dist-D12-a3-x.mjs.map} +1 -1
- package/dist/{dist-C8Xq3zgx.mjs → dist-DEUU6sNe.mjs} +4 -4
- package/dist/{dist-C8Xq3zgx.mjs.map → dist-DEUU6sNe.mjs.map} +1 -1
- package/dist/{dist-DVMepKaO.mjs → dist-DL1GwJvs.mjs} +2 -2
- package/dist/{dist-DVMepKaO.mjs.map → dist-DL1GwJvs.mjs.map} +1 -1
- package/dist/dist-Dq5TkNDI.mjs +1434 -0
- package/dist/dist-Dq5TkNDI.mjs.map +1 -0
- package/dist/effects/index.d.mts +6 -4
- package/dist/effects/index.mjs +36 -36
- package/dist/{effects-CemgqEPv.mjs → effects-CViUoQSV.mjs} +3 -3
- package/dist/{effects-CemgqEPv.mjs.map → effects-CViUoQSV.mjs.map} +1 -1
- package/dist/fonts/index.d.mts +1 -1
- package/dist/fonts/index.mjs +3 -3
- package/dist/{fonts-BW0pPcvJ.mjs → fonts-B0U2KO5I.mjs} +2 -2
- package/dist/{fonts-BW0pPcvJ.mjs.map → fonts-B0U2KO5I.mjs.map} +1 -1
- package/dist/{gpu-CMaa63nz.mjs → gpu-zFNrvhV9.mjs} +2 -2
- package/dist/{gpu-CMaa63nz.mjs.map → gpu-zFNrvhV9.mjs.map} +1 -1
- package/dist/index-9_4X2ro1.d.mts +2402 -0
- package/dist/index-9_4X2ro1.d.mts.map +1 -0
- package/dist/{index-Bnh42ouE.d.mts → index-B9Lm1x8i.d.mts} +9 -8
- package/dist/index-B9Lm1x8i.d.mts.map +1 -0
- package/dist/{index-BfDFmIBE.d.mts → index-BuYtrhzL.d.mts} +1 -1
- package/dist/{index-BfDFmIBE.d.mts.map → index-BuYtrhzL.d.mts.map} +1 -1
- package/dist/{index-D5UDyVMb.d.mts → index-Bzo1uj8h.d.mts} +4 -2401
- package/dist/index-Bzo1uj8h.d.mts.map +1 -0
- package/dist/{index-CQ-bbZk3.d.mts → index-C6GcuYVA.d.mts} +6 -1164
- package/dist/index-C6GcuYVA.d.mts.map +1 -0
- package/dist/{index-BIjMAW1h.d.mts → index-CgGM31I9.d.mts} +2 -2
- package/dist/{index-BIjMAW1h.d.mts.map → index-CgGM31I9.d.mts.map} +1 -1
- package/dist/index-DBhswLMO.d.mts +330 -0
- package/dist/index-DBhswLMO.d.mts.map +1 -0
- package/dist/{index-CJL0JAU8.d.mts → index-V0ZQ4JN6.d.mts} +2 -2
- package/dist/{index-CJL0JAU8.d.mts.map → index-V0ZQ4JN6.d.mts.map} +1 -1
- package/dist/{index-7Z9_a_iB.d.mts → index-f4IF1vRH.d.mts} +3 -3
- package/dist/{index-7Z9_a_iB.d.mts.map → index-f4IF1vRH.d.mts.map} +1 -1
- package/dist/index-svAgwTY_.d.mts +1163 -0
- package/dist/index-svAgwTY_.d.mts.map +1 -0
- package/dist/{index-CFoAmh7q.d.mts → index-w28KUM9A.d.mts} +3 -3
- package/dist/{index-CFoAmh7q.d.mts.map → index-w28KUM9A.d.mts.map} +1 -1
- package/dist/index.d.mts +15 -12
- package/dist/index.mjs +58 -57
- package/dist/preview/index.d.mts +4 -3
- package/dist/preview/index.mjs +12 -12
- package/dist/{preview-DvP8AZuV.mjs → preview-ZKJ_zTmd.mjs} +3 -3
- package/dist/{preview-DvP8AZuV.mjs.map → preview-ZKJ_zTmd.mjs.map} +1 -1
- package/dist/preview-engine/{chunk-KXLXP66K.mjs → chunk-Q62GPWGD.mjs} +23 -23
- package/dist/preview-engine/components.mjs +1 -1
- package/dist/preview-engine/framefields.mjs +1 -1
- package/dist/{program-CKpKkllV.mjs → program-xjIwjKb6.mjs} +4 -4
- package/dist/{program-CKpKkllV.mjs.map → program-xjIwjKb6.mjs.map} +1 -1
- package/dist/renderer/index.d.mts +3 -2
- package/dist/renderer/index.mjs +3 -3
- package/dist/renderer-129U3pc9.mjs +5 -0
- package/dist/renderer-2phFTFxQ.mjs +5 -0
- package/dist/{renderer-Bfk6A7UO.mjs → renderer-5qJPGvVL.mjs} +5 -5
- package/dist/{renderer-Bfk6A7UO.mjs.map → renderer-5qJPGvVL.mjs.map} +1 -1
- package/dist/renderer-9muKpDeE.mjs +5 -0
- package/dist/{renderer-B522Dkdk.mjs → renderer-AUK_ZS3p.mjs} +4 -4
- package/dist/{renderer-B522Dkdk.mjs.map → renderer-AUK_ZS3p.mjs.map} +1 -1
- package/dist/{renderer-DKgPVOLL.d.mts → renderer-B-inTgyb.d.mts} +2 -2
- package/dist/{renderer-DKgPVOLL.d.mts.map → renderer-B-inTgyb.d.mts.map} +1 -1
- package/dist/{renderer-BF0hx_iJ.mjs → renderer-B3IRvukr.mjs} +5 -5
- package/dist/{renderer-BF0hx_iJ.mjs.map → renderer-B3IRvukr.mjs.map} +1 -1
- package/dist/renderer-B5Dhv6j9.mjs +5 -0
- package/dist/{renderer-DO-KbpYZ.mjs → renderer-B6TjJi1g.mjs} +5 -5
- package/dist/{renderer-DO-KbpYZ.mjs.map → renderer-B6TjJi1g.mjs.map} +1 -1
- package/dist/{renderer-D61B9bXF.mjs → renderer-B78W9uad.mjs} +4 -4
- package/dist/{renderer-D61B9bXF.mjs.map → renderer-B78W9uad.mjs.map} +1 -1
- package/dist/{renderer-BPWDsufX.mjs → renderer-B7kOF_Az.mjs} +3 -3
- package/dist/{renderer-BPWDsufX.mjs.map → renderer-B7kOF_Az.mjs.map} +1 -1
- package/dist/renderer-BBUgCS3C.mjs +5 -0
- package/dist/{renderer-C7eFJf0_.mjs → renderer-BG6bkKtY.mjs} +5 -5
- package/dist/{renderer-C7eFJf0_.mjs.map → renderer-BG6bkKtY.mjs.map} +1 -1
- package/dist/{renderer-B39I6CQw.mjs → renderer-BJKzZwyn.mjs} +4 -4
- package/dist/{renderer-B39I6CQw.mjs.map → renderer-BJKzZwyn.mjs.map} +1 -1
- package/dist/{renderer-DqvoMLca.mjs → renderer-BJQt0RiZ.mjs} +5 -5
- package/dist/{renderer-DqvoMLca.mjs.map → renderer-BJQt0RiZ.mjs.map} +1 -1
- package/dist/renderer-BKXM28Mx.mjs +5 -0
- package/dist/renderer-BKqm6xdf.mjs +5 -0
- package/dist/{renderer-DiY70S8S.mjs → renderer-BMP_lYMk.mjs} +4 -4
- package/dist/{renderer-DiY70S8S.mjs.map → renderer-BMP_lYMk.mjs.map} +1 -1
- package/dist/renderer-BMfMMf0R.mjs +5 -0
- package/dist/{renderer-DkRSZg5g.mjs → renderer-BNbMi9CI.mjs} +5 -5
- package/dist/{renderer-DkRSZg5g.mjs.map → renderer-BNbMi9CI.mjs.map} +1 -1
- package/dist/{renderer-D7Al3_-5.mjs → renderer-BPYIqtNg.mjs} +5 -5
- package/dist/{renderer-D7Al3_-5.mjs.map → renderer-BPYIqtNg.mjs.map} +1 -1
- package/dist/renderer-BPsjEnnl.mjs +5 -0
- package/dist/{renderer-DDEkFbVI.mjs → renderer-BQOeeXTr.mjs} +5 -5
- package/dist/{renderer-DDEkFbVI.mjs.map → renderer-BQOeeXTr.mjs.map} +1 -1
- package/dist/{renderer-GBmWjBvy.mjs → renderer-BRWjLiHX.mjs} +3 -3
- package/dist/{renderer-GBmWjBvy.mjs.map → renderer-BRWjLiHX.mjs.map} +1 -1
- package/dist/{renderer-_iMAO698.mjs → renderer-BVql26Ay.mjs} +2 -2
- package/dist/{renderer-_iMAO698.mjs.map → renderer-BVql26Ay.mjs.map} +1 -1
- package/dist/{renderer-CHr7MiYW.mjs → renderer-BWMzjSgf.mjs} +5 -5
- package/dist/{renderer-CHr7MiYW.mjs.map → renderer-BWMzjSgf.mjs.map} +1 -1
- package/dist/{renderer-pHWEHDnM.mjs → renderer-BYqrtBvd.mjs} +5 -5
- package/dist/{renderer-pHWEHDnM.mjs.map → renderer-BYqrtBvd.mjs.map} +1 -1
- package/dist/{renderer-CwFqqpWY.mjs → renderer-BZmmekE8.mjs} +4 -4
- package/dist/{renderer-CwFqqpWY.mjs.map → renderer-BZmmekE8.mjs.map} +1 -1
- package/dist/{renderer-D47AEJE_.mjs → renderer-BcO7LUla.mjs} +3 -3
- package/dist/{renderer-D47AEJE_.mjs.map → renderer-BcO7LUla.mjs.map} +1 -1
- package/dist/{renderer-BlvGcyAN.mjs → renderer-BdbI_u9w.mjs} +3 -3
- package/dist/{renderer-BlvGcyAN.mjs.map → renderer-BdbI_u9w.mjs.map} +1 -1
- package/dist/{renderer-DPAD6fL1.mjs → renderer-Be5hfwSd.mjs} +74 -74
- package/dist/{renderer-DPAD6fL1.mjs.map → renderer-Be5hfwSd.mjs.map} +1 -1
- package/dist/{renderer-BAYTI6jj.mjs → renderer-BfbSvElt.mjs} +4 -4
- package/dist/{renderer-BAYTI6jj.mjs.map → renderer-BfbSvElt.mjs.map} +1 -1
- package/dist/{renderer-BpIF1QIE.mjs → renderer-BgDLCCuq.mjs} +5 -5
- package/dist/{renderer-BpIF1QIE.mjs.map → renderer-BgDLCCuq.mjs.map} +1 -1
- package/dist/renderer-Bofr6f88.mjs +6 -0
- package/dist/renderer-BqoGcujR.mjs +5 -0
- package/dist/renderer-BvuBt2aH.mjs +5 -0
- package/dist/renderer-BxTgXHu1.mjs +5 -0
- package/dist/renderer-Bz2Rrz60.mjs +5 -0
- package/dist/{renderer-g_vrrAQU.mjs → renderer-C06U4c9k.mjs} +3 -3
- package/dist/{renderer-g_vrrAQU.mjs.map → renderer-C06U4c9k.mjs.map} +1 -1
- package/dist/{renderer-D7r6onRT.mjs → renderer-C3Iev6zu.mjs} +4 -4
- package/dist/{renderer-D7r6onRT.mjs.map → renderer-C3Iev6zu.mjs.map} +1 -1
- package/dist/{renderer-CpUJBOfb.mjs → renderer-C3tVrzyT.mjs} +3 -3
- package/dist/{renderer-SWr3vbrV.mjs → renderer-C4yKI8MT.mjs} +3 -3
- package/dist/{renderer-SWr3vbrV.mjs.map → renderer-C4yKI8MT.mjs.map} +1 -1
- package/dist/{renderer-Xv6GfNUI.mjs → renderer-C6st34I6.mjs} +3 -3
- package/dist/{renderer-Xv6GfNUI.mjs.map → renderer-C6st34I6.mjs.map} +1 -1
- package/dist/{renderer-sCovEubT.mjs → renderer-C7MAqpIS.mjs} +4 -4
- package/dist/{renderer-sCovEubT.mjs.map → renderer-C7MAqpIS.mjs.map} +1 -1
- package/dist/renderer-CBjG8rjE.mjs +5 -0
- package/dist/{renderer-BAusZ6Vu.mjs → renderer-CCFHnafT.mjs} +4 -4
- package/dist/{renderer-BAusZ6Vu.mjs.map → renderer-CCFHnafT.mjs.map} +1 -1
- package/dist/{renderer-DVCJjVn7.mjs → renderer-CDVb4OfJ.mjs} +5 -5
- package/dist/{renderer-DVCJjVn7.mjs.map → renderer-CDVb4OfJ.mjs.map} +1 -1
- package/dist/{renderer-DpruWmZU.mjs → renderer-CEfVvcw-.mjs} +4 -4
- package/dist/{renderer-DpruWmZU.mjs.map → renderer-CEfVvcw-.mjs.map} +1 -1
- package/dist/{renderer-DbRZe0Re.mjs → renderer-CIB5L_C4.mjs} +5 -5
- package/dist/{renderer-DbRZe0Re.mjs.map → renderer-CIB5L_C4.mjs.map} +1 -1
- package/dist/{renderer-ktWXVYka.mjs → renderer-CPTXJs0n.mjs} +6 -6
- package/dist/{renderer-ktWXVYka.mjs.map → renderer-CPTXJs0n.mjs.map} +1 -1
- package/dist/renderer-CS2zyPyZ.mjs +5 -0
- package/dist/{renderer-CcvvoKiZ.mjs → renderer-CUBDxuxh.mjs} +5 -5
- package/dist/{renderer-CcvvoKiZ.mjs.map → renderer-CUBDxuxh.mjs.map} +1 -1
- package/dist/renderer-CWLF6cAz.mjs +1008 -0
- package/dist/renderer-CWLF6cAz.mjs.map +1 -0
- package/dist/{renderer-EaLUCobW.mjs → renderer-CXLugAe8.mjs} +4 -4
- package/dist/{renderer-EaLUCobW.mjs.map → renderer-CXLugAe8.mjs.map} +1 -1
- package/dist/renderer-CXnbl_jR.mjs +5 -0
- package/dist/{renderer-C7L8Ceqr.mjs → renderer-CYX9vKZ-.mjs} +4 -4
- package/dist/{renderer-C7L8Ceqr.mjs.map → renderer-CYX9vKZ-.mjs.map} +1 -1
- package/dist/{renderer-8QIwXh7O.mjs → renderer-C_2UDMEG.mjs} +6 -6
- package/dist/{renderer-8QIwXh7O.mjs.map → renderer-C_2UDMEG.mjs.map} +1 -1
- package/dist/renderer-CaF9vod_.mjs +5 -0
- package/dist/renderer-CbSBH3lp.mjs +5 -0
- package/dist/{renderer-B2jjxsjO.mjs → renderer-CbhnJi_8.mjs} +4 -4
- package/dist/{renderer-B2jjxsjO.mjs.map → renderer-CbhnJi_8.mjs.map} +1 -1
- package/dist/{renderer-BdyopiLC.mjs → renderer-CcJyD9Q5.mjs} +4 -4
- package/dist/{renderer-BdyopiLC.mjs.map → renderer-CcJyD9Q5.mjs.map} +1 -1
- package/dist/renderer-CdjuGRbO.mjs +5 -0
- package/dist/{renderer-DF-yvIrV.mjs → renderer-Cl8r1LJe.mjs} +4 -4
- package/dist/{renderer-DF-yvIrV.mjs.map → renderer-Cl8r1LJe.mjs.map} +1 -1
- package/dist/renderer-CoLbxC13.mjs +5 -0
- package/dist/{renderer-BgO6BA_z.mjs → renderer-CpedZNEG.mjs} +3 -3
- package/dist/{renderer-BgO6BA_z.mjs.map → renderer-CpedZNEG.mjs.map} +1 -1
- package/dist/renderer-Cr9G0dXB.mjs +5 -0
- package/dist/{renderer-bAKUeHF3.mjs → renderer-CwVbHki6.mjs} +5 -5
- package/dist/{renderer-bAKUeHF3.mjs.map → renderer-CwVbHki6.mjs.map} +1 -1
- package/dist/{renderer-DTqDy2m9.mjs → renderer-CyCtm0UV.mjs} +3 -3
- package/dist/{renderer-DTqDy2m9.mjs.map → renderer-CyCtm0UV.mjs.map} +1 -1
- package/dist/{renderer-CYC32bDW.mjs → renderer-D1VsqFf4.mjs} +5 -5
- package/dist/{renderer-CYC32bDW.mjs.map → renderer-D1VsqFf4.mjs.map} +1 -1
- package/dist/{renderer-CCycwCEB.mjs → renderer-D2TTDcgh.mjs} +3 -3
- package/dist/{renderer-CCycwCEB.mjs.map → renderer-D2TTDcgh.mjs.map} +1 -1
- package/dist/renderer-D63l6_UC.mjs +5 -0
- package/dist/renderer-DCJqnzER.mjs +5 -0
- package/dist/{renderer-cod5Ona9.mjs → renderer-DEQeONTd.mjs} +3 -3
- package/dist/renderer-DFBOR5J3.mjs +5 -0
- package/dist/renderer-DGAZSzw6.mjs +5 -0
- package/dist/{renderer-oKRF4A0M.mjs → renderer-DH7l5WFr.mjs} +4 -4
- package/dist/{renderer-oKRF4A0M.mjs.map → renderer-DH7l5WFr.mjs.map} +1 -1
- package/dist/{renderer-DNQvOrkY.mjs → renderer-DIEmK57T.mjs} +5 -5
- package/dist/{renderer-DNQvOrkY.mjs.map → renderer-DIEmK57T.mjs.map} +1 -1
- package/dist/{renderer-DEmYyaqj.mjs → renderer-DIqkhsLI.mjs} +4 -4
- package/dist/{renderer-DEmYyaqj.mjs.map → renderer-DIqkhsLI.mjs.map} +1 -1
- package/dist/{renderer-DX41niRU.mjs → renderer-DOKHd37M.mjs} +4 -4
- package/dist/{renderer-DX41niRU.mjs.map → renderer-DOKHd37M.mjs.map} +1 -1
- package/dist/renderer-DPLGk1Qk.mjs +5 -0
- package/dist/renderer-DTCUzByS.mjs +5 -0
- package/dist/{renderer-BXJXziIt.mjs → renderer-DW7hbluw.mjs} +3 -3
- package/dist/{renderer-BXJXziIt.mjs.map → renderer-DW7hbluw.mjs.map} +1 -1
- package/dist/{renderer--fkmiVjl.mjs → renderer-Dat8opUZ.mjs} +4 -4
- package/dist/{renderer--fkmiVjl.mjs.map → renderer-Dat8opUZ.mjs.map} +1 -1
- package/dist/renderer-DdGahYi1.mjs +5 -0
- package/dist/{renderer-DmkWrWAk.mjs → renderer-Dee8ksIV.mjs} +3 -3
- package/dist/{renderer-DmkWrWAk.mjs.map → renderer-Dee8ksIV.mjs.map} +1 -1
- package/dist/renderer-DhL4nNPk.mjs +5 -0
- package/dist/renderer-DkyTbiVz.mjs +3 -0
- package/dist/renderer-DnAZweRX.mjs +5 -0
- package/dist/{renderer-BX7jS14r.d.mts → renderer-DoPEPlbG.d.mts} +3 -2
- package/dist/{renderer-BX7jS14r.d.mts.map → renderer-DoPEPlbG.d.mts.map} +1 -1
- package/dist/renderer-DpisVnT2.mjs +5 -0
- package/dist/{renderer-mNSyac1V.mjs → renderer-DrWeb39d.mjs} +1 -1
- package/dist/{renderer-mNSyac1V.mjs.map → renderer-DrWeb39d.mjs.map} +1 -1
- package/dist/renderer-Ds7pAKnE.mjs +3 -0
- package/dist/{renderer-CiQhD8Gg.mjs → renderer-Dss7T71q.mjs} +5 -5
- package/dist/{renderer-CiQhD8Gg.mjs.map → renderer-Dss7T71q.mjs.map} +1 -1
- package/dist/{renderer-C41U1tK6.mjs → renderer-Du-GnKLb.mjs} +9 -9
- package/dist/{renderer-C41U1tK6.mjs.map → renderer-Du-GnKLb.mjs.map} +1 -1
- package/dist/renderer-DxZD5B54.mjs +5 -0
- package/dist/{renderer-WCZu2Rf5.mjs → renderer-ESkPj6pk.mjs} +4 -4
- package/dist/{renderer-WCZu2Rf5.mjs.map → renderer-ESkPj6pk.mjs.map} +1 -1
- package/dist/{renderer-DMvmf3T2.mjs → renderer-F1D9ZJ8I.mjs} +3 -3
- package/dist/{renderer-BlPqTEii.mjs → renderer-HnSiwSW8.mjs} +4 -4
- package/dist/{renderer-BlPqTEii.mjs.map → renderer-HnSiwSW8.mjs.map} +1 -1
- package/dist/{renderer-1r-Uq-Ae.mjs → renderer-IQ97z2rw.mjs} +3 -3
- package/dist/{renderer-1r-Uq-Ae.mjs.map → renderer-IQ97z2rw.mjs.map} +1 -1
- package/dist/{renderer-DFzI3yI_.mjs → renderer-NTCk1Srf.mjs} +3 -3
- package/dist/{renderer-DFzI3yI_.mjs.map → renderer-NTCk1Srf.mjs.map} +1 -1
- package/dist/{renderer-D8bBHrWC.mjs → renderer-OsQRvOle.mjs} +5 -5
- package/dist/{renderer-D8bBHrWC.mjs.map → renderer-OsQRvOle.mjs.map} +1 -1
- package/dist/renderer-PMHOnbnA.mjs +5 -0
- package/dist/renderer-STufNpMx.mjs +5 -0
- package/dist/renderer-SdrgfCxH.mjs +5 -0
- package/dist/{renderer-Lth37j17.mjs → renderer-US4GsamT.mjs} +3 -3
- package/dist/{renderer-zXPVLRlD.mjs → renderer-VhkubIx_.mjs} +5 -5
- package/dist/{renderer-zXPVLRlD.mjs.map → renderer-VhkubIx_.mjs.map} +1 -1
- package/dist/{renderer-DIw3UtEU.mjs → renderer-bbaMOD4I.mjs} +5 -5
- package/dist/{renderer-DIw3UtEU.mjs.map → renderer-bbaMOD4I.mjs.map} +1 -1
- package/dist/{renderer-hSCfnvaK.mjs → renderer-eT7Gp7FS.mjs} +5 -5
- package/dist/{renderer-hSCfnvaK.mjs.map → renderer-eT7Gp7FS.mjs.map} +1 -1
- package/dist/{renderer-CQvmbRQ5.mjs → renderer-g7fF2AYk.mjs} +5 -5
- package/dist/{renderer-CQvmbRQ5.mjs.map → renderer-g7fF2AYk.mjs.map} +1 -1
- package/dist/{renderer-B-ur0Ej8.mjs → renderer-mLlgfM7X.mjs} +4 -4
- package/dist/{renderer-B-ur0Ej8.mjs.map → renderer-mLlgfM7X.mjs.map} +1 -1
- package/dist/{renderer-SSBL4M1o.mjs → renderer-mQt-y49D.mjs} +5 -5
- package/dist/{renderer-SSBL4M1o.mjs.map → renderer-mQt-y49D.mjs.map} +1 -1
- package/dist/{renderer-BIGFP1cF.mjs → renderer-q4zMFfnY.mjs} +2 -2
- package/dist/{renderer-BIGFP1cF.mjs.map → renderer-q4zMFfnY.mjs.map} +1 -1
- package/dist/{renderer-DXEWbnRF.mjs → renderer-sPI7aY6c.mjs} +4 -4
- package/dist/{renderer-DXEWbnRF.mjs.map → renderer-sPI7aY6c.mjs.map} +1 -1
- package/dist/{renderer-sYSkIUfo.mjs → renderer-xDV2cCkX.mjs} +5 -5
- package/dist/{renderer-sYSkIUfo.mjs.map → renderer-xDV2cCkX.mjs.map} +1 -1
- package/dist/{renderers-CP8CFWDs-DH2oktaC.mjs → renderers-CP8CFWDs-BH1gUTYa.mjs} +4 -4
- package/dist/{renderers-CP8CFWDs-DH2oktaC.mjs.map → renderers-CP8CFWDs-BH1gUTYa.mjs.map} +1 -1
- package/dist/sam/index.d.mts +4 -0
- package/dist/sam/index.mjs +3 -0
- package/dist/signals/index.d.mts +7 -6
- package/dist/signals/index.mjs +8 -8
- package/dist/{signals-CXwgAUp-.mjs → signals-gOd0Ui9B.mjs} +4 -4
- package/dist/{signals-CXwgAUp-.mjs.map → signals-gOd0Ui9B.mjs.map} +1 -1
- package/dist/{src-DFEqficI.mjs → src-BU1VOWSk.mjs} +12 -18
- package/dist/src-BU1VOWSk.mjs.map +1 -0
- package/dist/{renderer-B2P1vgb7.mjs → src-Bnr8DUC--DzkRGA62.mjs} +8 -1008
- package/dist/src-Bnr8DUC--DzkRGA62.mjs.map +1 -0
- package/package.json +69 -69
- package/dist/audio-Ccpl9mjV.d.mts.map +0 -1
- package/dist/index-Bnh42ouE.d.mts.map +0 -1
- package/dist/index-CQ-bbZk3.d.mts.map +0 -1
- package/dist/index-D5UDyVMb.d.mts.map +0 -1
- package/dist/renderer--Ac-dg4A.mjs +0 -5
- package/dist/renderer--N7TMqzU.mjs +0 -5
- package/dist/renderer-2ecmdOae.mjs +0 -5
- package/dist/renderer-B2P1vgb7.mjs.map +0 -1
- package/dist/renderer-B5RJp5g-.mjs +0 -5
- package/dist/renderer-B7xyT1Vb.mjs +0 -5
- package/dist/renderer-BBeArN_x.mjs +0 -5
- package/dist/renderer-BCAZDu-r.mjs +0 -5
- package/dist/renderer-BJnhik7Y.mjs +0 -5
- package/dist/renderer-BxRW8MZO.mjs +0 -5
- package/dist/renderer-C-lfsEAN.mjs +0 -5
- package/dist/renderer-C6nOFN4-.mjs +0 -5
- package/dist/renderer-C84TSQmS.mjs +0 -5
- package/dist/renderer-C8_6YofT.mjs +0 -5
- package/dist/renderer-COb3tOPG.mjs +0 -5
- package/dist/renderer-CSCIzaLy.mjs +0 -5
- package/dist/renderer-CmI4c8MS.mjs +0 -5
- package/dist/renderer-CqVltdX9.mjs +0 -5
- package/dist/renderer-D-FpMzLY.mjs +0 -5
- package/dist/renderer-D-Oyn9mG.mjs +0 -5
- package/dist/renderer-D2QrkA8_.mjs +0 -5
- package/dist/renderer-D5bjOx83.mjs +0 -3
- package/dist/renderer-D64r4iN-.mjs +0 -5
- package/dist/renderer-DCq6YkgP.mjs +0 -5
- package/dist/renderer-DDHG3GdR.mjs +0 -5
- package/dist/renderer-DMdNfcud.mjs +0 -6
- package/dist/renderer-DZQXZ4lK.mjs +0 -5
- package/dist/renderer-DczJJLA1.mjs +0 -5
- package/dist/renderer-DfqJj9oe.mjs +0 -5
- package/dist/renderer-DgO9ihVJ.mjs +0 -5
- package/dist/renderer-DhgnQZYb.mjs +0 -5
- package/dist/renderer-DjxKjHMf.mjs +0 -5
- package/dist/renderer-DnRDW2Oz.mjs +0 -3
- package/dist/renderer-DqLA5cdR.mjs +0 -5
- package/dist/renderer-Dudp6ZlH.mjs +0 -5
- package/dist/renderer-_jC5KIT1.mjs +0 -5
- package/dist/renderer-cTgAuVmJ.mjs +0 -5
- package/dist/renderer-nVKDvDLO.mjs +0 -5
- package/dist/renderer-pZ6_pUo1.mjs +0 -5
- package/dist/src-DFEqficI.mjs.map +0 -1
- /package/dist/{chunk-BcJoO4Nm.mjs → chunk-D8S17ehY.mjs} +0 -0
- /package/dist/{renderer-COqFNSfV.mjs → renderer-Cputd36d.mjs} +0 -0
package/NOTICE.md
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Notice: framefields
|
|
2
|
+
|
|
3
|
+
framefields is licensed under Apache-2.0. It contains no model weights: every vision model downloads on first use from a pinned revision into the local model cache (`~/.cache/framefields/models`) and is verified by size and SHA-256. The licenses below apply to those downloaded weights, not to framefields' code.
|
|
4
|
+
|
|
5
|
+
## Prompted tracking (SAM)
|
|
6
|
+
|
|
7
|
+
`comp.vision(clip, { sam2 | sam3 })` and `framefields/sam` track objects with Meta's Segment Anything models: SAM 2.1 (Tiny and Small) and SAM 3. That code is written for framefields and licensed under Apache-2.0; it contains no code or weights distributed by Meta. It loads only when a clip uses `sam2` or `sam3`.
|
|
8
|
+
|
|
9
|
+
| Model | Weights license | Acceptance |
|
|
10
|
+
| --- | --- | --- |
|
|
11
|
+
| SAM 2.1 Tiny / Small (Diffusion Studio ONNX exports of `facebook/sam2.1-hiera-*`) | Apache-2.0 | none |
|
|
12
|
+
| SAM 3 (ONNX exports of Meta's SAM 3 checkpoints) | Meta SAM License | required at runtime |
|
|
13
|
+
|
|
14
|
+
Before SAM 3 weights are downloaded or run, you must accept Meta's SAM License (https://github.com/facebookresearch/sam3/blob/main/LICENSE): pass `acceptSamLicense: true` in `comp.vision` options (or `acceptLicense: true` to `Sam3Tracker`), or set `FRAMEFIELDS_ACCEPT_SAM_LICENSE=1`. Your use of SAM 3 is then governed by that license.
|
package/README.md
CHANGED
|
@@ -196,11 +196,7 @@ Installed components import only `framefields` and the shared toolkit in `framef
|
|
|
196
196
|
|
|
197
197
|
## Select and track a subject
|
|
198
198
|
|
|
199
|
-
Select a specific object with a point or box (SAM 2.1 Tiny or Small), or by description, several at once, or a whole group as one mask (SAM 3), and track it through video. Masks, bounds, motion and optional matched pose feed the existing vision signals; the same clip masks drive cutouts. SAM ships
|
|
200
|
-
|
|
201
|
-
```bash
|
|
202
|
-
pnpm add @framefields/vision-sam
|
|
203
|
-
```
|
|
199
|
+
Select a specific object with a point or box (SAM 2.1 Tiny or Small), or by description, several at once, or a whole group as one mask (SAM 3), and track it through video. Masks, bounds, motion and optional matched pose feed the existing vision signals; the same clip masks drive cutouts. The SAM code ships in framefields and loads only when a clip uses it; model weights download on first use, and SAM 3's are under Meta's SAM License, which you accept explicitly (see `NOTICE.md`).
|
|
204
200
|
|
|
205
201
|
```ts
|
|
206
202
|
const subject = Layer.video("assets/source.mp4", {
|
package/dist/audio/index.d.mts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { a as SfxTrigger, c as softLimit, d as _default$5, f as _default$4, g as mixAudioTracks, h as _default$2, i as SfxRenderContext, l as _default$7, m as _default$3, n as encodeStereoWav, o as mixSfxInto, p as _default, r as RenderedSfx, s as renderSfx, t as EncodeWavOptions, u as _default$6 } from "../index-
|
|
3
|
-
import "../
|
|
4
|
-
import
|
|
1
|
+
import "../index-9_4X2ro1.mjs";
|
|
2
|
+
import { a as SfxTrigger, c as softLimit, d as _default$5, f as _default$4, g as mixAudioTracks, h as _default$2, i as SfxRenderContext, l as _default$7, m as _default$3, n as encodeStereoWav, o as mixSfxInto, p as _default, r as RenderedSfx, s as renderSfx, t as EncodeWavOptions, u as _default$6 } from "../index-w28KUM9A.mjs";
|
|
3
|
+
import { W as WebGPUAudioProcessor } from "../index-Bzo1uj8h.mjs";
|
|
4
|
+
import "../renderer-DoPEPlbG.mjs";
|
|
5
|
+
import { t as _default$1 } from "../renderer-B-inTgyb.mjs";
|
|
5
6
|
export { EncodeWavOptions, RenderedSfx, SfxRenderContext, SfxTrigger, WebGPUAudioProcessor, _default as audioFadeRenderer, _default$1 as audioSignalExtractorRenderer, _default$2 as compressorRenderer, _default$3 as delayRenderer, encodeStereoWav, mixAudioTracks, mixSfxInto, _default$4 as noiseGateRenderer, _default$5 as parametricEqRenderer, renderSfx, _default$6 as reverbRenderer, softLimit, _default$7 as stereoPanningRenderer };
|
package/dist/audio/index.mjs
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import "../chunk-
|
|
2
|
-
import { g as WebGPUAudioProcessor } from "../dist-
|
|
3
|
-
import { t as renderers_default$1 } from "../renderers-CP8CFWDs-
|
|
4
|
-
import { i as mixAudioTracks } from "../dist-
|
|
5
|
-
import { t as renderers_default$2 } from "../renderer-
|
|
6
|
-
import { t as renderers_default$3 } from "../renderer-
|
|
7
|
-
import { t as renderers_default } from "../renderer-
|
|
8
|
-
import { t as renderers_default$4 } from "../renderer
|
|
9
|
-
import { t as renderers_default$5 } from "../renderer-
|
|
10
|
-
import { t as renderers_default$6 } from "../renderer-
|
|
11
|
-
import "../renderer-
|
|
12
|
-
import { t as renderers_default$7 } from "../renderer-
|
|
13
|
-
import { i as softLimit, n as mixSfxInto, r as renderSfx, t as encodeStereoWav } from "../audio-
|
|
1
|
+
import "../chunk-D8S17ehY.mjs";
|
|
2
|
+
import { g as WebGPUAudioProcessor } from "../dist-D12-a3-x.mjs";
|
|
3
|
+
import { t as renderers_default$1 } from "../renderers-CP8CFWDs-BH1gUTYa.mjs";
|
|
4
|
+
import { i as mixAudioTracks } from "../dist-DEUU6sNe.mjs";
|
|
5
|
+
import { t as renderers_default$2 } from "../renderer-CbhnJi_8.mjs";
|
|
6
|
+
import { t as renderers_default$3 } from "../renderer-CEfVvcw-.mjs";
|
|
7
|
+
import { t as renderers_default } from "../renderer-BfbSvElt.mjs";
|
|
8
|
+
import { t as renderers_default$4 } from "../renderer-Dat8opUZ.mjs";
|
|
9
|
+
import { t as renderers_default$5 } from "../renderer-CYX9vKZ-.mjs";
|
|
10
|
+
import { t as renderers_default$6 } from "../renderer-CCFHnafT.mjs";
|
|
11
|
+
import "../renderer-Cputd36d.mjs";
|
|
12
|
+
import { t as renderers_default$7 } from "../renderer-DH7l5WFr.mjs";
|
|
13
|
+
import { i as softLimit, n as mixSfxInto, r as renderSfx, t as encodeStereoWav } from "../audio-BlDbnteH.mjs";
|
|
14
14
|
|
|
15
15
|
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
|
-
import { Mt as frameArraySignal } from "./dist-
|
|
2
|
-
import { Dt as AudioSignalComputePipeline, j as ensureDevice } from "./dist-
|
|
3
|
-
import { n as decodeAudioSource } from "./dist-
|
|
1
|
+
import { Mt as frameArraySignal } from "./dist-ByxHoMQI.mjs";
|
|
2
|
+
import { Dt as AudioSignalComputePipeline, j as ensureDevice } from "./dist-D12-a3-x.mjs";
|
|
3
|
+
import { n as decodeAudioSource } from "./dist-DEUU6sNe.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-
|
|
85
|
+
//# sourceMappingURL=audio-B6RmYOPe.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audio-
|
|
1
|
+
{"version":3,"file":"audio-B6RmYOPe.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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audio-a0MFkK6J.mjs","names":[],"sources":["../src/audio/synth/sfx.ts","../src/audio/synth/wav-encoder.ts"],"sourcesContent":["/**\n * @file packages/framefields/src/audio/synth/sfx.ts\n * Deterministic procedural transition effects (whoosh, riser, impact, downshifter, glitch).\n * Pure CPU DSP: the same trigger always renders the same samples.\n */\n\n/**\n * Procedural sound effect transition event, synthesized deterministically on the CPU.\n * Default durations: whoosh 0.7s, riser 2s, impact 1.8s, downshifter 1.2s, glitch 0.35s.\n */\nexport interface SfxTrigger {\n\ttype: \"whoosh\" | \"riser\" | \"impact\" | \"downshifter\" | \"glitch\";\n\t/** Bar (fractional allowed) where the effect *starts*. A riser landing on a cut starts `durationSec` earlier. */\n\tatBar: number;\n\tdurationSec?: number;\n\tvolume?: number;\n}\n\nexport type StereoBuffer = [Float32Array, Float32Array];\n\nexport interface RenderedSfx {\n\t/** First sample of the effect on the score timeline. */\n\tstartSample: number;\n\tchannels: StereoBuffer;\n}\n\nexport interface SfxRenderContext {\n\tsampleRate: number;\n\tsecondsPerBar: number;\n\t/** Distinguishes otherwise identical triggers so noise differs between them. */\n\tseed: number;\n}\n\nconst DEFAULT_DURATION_SEC: Record<SfxTrigger[\"type\"], number> = {\n\twhoosh: 0.7,\n\triser: 2,\n\timpact: 1.8,\n\tdownshifter: 1.2,\n\tglitch: 0.35,\n};\n\n/** Small, fast, seedable PRNG returning values in [-1, 1). */\nfunction createNoise(seed: number): () => number {\n\tlet state = (seed ^ 0x9e3779b9) >>> 0;\n\treturn () => {\n\t\tstate = (state + 0x6d2b79f5) >>> 0;\n\t\tlet t = state;\n\t\tt = Math.imul(t ^ (t >>> 15), t | 1);\n\t\tt ^= t + Math.imul(t ^ (t >>> 7), t | 61);\n\t\treturn (((t ^ (t >>> 14)) >>> 0) / 4294967296) * 2 - 1;\n\t};\n}\n\n/** Chamberlin state-variable filter; returns the band-pass output of one sample. */\nclass BandPass {\n\tprivate low = 0;\n\tprivate band = 0;\n\n\tpublic process(\n\t\tinput: number,\n\t\tfreq: number,\n\t\tq: number,\n\t\tsampleRate: number,\n\t): number {\n\t\tconst f =\n\t\t\t2 * Math.sin((Math.PI * Math.min(freq, sampleRate * 0.45)) / sampleRate);\n\t\tthis.low += f * this.band;\n\t\tconst high = input - this.low - q * this.band;\n\t\tthis.band += f * high;\n\t\treturn this.band;\n\t}\n}\n\n/** Exponential sweep from `a` to `b` as `x` moves 0 → 1. */\nconst expSweep = (a: number, b: number, x: number): number => a * (b / a) ** x;\n\n/** Fast rise, longer fall: a bell centred at `peak` in 0..1. */\nconst bell = (x: number, peak: number): number =>\n\tx < peak\n\t\t? Math.sin((x / peak) * (Math.PI / 2)) ** 2\n\t\t: Math.cos(((x - peak) / (1 - peak)) * (Math.PI / 2)) ** 2;\n\nfunction whoosh(\n\tn: number,\n\tsr: number,\n\tnoise: () => number,\n\treverse: boolean,\n): StereoBuffer {\n\tconst left = new Float32Array(n);\n\tconst right = new Float32Array(n);\n\tconst filter = new BandPass();\n\tfor (let i = 0; i < n; i++) {\n\t\tconst x = i / n;\n\t\tconst sweep = reverse ? 1 - x : x;\n\t\tconst env = bell(x, reverse ? 0.35 : 0.6);\n\t\tconst s =\n\t\t\tfilter.process(noise(), expSweep(250, 7000, sweep), 0.35, sr) * env * 0.9;\n\t\tconst pan = (reverse ? 1 - x : x) * 2 - 1;\n\t\tleft[i] = s * Math.sqrt((1 - pan) / 2) * 1.4;\n\t\tright[i] = s * Math.sqrt((1 + pan) / 2) * 1.4;\n\t}\n\treturn [left, right];\n}\n\nfunction riser(\n\tn: number,\n\tsr: number,\n\tnoise: () => number,\n\treverse: boolean,\n): StereoBuffer {\n\tconst left = new Float32Array(n);\n\tconst right = new Float32Array(n);\n\tconst air = new BandPass();\n\tlet phase = 0;\n\tfor (let i = 0; i < n; i++) {\n\t\tconst x = i / n;\n\t\tconst sweep = reverse ? 1 - x : x;\n\t\tconst env = reverse ? (1 - x) ** 1.5 : x ** 2.2;\n\t\tconst freq = expSweep(110, 880, sweep);\n\t\tphase += (2 * Math.PI * freq) / sr;\n\t\t// Band-limited enough at these pitches: two detuned-free partials of a saw.\n\t\tconst tone =\n\t\t\t(Math.sin(phase) +\n\t\t\t\t0.5 * Math.sin(phase * 2) +\n\t\t\t\t0.25 * Math.sin(phase * 3)) *\n\t\t\t0.3;\n\t\tconst hiss =\n\t\t\tair.process(noise(), expSweep(300, 9000, sweep), 0.5, sr) * 1.2;\n\t\tconst s = (tone + hiss) * env * 0.6;\n\t\tleft[i] = s;\n\t\tright[i] = s;\n\t}\n\treturn [left, right];\n}\n\nfunction impact(n: number, sr: number, noise: () => number): StereoBuffer {\n\tconst left = new Float32Array(n);\n\tconst right = new Float32Array(n);\n\tconst burst = new BandPass();\n\tlet phase = 0;\n\tfor (let i = 0; i < n; i++) {\n\t\tconst t = i / sr;\n\t\tconst freq = 38 + 62 * Math.exp(-t * 14);\n\t\tphase += (2 * Math.PI * freq) / sr;\n\t\tconst sub = Math.sin(phase) * Math.exp(-t * 2.6);\n\t\tconst body =\n\t\t\tburst.process(noise(), 900 * Math.exp(-t * 6) + 120, 0.6, sr) *\n\t\t\tMath.exp(-t * 9) *\n\t\t\t1.6;\n\t\tconst click = i < 96 ? noise() * (1 - i / 96) * 0.5 : 0;\n\t\tconst s = (sub * 1.1 + body + click) * 0.85;\n\t\t// Slight decorrelated tail widens the hit without smearing the transient.\n\t\tconst tail = noise() * Math.exp(-t * 5) * 0.08;\n\t\tleft[i] = s + tail;\n\t\tright[i] = s - tail;\n\t}\n\treturn [left, right];\n}\n\nfunction glitch(n: number, sr: number, noise: () => number): StereoBuffer {\n\tconst left = new Float32Array(n);\n\tconst right = new Float32Array(n);\n\tconst slice = Math.max(1, Math.round(sr * 0.022));\n\tlet held = 0;\n\tlet gate = 1;\n\tlet crush = 1;\n\tfor (let i = 0; i < n; i++) {\n\t\tif (i % slice === 0) {\n\t\t\tgate = noise() > -0.2 ? 1 : 0;\n\t\t\tcrush = 2 + Math.floor((noise() + 1) * 6);\n\t\t}\n\t\tif (i % crush === 0) held = noise() > 0 ? 1 : -1;\n\t\tconst env = 1 - i / n;\n\t\tconst s = held * gate * env * 0.45;\n\t\tleft[i] = s;\n\t\tright[i] = gate ? -s * 0.6 : 0;\n\t}\n\treturn [left, right];\n}\n\n/**\n * Renders one trigger to stereo PCM positioned at `atBar` on the score timeline.\n * `atBar` is where the effect *starts*; a riser meant to land on a cut starts\n * `durationSec / secondsPerBar` bars before it.\n */\nexport function renderSfx(\n\ttrigger: SfxTrigger,\n\tctx: SfxRenderContext,\n): RenderedSfx {\n\tconst durationSec = trigger.durationSec ?? DEFAULT_DURATION_SEC[trigger.type];\n\tconst sr = ctx.sampleRate;\n\tconst n = Math.max(1, Math.round(durationSec * sr));\n\tconst noise = createNoise(ctx.seed + n);\n\n\tlet channels: StereoBuffer;\n\tswitch (trigger.type) {\n\t\tcase \"whoosh\":\n\t\t\tchannels = whoosh(n, sr, noise, false);\n\t\t\tbreak;\n\t\tcase \"riser\":\n\t\t\tchannels = riser(n, sr, noise, false);\n\t\t\tbreak;\n\t\tcase \"downshifter\":\n\t\t\tchannels = riser(n, sr, noise, true);\n\t\t\tbreak;\n\t\tcase \"impact\":\n\t\t\tchannels = impact(n, sr, noise);\n\t\t\tbreak;\n\t\tcase \"glitch\":\n\t\t\tchannels = glitch(n, sr, noise);\n\t\t\tbreak;\n\t}\n\n\tconst gain = trigger.volume ?? 0.8;\n\tfor (const channel of channels) {\n\t\tfor (let i = 0; i < n; i++)\n\t\t\tchannel[i] = Math.tanh((channel[i] ?? 0) * gain);\n\t}\n\treturn {\n\t\tstartSample: Math.max(\n\t\t\t0,\n\t\t\tMath.round(trigger.atBar * ctx.secondsPerBar * sr),\n\t\t),\n\t\tchannels,\n\t};\n}\n\n/** Adds rendered effects into `target` in place, clipping to its length. */\nexport function mixSfxInto(\n\ttarget: StereoBuffer,\n\teffects: readonly RenderedSfx[],\n): void {\n\tfor (const fx of effects) {\n\t\tfor (let c = 0; c < 2; c++) {\n\t\t\tconst dst = target[c];\n\t\t\tconst src = fx.channels[c];\n\t\t\tif (!dst || !src) continue;\n\t\t\tconst limit = Math.min(src.length, dst.length - fx.startSample);\n\t\t\tfor (let i = 0; i < limit; i++) {\n\t\t\t\tconst val = dst[fx.startSample + i];\n\t\t\t\tconst s = src[i];\n\t\t\t\tif (val !== undefined && s !== undefined) {\n\t\t\t\t\tdst[fx.startSample + i] = val + s;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Soft-knee limiter for sums that may exceed full scale (impacts stacked on a\n * loud mix): transparent below the knee, asymptotically bounded by 1.0 above it.\n */\nexport function softLimit(\n\ttarget: StereoBuffer,\n\tknee = 0.7,\n\tceiling = 0.97,\n): void {\n\tconst headroom = ceiling - knee;\n\tfor (const channel of target) {\n\t\tfor (let i = 0; i < channel.length; i++) {\n\t\t\tconst x = channel[i] ?? 0;\n\t\t\tconst a = Math.abs(x);\n\t\t\tif (a > knee)\n\t\t\t\tchannel[i] =\n\t\t\t\t\tMath.sign(x) * (knee + headroom * Math.tanh((a - knee) / headroom));\n\t\t}\n\t}\n}\n","/**\n * @file packages/framefields/src/audio/synth/wav-encoder.ts\n * High-performance 16-bit PCM RIFF/WAVE stereo audio encoder.\n */\n\nexport interface EncodeWavOptions {\n\tsampleRate?: number;\n}\n\n/**\n * Encodes stereo Float32Array PCM channels (-1.0 to +1.0) into a standard 16-bit RIFF/WAVE Buffer.\n */\nexport function encodeStereoWav(\n\tchannels: [Float32Array, Float32Array],\n\toptions: EncodeWavOptions = {},\n): Buffer {\n\tconst sampleRate = options.sampleRate ?? 48000;\n\tconst numChannels = 2;\n\tconst left = channels[0];\n\tconst right = channels[1];\n\tconst numSamples = Math.min(left.length, right.length);\n\n\tconst bytesPerSample = 2; // 16-bit\n\tconst blockAlign = numChannels * bytesPerSample;\n\tconst byteRate = sampleRate * blockAlign;\n\tconst dataSize = numSamples * blockAlign;\n\tconst totalSize = 44 + dataSize;\n\n\tconst buffer = Buffer.alloc(totalSize);\n\n\t// RIFF Header\n\tbuffer.write(\"RIFF\", 0, \"ascii\");\n\tbuffer.writeUInt32LE(36 + dataSize, 4);\n\tbuffer.write(\"WAVE\", 8, \"ascii\");\n\n\t// \"fmt \" chunk\n\tbuffer.write(\"fmt \", 12, \"ascii\");\n\tbuffer.writeUInt32LE(16, 16); // PCM header size\n\tbuffer.writeUInt16LE(1, 20); // AudioFormat 1 = PCM\n\tbuffer.writeUInt16LE(numChannels, 22);\n\tbuffer.writeUInt32LE(sampleRate, 24);\n\tbuffer.writeUInt32LE(byteRate, 28);\n\tbuffer.writeUInt16LE(blockAlign, 32);\n\tbuffer.writeUInt16LE(16, 34); // Bits per sample\n\n\t// \"data\" chunk\n\tbuffer.write(\"data\", 36, \"ascii\");\n\tbuffer.writeUInt32LE(dataSize, 40);\n\n\tlet offset = 44;\n\tfor (let i = 0; i < numSamples; i++) {\n\t\t// Left channel\n\t\tconst sl = Math.max(-1, Math.min(1, left[i] ?? 0));\n\t\tconst intL = sl < 0 ? sl * 0x8000 : sl * 0x7fff;\n\t\tbuffer.writeInt16LE(Math.round(intL), offset);\n\t\toffset += 2;\n\n\t\t// Right channel\n\t\tconst sr = Math.max(-1, Math.min(1, right[i] ?? 0));\n\t\tconst intR = sr < 0 ? sr * 0x8000 : sr * 0x7fff;\n\t\tbuffer.writeInt16LE(Math.round(intR), offset);\n\t\toffset += 2;\n\t}\n\n\treturn buffer;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"audio-BlDbnteH.mjs","names":[],"sources":["../src/audio/synth/sfx.ts","../src/audio/synth/wav-encoder.ts"],"sourcesContent":["/**\n * @file packages/framefields/src/audio/synth/sfx.ts\n * Deterministic procedural transition effects (whoosh, riser, impact, downshifter, glitch).\n * Pure CPU DSP: the same trigger always renders the same samples.\n */\n\n/**\n * Procedural sound effect transition event, synthesized deterministically on the CPU.\n * Default durations: whoosh 0.7s, riser 2s, impact 1.8s, downshifter 1.2s, glitch 0.35s.\n */\nexport interface SfxTrigger {\n\ttype: \"whoosh\" | \"riser\" | \"impact\" | \"downshifter\" | \"glitch\";\n\t/** Bar (fractional allowed) where the effect *starts*. A riser landing on a cut starts `durationSec` earlier. */\n\tatBar: number;\n\tdurationSec?: number;\n\tvolume?: number;\n}\n\nexport type StereoBuffer = [Float32Array, Float32Array];\n\nexport interface RenderedSfx {\n\t/** First sample of the effect on the score timeline. */\n\tstartSample: number;\n\tchannels: StereoBuffer;\n}\n\nexport interface SfxRenderContext {\n\tsampleRate: number;\n\tsecondsPerBar: number;\n\t/** Distinguishes otherwise identical triggers so noise differs between them. */\n\tseed: number;\n}\n\nconst DEFAULT_DURATION_SEC: Record<SfxTrigger[\"type\"], number> = {\n\twhoosh: 0.7,\n\triser: 2,\n\timpact: 1.8,\n\tdownshifter: 1.2,\n\tglitch: 0.35,\n};\n\n/** Small, fast, seedable PRNG returning values in [-1, 1). */\nfunction createNoise(seed: number): () => number {\n\tlet state = (seed ^ 0x9e3779b9) >>> 0;\n\treturn () => {\n\t\tstate = (state + 0x6d2b79f5) >>> 0;\n\t\tlet t = state;\n\t\tt = Math.imul(t ^ (t >>> 15), t | 1);\n\t\tt ^= t + Math.imul(t ^ (t >>> 7), t | 61);\n\t\treturn (((t ^ (t >>> 14)) >>> 0) / 4294967296) * 2 - 1;\n\t};\n}\n\n/** Chamberlin state-variable filter; returns the band-pass output of one sample. */\nclass BandPass {\n\tprivate low = 0;\n\tprivate band = 0;\n\n\tpublic process(\n\t\tinput: number,\n\t\tfreq: number,\n\t\tq: number,\n\t\tsampleRate: number,\n\t): number {\n\t\tconst f =\n\t\t\t2 * Math.sin((Math.PI * Math.min(freq, sampleRate * 0.45)) / sampleRate);\n\t\tthis.low += f * this.band;\n\t\tconst high = input - this.low - q * this.band;\n\t\tthis.band += f * high;\n\t\treturn this.band;\n\t}\n}\n\n/** Exponential sweep from `a` to `b` as `x` moves 0 → 1. */\nconst expSweep = (a: number, b: number, x: number): number => a * (b / a) ** x;\n\n/** Fast rise, longer fall: a bell centred at `peak` in 0..1. */\nconst bell = (x: number, peak: number): number =>\n\tx < peak\n\t\t? Math.sin((x / peak) * (Math.PI / 2)) ** 2\n\t\t: Math.cos(((x - peak) / (1 - peak)) * (Math.PI / 2)) ** 2;\n\nfunction whoosh(\n\tn: number,\n\tsr: number,\n\tnoise: () => number,\n\treverse: boolean,\n): StereoBuffer {\n\tconst left = new Float32Array(n);\n\tconst right = new Float32Array(n);\n\tconst filter = new BandPass();\n\tfor (let i = 0; i < n; i++) {\n\t\tconst x = i / n;\n\t\tconst sweep = reverse ? 1 - x : x;\n\t\tconst env = bell(x, reverse ? 0.35 : 0.6);\n\t\tconst s =\n\t\t\tfilter.process(noise(), expSweep(250, 7000, sweep), 0.35, sr) * env * 0.9;\n\t\tconst pan = (reverse ? 1 - x : x) * 2 - 1;\n\t\tleft[i] = s * Math.sqrt((1 - pan) / 2) * 1.4;\n\t\tright[i] = s * Math.sqrt((1 + pan) / 2) * 1.4;\n\t}\n\treturn [left, right];\n}\n\nfunction riser(\n\tn: number,\n\tsr: number,\n\tnoise: () => number,\n\treverse: boolean,\n): StereoBuffer {\n\tconst left = new Float32Array(n);\n\tconst right = new Float32Array(n);\n\tconst air = new BandPass();\n\tlet phase = 0;\n\tfor (let i = 0; i < n; i++) {\n\t\tconst x = i / n;\n\t\tconst sweep = reverse ? 1 - x : x;\n\t\tconst env = reverse ? (1 - x) ** 1.5 : x ** 2.2;\n\t\tconst freq = expSweep(110, 880, sweep);\n\t\tphase += (2 * Math.PI * freq) / sr;\n\t\t// Band-limited enough at these pitches: two detuned-free partials of a saw.\n\t\tconst tone =\n\t\t\t(Math.sin(phase) +\n\t\t\t\t0.5 * Math.sin(phase * 2) +\n\t\t\t\t0.25 * Math.sin(phase * 3)) *\n\t\t\t0.3;\n\t\tconst hiss =\n\t\t\tair.process(noise(), expSweep(300, 9000, sweep), 0.5, sr) * 1.2;\n\t\tconst s = (tone + hiss) * env * 0.6;\n\t\tleft[i] = s;\n\t\tright[i] = s;\n\t}\n\treturn [left, right];\n}\n\nfunction impact(n: number, sr: number, noise: () => number): StereoBuffer {\n\tconst left = new Float32Array(n);\n\tconst right = new Float32Array(n);\n\tconst burst = new BandPass();\n\tlet phase = 0;\n\tfor (let i = 0; i < n; i++) {\n\t\tconst t = i / sr;\n\t\tconst freq = 38 + 62 * Math.exp(-t * 14);\n\t\tphase += (2 * Math.PI * freq) / sr;\n\t\tconst sub = Math.sin(phase) * Math.exp(-t * 2.6);\n\t\tconst body =\n\t\t\tburst.process(noise(), 900 * Math.exp(-t * 6) + 120, 0.6, sr) *\n\t\t\tMath.exp(-t * 9) *\n\t\t\t1.6;\n\t\tconst click = i < 96 ? noise() * (1 - i / 96) * 0.5 : 0;\n\t\tconst s = (sub * 1.1 + body + click) * 0.85;\n\t\t// Slight decorrelated tail widens the hit without smearing the transient.\n\t\tconst tail = noise() * Math.exp(-t * 5) * 0.08;\n\t\tleft[i] = s + tail;\n\t\tright[i] = s - tail;\n\t}\n\treturn [left, right];\n}\n\nfunction glitch(n: number, sr: number, noise: () => number): StereoBuffer {\n\tconst left = new Float32Array(n);\n\tconst right = new Float32Array(n);\n\tconst slice = Math.max(1, Math.round(sr * 0.022));\n\tlet held = 0;\n\tlet gate = 1;\n\tlet crush = 1;\n\tfor (let i = 0; i < n; i++) {\n\t\tif (i % slice === 0) {\n\t\t\tgate = noise() > -0.2 ? 1 : 0;\n\t\t\tcrush = 2 + Math.floor((noise() + 1) * 6);\n\t\t}\n\t\tif (i % crush === 0) held = noise() > 0 ? 1 : -1;\n\t\tconst env = 1 - i / n;\n\t\tconst s = held * gate * env * 0.45;\n\t\tleft[i] = s;\n\t\tright[i] = gate ? -s * 0.6 : 0;\n\t}\n\treturn [left, right];\n}\n\n/**\n * Renders one trigger to stereo PCM positioned at `atBar` on the score timeline.\n * `atBar` is where the effect *starts*; a riser meant to land on a cut starts\n * `durationSec / secondsPerBar` bars before it.\n */\nexport function renderSfx(\n\ttrigger: SfxTrigger,\n\tctx: SfxRenderContext,\n): RenderedSfx {\n\tconst durationSec = trigger.durationSec ?? DEFAULT_DURATION_SEC[trigger.type];\n\tconst sr = ctx.sampleRate;\n\tconst n = Math.max(1, Math.round(durationSec * sr));\n\tconst noise = createNoise(ctx.seed + n);\n\n\tlet channels: StereoBuffer;\n\tswitch (trigger.type) {\n\t\tcase \"whoosh\":\n\t\t\tchannels = whoosh(n, sr, noise, false);\n\t\t\tbreak;\n\t\tcase \"riser\":\n\t\t\tchannels = riser(n, sr, noise, false);\n\t\t\tbreak;\n\t\tcase \"downshifter\":\n\t\t\tchannels = riser(n, sr, noise, true);\n\t\t\tbreak;\n\t\tcase \"impact\":\n\t\t\tchannels = impact(n, sr, noise);\n\t\t\tbreak;\n\t\tcase \"glitch\":\n\t\t\tchannels = glitch(n, sr, noise);\n\t\t\tbreak;\n\t}\n\n\tconst gain = trigger.volume ?? 0.8;\n\tfor (const channel of channels) {\n\t\tfor (let i = 0; i < n; i++)\n\t\t\tchannel[i] = Math.tanh((channel[i] ?? 0) * gain);\n\t}\n\treturn {\n\t\tstartSample: Math.max(\n\t\t\t0,\n\t\t\tMath.round(trigger.atBar * ctx.secondsPerBar * sr),\n\t\t),\n\t\tchannels,\n\t};\n}\n\n/** Adds rendered effects into `target` in place, clipping to its length. */\nexport function mixSfxInto(\n\ttarget: StereoBuffer,\n\teffects: readonly RenderedSfx[],\n): void {\n\tfor (const fx of effects) {\n\t\tfor (let c = 0; c < 2; c++) {\n\t\t\tconst dst = target[c];\n\t\t\tconst src = fx.channels[c];\n\t\t\tif (!dst || !src) continue;\n\t\t\tconst limit = Math.min(src.length, dst.length - fx.startSample);\n\t\t\tfor (let i = 0; i < limit; i++) {\n\t\t\t\tconst val = dst[fx.startSample + i];\n\t\t\t\tconst s = src[i];\n\t\t\t\tif (val !== undefined && s !== undefined) {\n\t\t\t\t\tdst[fx.startSample + i] = val + s;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Soft-knee limiter for sums that may exceed full scale (impacts stacked on a\n * loud mix): transparent below the knee, asymptotically bounded by 1.0 above it.\n */\nexport function softLimit(\n\ttarget: StereoBuffer,\n\tknee = 0.7,\n\tceiling = 0.97,\n): void {\n\tconst headroom = ceiling - knee;\n\tfor (const channel of target) {\n\t\tfor (let i = 0; i < channel.length; i++) {\n\t\t\tconst x = channel[i] ?? 0;\n\t\t\tconst a = Math.abs(x);\n\t\t\tif (a > knee)\n\t\t\t\tchannel[i] =\n\t\t\t\t\tMath.sign(x) * (knee + headroom * Math.tanh((a - knee) / headroom));\n\t\t}\n\t}\n}\n","/**\n * @file packages/framefields/src/audio/synth/wav-encoder.ts\n * High-performance 16-bit PCM RIFF/WAVE stereo audio encoder.\n */\n\nexport interface EncodeWavOptions {\n\tsampleRate?: number;\n}\n\n/**\n * Encodes stereo Float32Array PCM channels (-1.0 to +1.0) into a standard 16-bit RIFF/WAVE Buffer.\n */\nexport function encodeStereoWav(\n\tchannels: [Float32Array, Float32Array],\n\toptions: EncodeWavOptions = {},\n): Buffer {\n\tconst sampleRate = options.sampleRate ?? 48000;\n\tconst numChannels = 2;\n\tconst left = channels[0];\n\tconst right = channels[1];\n\tconst numSamples = Math.min(left.length, right.length);\n\n\tconst bytesPerSample = 2; // 16-bit\n\tconst blockAlign = numChannels * bytesPerSample;\n\tconst byteRate = sampleRate * blockAlign;\n\tconst dataSize = numSamples * blockAlign;\n\tconst totalSize = 44 + dataSize;\n\n\tconst buffer = Buffer.alloc(totalSize);\n\n\t// RIFF Header\n\tbuffer.write(\"RIFF\", 0, \"ascii\");\n\tbuffer.writeUInt32LE(36 + dataSize, 4);\n\tbuffer.write(\"WAVE\", 8, \"ascii\");\n\n\t// \"fmt \" chunk\n\tbuffer.write(\"fmt \", 12, \"ascii\");\n\tbuffer.writeUInt32LE(16, 16); // PCM header size\n\tbuffer.writeUInt16LE(1, 20); // AudioFormat 1 = PCM\n\tbuffer.writeUInt16LE(numChannels, 22);\n\tbuffer.writeUInt32LE(sampleRate, 24);\n\tbuffer.writeUInt32LE(byteRate, 28);\n\tbuffer.writeUInt16LE(blockAlign, 32);\n\tbuffer.writeUInt16LE(16, 34); // Bits per sample\n\n\t// \"data\" chunk\n\tbuffer.write(\"data\", 36, \"ascii\");\n\tbuffer.writeUInt32LE(dataSize, 40);\n\n\tlet offset = 44;\n\tfor (let i = 0; i < numSamples; i++) {\n\t\t// Left channel\n\t\tconst sl = Math.max(-1, Math.min(1, left[i] ?? 0));\n\t\tconst intL = sl < 0 ? sl * 0x8000 : sl * 0x7fff;\n\t\tbuffer.writeInt16LE(Math.round(intL), offset);\n\t\toffset += 2;\n\n\t\t// Right channel\n\t\tconst sr = Math.max(-1, Math.min(1, right[i] ?? 0));\n\t\tconst intR = sr < 0 ? sr * 0x8000 : sr * 0x7fff;\n\t\tbuffer.writeInt16LE(Math.round(intR), offset);\n\t\toffset += 2;\n\t}\n\n\treturn buffer;\n}\n"],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { $ as FrameSignal } from "./index-9_4X2ro1.mjs";
|
|
2
|
+
import { o as AudioSignalComputeConfig } from "./index-Bzo1uj8h.mjs";
|
|
3
|
+
import { n as NodeRendererPlugin } from "./renderer-DoPEPlbG.mjs";
|
|
3
4
|
|
|
4
5
|
//#region ../../nodes/node-modulate/dist/renderer.d.mts
|
|
5
6
|
//#region src/renderers/index.d.ts
|
|
@@ -34,4 +35,4 @@ declare const AudioSignal: {
|
|
|
34
35
|
};
|
|
35
36
|
//#endregion
|
|
36
37
|
export { _default as i, AudioSignalOptions as n, ExtractedAudioSignalsBundle as r, AudioSignal as t };
|
|
37
|
-
//# sourceMappingURL=audio-
|
|
38
|
+
//# sourceMappingURL=audio-D6tBMbHh.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audio-D6tBMbHh.d.mts","names":["_framefields_node_sdk_renderer0","_default","NodeRendererPlugin","Readonly","default"],"sources":["../../../nodes/node-modulate/dist/renderer.d.mts","../src/signals/audio.ts"],"sourcesContent":["import * as _framefields_node_sdk_renderer0 from \"@framefields/node-sdk/renderer\";\n\n//#region src/renderers/index.d.ts\ndeclare const _default: Readonly<_framefields_node_sdk_renderer0.NodeRendererPlugin>;\n//#endregion\nexport { _default as default };\n//# sourceMappingURL=renderer.d.mts.map"],"mappings":";;;;;;cAGcC,UAAUE,SAASH;;;;UCShB,kBAAA,SAA2B;;;EDT9BC,WAAsE,CAAA,EAAA,UAAnDD,GAAAA,UAAAA,GAAAA,cAAD,GAAA,UAAA;;UCef,2BAAA;WACP;EAPO,IAAA,EAQV,WARU,CAAA,MAAmB,CAAA;EAMnB,IAAA,EAGV,WAHU,CAAA,MAAA,CAAA;EACP,MAAA,EAGD,WAHC,CAAA,MAAA,CAAA;EACH,WAAA,EAAA,MAAA;EACA,SAAA,EAAA,MAAA;EACE,UAAA,EAAA,MAAA;EAAW,WAAA,EAAA,OAAA;EAaP,OAAA,EAAA,OAuGZ;EArGW,aAAA,EAAA,OAAA;EAED,UAAA,EAAA,OAAA;EACC,UAAA,EAAA,OAAA;EAAR,YAAA,EAAA,OAAA;EAoFO,SAAA,CAAA,KAAA,EAAA,MAAA,CAAA,EAAA,IAAA;;AACP,cA1FS,WA0FT,EAAA;EAAO,mBAAA,CAAA,QAAA,EAxFC,YAwFD,EAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAtFA,kBAsFA,CAAA,EArFP,OAqFO,CArFC,2BAqFD,CAAA;oCADA,qBACP,QAAQ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check-result-
|
|
1
|
+
{"version":3,"file":"check-result-Bj7g62ka.mjs","names":[],"sources":["../src/cli/check-result.ts"],"sourcesContent":["import type { RenderDiagnostic } from \"@framefields/core\";\n\nexport interface CheckDiagnostic extends RenderDiagnostic {\n\tstage:\n\t\t| \"build\"\n\t\t| \"schema\"\n\t\t| \"assets\"\n\t\t| \"lint\"\n\t\t| \"timeline\"\n\t\t| \"render\"\n\t\t| \"worker\";\n\tpath?: string;\n}\n\nexport interface CheckReport {\n\tschemaVersion: 1;\n\tsdkVersion: string;\n\tentry: string;\n\texportName: string;\n\tstatus: \"passed\" | \"failed\";\n\tdiagnostics: CheckDiagnostic[];\n\tartifacts: string[];\n\trender: \"not_requested\" | \"skipped\" | \"passed\" | \"failed\";\n\truntime?: { node: string; platform: string; arch: string };\n\ttimeline?: { fps: number; totalFrames: number; durationMs: number };\n\tbackend?: {\n\t\tvendor: string;\n\t\tdevice: string;\n\t\tdescription: string;\n\t\tsoftware: boolean;\n\t};\n}\n\nexport function failedCheck(\n\tentry: string,\n\texportName: string,\n\tsdkVersion: string,\n\tcode: string,\n\tmessage: string,\n): CheckReport {\n\treturn {\n\t\tschemaVersion: 1,\n\t\tsdkVersion,\n\t\tentry,\n\t\texportName,\n\t\tstatus: \"failed\",\n\t\tdiagnostics: [{ severity: \"error\", code, message, stage: \"worker\" }],\n\t\tartifacts: [],\n\t\trender: \"not_requested\",\n\t};\n}\n"],"mappings":";AAiCA,SAAgB,YACf,OACA,YACA,YACA,MACA,SACc;AACd,QAAO;EACN,eAAe;EACf;EACA;EACA;EACA,QAAQ;EACR,aAAa,CAAC;GAAE,UAAU;GAAS;GAAM;GAAS,OAAO;GAAU,CAAC;EACpE,WAAW,EAAE;EACb,QAAQ;EACR"}
|
|
@@ -1,53 +1,53 @@
|
|
|
1
|
-
import "../chunk-
|
|
2
|
-
import { Nt as frameCount } from "../dist-
|
|
3
|
-
import { t as Composition } from "../src-
|
|
4
|
-
import { x as describeGpu } from "../dist-
|
|
5
|
-
import "../renderers-CP8CFWDs-
|
|
6
|
-
import "../signals-
|
|
7
|
-
import "../renderer-
|
|
8
|
-
import "../renderer-
|
|
9
|
-
import "../renderer-
|
|
10
|
-
import "../renderer-
|
|
11
|
-
import "../renderer-
|
|
12
|
-
import "../renderer
|
|
13
|
-
import "../renderer-
|
|
14
|
-
import "../renderer-
|
|
15
|
-
import "../renderer-
|
|
16
|
-
import "../renderer-
|
|
17
|
-
import "../
|
|
18
|
-
import
|
|
19
|
-
import "../renderer-
|
|
20
|
-
import "../renderer-
|
|
21
|
-
import "../renderer-
|
|
22
|
-
import "../renderer-
|
|
23
|
-
import "../renderer-
|
|
24
|
-
import "../renderer-
|
|
25
|
-
import "../renderer-
|
|
26
|
-
import "../renderer-
|
|
27
|
-
import "../renderer-
|
|
28
|
-
import "../renderer-
|
|
29
|
-
import "../renderer-
|
|
30
|
-
import "../renderer-
|
|
31
|
-
import "../renderer-
|
|
32
|
-
import "../renderer-
|
|
33
|
-
import "../renderer-
|
|
34
|
-
import "../renderer-
|
|
35
|
-
import "../renderer-
|
|
36
|
-
import "../renderer-
|
|
37
|
-
import "../renderer-
|
|
38
|
-
import "../renderer-
|
|
39
|
-
import "../renderer-
|
|
40
|
-
import "../renderer-
|
|
41
|
-
import "../renderer-
|
|
42
|
-
import "../renderer-
|
|
43
|
-
import "../renderer-
|
|
44
|
-
import "../renderer-
|
|
45
|
-
import "../renderer-
|
|
46
|
-
import "../renderer-
|
|
47
|
-
import "../renderer-
|
|
48
|
-
import "../renderer-
|
|
49
|
-
import "../renderer-
|
|
50
|
-
import { t as failedCheck } from "../check-result-
|
|
1
|
+
import "../chunk-D8S17ehY.mjs";
|
|
2
|
+
import { Nt as frameCount } from "../dist-ByxHoMQI.mjs";
|
|
3
|
+
import { t as Composition } from "../src-BU1VOWSk.mjs";
|
|
4
|
+
import { x as describeGpu } from "../dist-D12-a3-x.mjs";
|
|
5
|
+
import "../renderers-CP8CFWDs-BH1gUTYa.mjs";
|
|
6
|
+
import "../signals-gOd0Ui9B.mjs";
|
|
7
|
+
import "../renderer-C7MAqpIS.mjs";
|
|
8
|
+
import "../renderer-q4zMFfnY.mjs";
|
|
9
|
+
import "../renderer-CbhnJi_8.mjs";
|
|
10
|
+
import "../renderer-CEfVvcw-.mjs";
|
|
11
|
+
import "../renderer-BfbSvElt.mjs";
|
|
12
|
+
import "../renderer-Dat8opUZ.mjs";
|
|
13
|
+
import "../renderer-CYX9vKZ-.mjs";
|
|
14
|
+
import "../renderer-CCFHnafT.mjs";
|
|
15
|
+
import "../renderer-Cputd36d.mjs";
|
|
16
|
+
import "../renderer-DH7l5WFr.mjs";
|
|
17
|
+
import { s as CompositorProgramSchema } from "../program-xjIwjKb6.mjs";
|
|
18
|
+
import "../renderer-mQt-y49D.mjs";
|
|
19
|
+
import "../renderer-BdbI_u9w.mjs";
|
|
20
|
+
import "../renderer-BMP_lYMk.mjs";
|
|
21
|
+
import "../renderer-C4yKI8MT.mjs";
|
|
22
|
+
import "../renderer-BcO7LUla.mjs";
|
|
23
|
+
import "../renderer-BRWjLiHX.mjs";
|
|
24
|
+
import "../renderer-C3Iev6zu.mjs";
|
|
25
|
+
import "../renderer-BJKzZwyn.mjs";
|
|
26
|
+
import "../renderer-sPI7aY6c.mjs";
|
|
27
|
+
import "../renderer-C6st34I6.mjs";
|
|
28
|
+
import "../renderer-CyCtm0UV.mjs";
|
|
29
|
+
import "../renderer-BZmmekE8.mjs";
|
|
30
|
+
import "../renderer-CXLugAe8.mjs";
|
|
31
|
+
import "../renderer-IQ97z2rw.mjs";
|
|
32
|
+
import "../renderer-CpedZNEG.mjs";
|
|
33
|
+
import "../renderer-B6TjJi1g.mjs";
|
|
34
|
+
import "../renderer-Dee8ksIV.mjs";
|
|
35
|
+
import "../renderer-ESkPj6pk.mjs";
|
|
36
|
+
import "../renderer-DOKHd37M.mjs";
|
|
37
|
+
import "../renderer-B7kOF_Az.mjs";
|
|
38
|
+
import "../renderer-NTCk1Srf.mjs";
|
|
39
|
+
import "../renderer-HnSiwSW8.mjs";
|
|
40
|
+
import "../renderer-B78W9uad.mjs";
|
|
41
|
+
import "../renderer-mLlgfM7X.mjs";
|
|
42
|
+
import "../renderer-xDV2cCkX.mjs";
|
|
43
|
+
import "../renderer-AUK_ZS3p.mjs";
|
|
44
|
+
import "../renderer-C06U4c9k.mjs";
|
|
45
|
+
import "../renderer-Cl8r1LJe.mjs";
|
|
46
|
+
import "../renderer-DW7hbluw.mjs";
|
|
47
|
+
import "../renderer-DIqkhsLI.mjs";
|
|
48
|
+
import "../renderer-D2TTDcgh.mjs";
|
|
49
|
+
import "../renderer-CWLF6cAz.mjs";
|
|
50
|
+
import { t as failedCheck } from "../check-result-Bj7g62ka.mjs";
|
|
51
51
|
import { existsSync } from "node:fs";
|
|
52
52
|
import { join } from "node:path";
|
|
53
53
|
import { mkdir, writeFile } from "node:fs/promises";
|
package/dist/cli.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { t as failedCheck } from "./check-result-
|
|
2
|
+
import { t as failedCheck } from "./check-result-Bj7g62ka.mjs";
|
|
3
3
|
import { createRequire } from "node:module";
|
|
4
4
|
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
5
5
|
import { basename, dirname, join, posix, relative, resolve, sep } from "node:path";
|
|
@@ -1,12 +1,15 @@
|
|
|
1
|
-
import "../chunk-
|
|
2
|
-
import "../index-
|
|
3
|
-
import "../index-
|
|
4
|
-
import "../
|
|
5
|
-
import "../renderer-
|
|
6
|
-
import
|
|
7
|
-
import "../index-
|
|
8
|
-
import "../
|
|
9
|
-
import "../
|
|
10
|
-
import "../index-
|
|
11
|
-
import "../index-
|
|
1
|
+
import "../chunk-D8S17ehY.mjs";
|
|
2
|
+
import "../index-9_4X2ro1.mjs";
|
|
3
|
+
import "../index-w28KUM9A.mjs";
|
|
4
|
+
import "../index-Bzo1uj8h.mjs";
|
|
5
|
+
import "../renderer-DoPEPlbG.mjs";
|
|
6
|
+
import "../renderer-B-inTgyb.mjs";
|
|
7
|
+
import { $a as withDefaults, $i as evaluateGlyphExpression, $n as Anchor, $r as ResolvedMotion, Aa as springAt, Ai as bandEdges, Ar as GlyphBox, Ba as targetPoint, Bi as contrastRatio, Br as MeasureOptions, Ca as resolveTarget, Ci as anchorPoint, Cr as ExtrudedTextOptions, Da as scaleFrames, Di as audioLevelsSchema, Dr as FrameValue, Ea as safeArea, Ei as ascending, Er as FrameContextLike, Fa as staggerOffsets, Fi as boundsOf, Fr as Host, Ga as toPathData, Gi as dist, Gr as MotionPresetName, Ha as themeFrames, Hi as defineComponent, Hr as Metrics, Ia as staggerRanks, Ii as boxPath, Ir as KeyBook, Ja as transparent, Ji as elevate, Jr as Placement, Ka as toSeconds, Ki as drawOnKeys, Kr as MotionSize, La as stepExpression, Li as catmullRom, Lr as LayerStyleConfig, Ma as springSettleFrames, Mi as beats, Mr as GlyphUnit, Na as springTrack, Ni as bind, Nr as GrainOptions, Oa as scheduleExpression, Oi as bakeFunction, Or as FrameWindow, Pa as squigglePath, Pi as boilKeys, Pr as HandOptions, Qa as withAlpha, Qi as evaluateEase, Qn as AnalyzeOptions, Qr as Rect, Ra as supersede, Ri as chain, Rr as MOTION_PRESETS, Sa as resolveMotion, Si as analyzeChannels, Sr as ElevationLevel, Ta as round, Ti as arrowPaths, Tr as FontRole, Ua as themes, Ui as defineMeta, Ur as MotionOptions, Va as textLayout, Vi as cover, Vr as MediaOptions, Wa as toFrames, Wi as defineTheme, Wr as MotionPreset, Xa as valueAt, Xi as ellipsePath, Xr as PropsOf, Ya as typingFrames, Yi as elevationStyle, Yr as ProjectDefaults, Za as windowExpression, Zi as enterAnimation, Zn as targetSchema, Zr as PulseOptions, _a as pulseKeys, _i as UNIT_INDEX, _r as Cues, aa as hashString, ai as Spring, ar as AudioLevels, ba as rendererChars, bi as WordRange, br as EaseFn, ca as isLight, ci as Target, cr as BaseProps, da as linePath, di as TextLayout, dr as CanvasSize, ea as exitAnimation, ei as ResolvedTarget, eo as within, er as Animatable, fa as lineShift, fi as Theme, fr as ComponentDefaults, ga as parseColor, gi as TrackedObjectLike, gr as Cue, ha as offsetCues, hi as Track, hr as ComponentMeta, i as analyzeAudio, ia as hashRng, ii as SafeInsets, ir as ArrowGeometry, ja as springKeys, ji as basePropsSchema, jr as GlyphProps, ka as smoothRelease, ki as bakeSamples, kr as GlyphAnimator, la as last, li as TargetContext, lr as BuildContext, ma as mix, mi as ThemeName, mr as ComponentExtras, n as bindComponent, na as frameSpan, ni as Rng, no as wordRanges, nr as ArcPath, oa as holdFirstKeys, oi as StaggerOrder, or as BakeOptions, pa as luminance, pi as ThemeInput, pr as ComponentDefinition, qa as transformPathData, qi as ease$1, qr as ParticleOptions, r as z, ra as glyphAnimator, ri as SAFE_INSETS, rr as ArrowCurve, sa as inkOn, si as SyntaxKind, sr as BakedKey, t as ComponentNode, ta as findRange, ti as Rgba, to as wobblePoints, tr as AnimatableMethods, ua as lerp2, ui as TargetNode, ur as BuildResult, va as quantize, vi as UnitSchedule, vr as CuesOf, wa as rng, wi as arcPath, wr as FontNeed, xa as resampleBands, xi as after, xr as Elevation, ya as rangeRects, yi as Vec2, yr as CutoutOptions, za as surfaceFill, zi as constantExpression, zr as MeasureFn } from "../index-B9Lm1x8i.mjs";
|
|
8
|
+
import "../index-f4IF1vRH.mjs";
|
|
9
|
+
import "../audio-D6tBMbHh.mjs";
|
|
10
|
+
import "../index-svAgwTY_.mjs";
|
|
11
|
+
import "../index-DBhswLMO.mjs";
|
|
12
|
+
import "../index-C6GcuYVA.mjs";
|
|
13
|
+
import "../index-V0ZQ4JN6.mjs";
|
|
14
|
+
import "../index-CgGM31I9.mjs";
|
|
12
15
|
export { AnalyzeOptions, Anchor, Animatable, AnimatableMethods, ArcPath, ArrowCurve, ArrowGeometry, AudioLevels, BakeOptions, BakedKey, BaseProps, BuildContext, BuildResult, CanvasSize, ComponentDefaults, ComponentDefinition, ComponentExtras, ComponentMeta, ComponentNode, Cue, Cues, CuesOf, CutoutOptions, EaseFn, Elevation, ElevationLevel, ExtrudedTextOptions, FontNeed, FontRole, FrameContextLike, FrameValue, FrameWindow, GlyphAnimator, GlyphBox, GlyphProps, GlyphUnit, GrainOptions, HandOptions, Host, KeyBook, LayerStyleConfig, MOTION_PRESETS, MeasureFn, MeasureOptions, MediaOptions, Metrics, MotionOptions, MotionPreset, MotionPresetName, MotionSize, ParticleOptions, Placement, ProjectDefaults, PropsOf, PulseOptions, Rect, ResolvedMotion, ResolvedTarget, Rgba, Rng, SAFE_INSETS, SafeInsets, Spring, StaggerOrder, SyntaxKind, Target, TargetContext, TargetNode, TextLayout, Theme, ThemeInput, ThemeName, Track, TrackedObjectLike, UNIT_INDEX, UnitSchedule, Vec2, WordRange, after, analyzeAudio, analyzeChannels, anchorPoint, arcPath, arrowPaths, ascending, audioLevelsSchema, bakeFunction, bakeSamples, bandEdges, basePropsSchema, beats, bind, bindComponent, boilKeys, boundsOf, boxPath, catmullRom, chain, constantExpression, contrastRatio, cover, defineComponent, defineMeta, defineTheme, dist, drawOnKeys, ease$1 as ease, elevate, elevationStyle, ellipsePath, enterAnimation, evaluateEase, evaluateGlyphExpression, exitAnimation, findRange, frameSpan, glyphAnimator, hashRng, hashString, holdFirstKeys, inkOn, isLight, last, lerp2, linePath, lineShift, luminance, mix, offsetCues, parseColor, pulseKeys, quantize, rangeRects, rendererChars, resampleBands, resolveMotion, resolveTarget, rng, round, safeArea, scaleFrames, scheduleExpression, smoothRelease, springAt, springKeys, springSettleFrames, springTrack, squigglePath, staggerOffsets, staggerRanks, stepExpression, supersede, surfaceFill, targetPoint, targetSchema, textLayout, themeFrames, themes, toFrames, toPathData, toSeconds, transformPathData, transparent, typingFrames, valueAt, windowExpression, withAlpha, withDefaults, within, wobblePoints, wordRanges, z };
|
|
@@ -1,49 +1,49 @@
|
|
|
1
|
-
import "../chunk-
|
|
2
|
-
import { $ as glyphAnimator, $t as wordRanges, A as boilKeys, At as squigglePath, B as defineTheme, Bt as themes, C as audioLevelsSchema, Ct as scaleFrames, D as basePropsSchema, Dt as springKeys, E as bandEdges, Et as springAt, F as constantExpression, Ft as surfaceFill, G as elevationStyle, Gt as transparent, H as drawOnKeys, Ht as toPathData, I as contrastRatio, It as targetPoint, J as evaluateEase, Jt as windowExpression, K as ellipsePath, Kt as typingFrames, L as cover, Lt as targetSchema, M as boxPath, Mt as staggerRanks, N as catmullRom, Nt as stepExpression, O as beats, Ot as springSettleFrames, P as chain, Pt as supersede, Q as frameSpan, Qt as wobblePoints, R as defineComponent, Rt as textLayout, S as ascending, St as safeArea, T as bakeSamples, Tt as smoothRelease, U as ease, Ut as toSeconds, V as dist, Vt as toFrames, W as elevate, Wt as transformPathData, X as exitAnimation, Xt as withDefaults, Y as evaluateGlyphExpression, Yt as withAlpha, Z as findRange, Zt as within, _ as after, _t as resampleBands, at as last, b as arcPath, bt as rng, ct as lineShift, d as analyzeAudio, dt as offsetCues, et as hashRng, f as KeyBook, ft as parseColor, g as UNIT_INDEX, gt as rendererChars, h as Track, ht as rangeRects, it as isLight, j as boundsOf, jt as staggerOffsets, k as bind, kt as springTrack, l as bindComponent, lt as luminance, m as SAFE_INSETS, mt as quantize, nt as holdFirstKeys, ot as lerp2, p as MOTION_PRESETS, pt as pulseKeys, q as enterAnimation, qt as valueAt, rt as inkOn, st as linePath, tt as hashString, u as z, ut as mix, v as analyzeChannels, vt as resolveMotion, w as bakeFunction, wt as scheduleExpression, x as arrowPaths, xt as round, y as anchorPoint, yt as resolveTarget, z as defineMeta, zt as themeFrames } from "../src-
|
|
3
|
-
import "../dist-
|
|
4
|
-
import "../renderers-CP8CFWDs-
|
|
5
|
-
import "../signals-
|
|
6
|
-
import "../renderer-
|
|
7
|
-
import "../renderer-
|
|
8
|
-
import "../renderer-
|
|
9
|
-
import "../renderer-
|
|
10
|
-
import "../renderer-
|
|
11
|
-
import "../renderer
|
|
12
|
-
import "../renderer-
|
|
13
|
-
import "../renderer-
|
|
14
|
-
import "../renderer-
|
|
15
|
-
import "../renderer-
|
|
16
|
-
import "../renderer-
|
|
17
|
-
import "../renderer-
|
|
18
|
-
import "../renderer-
|
|
19
|
-
import "../renderer-
|
|
20
|
-
import "../renderer-
|
|
21
|
-
import "../renderer-
|
|
22
|
-
import "../renderer-
|
|
23
|
-
import "../renderer-
|
|
24
|
-
import "../renderer-
|
|
25
|
-
import "../renderer-
|
|
26
|
-
import "../renderer-
|
|
27
|
-
import "../renderer-
|
|
28
|
-
import "../renderer-
|
|
29
|
-
import "../renderer-
|
|
30
|
-
import "../renderer-
|
|
31
|
-
import "../renderer-
|
|
32
|
-
import "../renderer-
|
|
33
|
-
import "../renderer-
|
|
34
|
-
import "../renderer-
|
|
35
|
-
import "../renderer-
|
|
36
|
-
import "../renderer-
|
|
37
|
-
import "../renderer-
|
|
38
|
-
import "../renderer-
|
|
39
|
-
import "../renderer-
|
|
40
|
-
import "../renderer-
|
|
41
|
-
import "../renderer-
|
|
42
|
-
import "../renderer-
|
|
43
|
-
import "../renderer-
|
|
44
|
-
import "../renderer-
|
|
45
|
-
import "../renderer-
|
|
46
|
-
import "../renderer-
|
|
47
|
-
import "../renderer-
|
|
1
|
+
import "../chunk-D8S17ehY.mjs";
|
|
2
|
+
import { $ as glyphAnimator, $t as wordRanges, A as boilKeys, At as squigglePath, B as defineTheme, Bt as themes, C as audioLevelsSchema, Ct as scaleFrames, D as basePropsSchema, Dt as springKeys, E as bandEdges, Et as springAt, F as constantExpression, Ft as surfaceFill, G as elevationStyle, Gt as transparent, H as drawOnKeys, Ht as toPathData, I as contrastRatio, It as targetPoint, J as evaluateEase, Jt as windowExpression, K as ellipsePath, Kt as typingFrames, L as cover, Lt as targetSchema, M as boxPath, Mt as staggerRanks, N as catmullRom, Nt as stepExpression, O as beats, Ot as springSettleFrames, P as chain, Pt as supersede, Q as frameSpan, Qt as wobblePoints, R as defineComponent, Rt as textLayout, S as ascending, St as safeArea, T as bakeSamples, Tt as smoothRelease, U as ease, Ut as toSeconds, V as dist, Vt as toFrames, W as elevate, Wt as transformPathData, X as exitAnimation, Xt as withDefaults, Y as evaluateGlyphExpression, Yt as withAlpha, Z as findRange, Zt as within, _ as after, _t as resampleBands, at as last, b as arcPath, bt as rng, ct as lineShift, d as analyzeAudio, dt as offsetCues, et as hashRng, f as KeyBook, ft as parseColor, g as UNIT_INDEX, gt as rendererChars, h as Track, ht as rangeRects, it as isLight, j as boundsOf, jt as staggerOffsets, k as bind, kt as springTrack, l as bindComponent, lt as luminance, m as SAFE_INSETS, mt as quantize, nt as holdFirstKeys, ot as lerp2, p as MOTION_PRESETS, pt as pulseKeys, q as enterAnimation, qt as valueAt, rt as inkOn, st as linePath, tt as hashString, u as z, ut as mix, v as analyzeChannels, vt as resolveMotion, w as bakeFunction, wt as scheduleExpression, x as arrowPaths, xt as round, y as anchorPoint, yt as resolveTarget, z as defineMeta, zt as themeFrames } from "../src-BU1VOWSk.mjs";
|
|
3
|
+
import "../dist-D12-a3-x.mjs";
|
|
4
|
+
import "../renderers-CP8CFWDs-BH1gUTYa.mjs";
|
|
5
|
+
import "../signals-gOd0Ui9B.mjs";
|
|
6
|
+
import "../renderer-C7MAqpIS.mjs";
|
|
7
|
+
import "../renderer-q4zMFfnY.mjs";
|
|
8
|
+
import "../renderer-CbhnJi_8.mjs";
|
|
9
|
+
import "../renderer-CEfVvcw-.mjs";
|
|
10
|
+
import "../renderer-BfbSvElt.mjs";
|
|
11
|
+
import "../renderer-Dat8opUZ.mjs";
|
|
12
|
+
import "../renderer-CYX9vKZ-.mjs";
|
|
13
|
+
import "../renderer-CCFHnafT.mjs";
|
|
14
|
+
import "../renderer-Cputd36d.mjs";
|
|
15
|
+
import "../renderer-DH7l5WFr.mjs";
|
|
16
|
+
import "../renderer-mQt-y49D.mjs";
|
|
17
|
+
import "../renderer-BdbI_u9w.mjs";
|
|
18
|
+
import "../renderer-BMP_lYMk.mjs";
|
|
19
|
+
import "../renderer-C4yKI8MT.mjs";
|
|
20
|
+
import "../renderer-BcO7LUla.mjs";
|
|
21
|
+
import "../renderer-BRWjLiHX.mjs";
|
|
22
|
+
import "../renderer-C3Iev6zu.mjs";
|
|
23
|
+
import "../renderer-BJKzZwyn.mjs";
|
|
24
|
+
import "../renderer-sPI7aY6c.mjs";
|
|
25
|
+
import "../renderer-C6st34I6.mjs";
|
|
26
|
+
import "../renderer-CyCtm0UV.mjs";
|
|
27
|
+
import "../renderer-BZmmekE8.mjs";
|
|
28
|
+
import "../renderer-CXLugAe8.mjs";
|
|
29
|
+
import "../renderer-IQ97z2rw.mjs";
|
|
30
|
+
import "../renderer-CpedZNEG.mjs";
|
|
31
|
+
import "../renderer-B6TjJi1g.mjs";
|
|
32
|
+
import "../renderer-Dee8ksIV.mjs";
|
|
33
|
+
import "../renderer-ESkPj6pk.mjs";
|
|
34
|
+
import "../renderer-DOKHd37M.mjs";
|
|
35
|
+
import "../renderer-B7kOF_Az.mjs";
|
|
36
|
+
import "../renderer-NTCk1Srf.mjs";
|
|
37
|
+
import "../renderer-HnSiwSW8.mjs";
|
|
38
|
+
import "../renderer-B78W9uad.mjs";
|
|
39
|
+
import "../renderer-mLlgfM7X.mjs";
|
|
40
|
+
import "../renderer-xDV2cCkX.mjs";
|
|
41
|
+
import "../renderer-AUK_ZS3p.mjs";
|
|
42
|
+
import "../renderer-C06U4c9k.mjs";
|
|
43
|
+
import "../renderer-Cl8r1LJe.mjs";
|
|
44
|
+
import "../renderer-DW7hbluw.mjs";
|
|
45
|
+
import "../renderer-DIqkhsLI.mjs";
|
|
46
|
+
import "../renderer-D2TTDcgh.mjs";
|
|
47
|
+
import "../renderer-CWLF6cAz.mjs";
|
|
48
48
|
|
|
49
49
|
export { KeyBook, MOTION_PRESETS, SAFE_INSETS, Track, UNIT_INDEX, after, analyzeAudio, analyzeChannels, anchorPoint, arcPath, arrowPaths, ascending, audioLevelsSchema, bakeFunction, bakeSamples, bandEdges, basePropsSchema, beats, bind, bindComponent, boilKeys, boundsOf, boxPath, catmullRom, chain, constantExpression, contrastRatio, cover, defineComponent, defineMeta, defineTheme, dist, drawOnKeys, ease, elevate, elevationStyle, ellipsePath, enterAnimation, evaluateEase, evaluateGlyphExpression, exitAnimation, findRange, frameSpan, glyphAnimator, hashRng, hashString, holdFirstKeys, inkOn, isLight, last, lerp2, linePath, lineShift, luminance, mix, offsetCues, parseColor, pulseKeys, quantize, rangeRects, rendererChars, resampleBands, resolveMotion, resolveTarget, rng, round, safeArea, scaleFrames, scheduleExpression, smoothRelease, springAt, springKeys, springSettleFrames, springTrack, squigglePath, staggerOffsets, staggerRanks, stepExpression, supersede, surfaceFill, targetPoint, targetSchema, textLayout, themeFrames, themes, toFrames, toPathData, toSeconds, transformPathData, transparent, typingFrames, valueAt, windowExpression, withAlpha, withDefaults, within, wobblePoints, wordRanges, z };
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { C as sam3Run, E as validateSam3Prompts, S as sam3Revision, T as validateSam2Prompts, _ as sam3EncoderFiles, a as SAM_MODELS, b as sam3Position, c as Sam3MemoryBank, d as assertSamLicenseAccepted, f as decodeSam2Mask, g as sam3DenseDecoder, h as sam2Tokens, i as SAM_LICENSE_TERMS_URL, l as Sam3TextSelector, m as sam2Revision, n as SAM3_ENCODER, o as Sam2MemoryBank, p as ensureSamModelsRegistered, r as SAM_LICENSE, s as Sam2Tracker, t as SAM2_EXPORTS, u as Sam3Tracker, v as sam3Floats, w as sam3SupportGraphs, x as sam3Precision, y as sam3Mask } from "./dist-Dq5TkNDI.mjs";
|
|
2
|
+
|
|
3
|
+
export { SAM2_EXPORTS, SAM3_ENCODER, SAM_LICENSE, SAM_LICENSE_TERMS_URL, SAM_MODELS, Sam2MemoryBank, Sam2Tracker, Sam3MemoryBank, Sam3TextSelector, Sam3Tracker, assertSamLicenseAccepted, decodeSam2Mask, ensureSamModelsRegistered, sam2Revision, sam2Tokens, sam3DenseDecoder, sam3EncoderFiles, sam3Floats, sam3Mask, sam3Position, sam3Precision, sam3Revision, sam3Run, sam3SupportGraphs, validateSam2Prompts, validateSam3Prompts };
|
|
@@ -3081,4 +3081,4 @@ function extractSvgDimensions(buffer) {
|
|
|
3081
3081
|
|
|
3082
3082
|
//#endregion
|
|
3083
3083
|
export { SourceOperationSchema as $, limitGradientStops as $t, MIME_TYPES as A, seconds as An, fps as At, MultiOutputGenericSchema as B, getMediaType as Bt, FileDataSchema as C, resolveString as Cn, dataTypeColors as Ct, HandleTypeVal as D, sampleMediaSignal as Dn, extractSvgDimensions as Dt, Gradient as E, sampleFrameMediaSignal as En, emojiPresentation as Et, MediaTimeRemapInputSchema as F, stampResult as Fn, generateId as Ft, ProgrammaticSignal as G, hasOnlySingleSource as Gt, NodeResultSchema as H, gradientStopsToOklab as Ht, MediaTimeRemapSchema as I, takeRenderDiagnostics as In, getActiveMediaMetadata as It, SignalDataSchema as J, isFrameIndex as Jt, Signal as K, isCssGradient as Kt, MediaTimeSignalRemapSchema as L, timeSignal as Ln, getFileDataMetadata as Lt, MediaOperationSchema as M, signal as Mn, frameArraySignal as Mt, MediaSignalRecorder as N, signalBuilder as Nn, frameCount as Nt, JsonValueSchema as O, sampledMediaSourceRange as On, findSourceAsset as Ot, MediaSourceSchema as P, sineSignal as Pn, frameSignal as Pt, SingleOutputGenericSchema as Q, isVirtualMediaData as Qt, ModerationError as R, updateClockSignals as Rn, getFingerprint as Rt, FileAssetSchema as S, resolveParam as Sn, createVirtualMedia as St, GlobalCompositeOperation as T, sampleColorStops as Tn, deserializeSignalData as Tt, NodeVisualConfigSchema as U, handleId as Ut, NodeMetadataSchema as V, getRenderFingerprint as Vt, OutputItemSchema as W, handleLabel as Wt, SignalMathDataSchema as X, isSignal as Xt, SignalGateDataSchema as Y, isNormalized as Yt, SignalStatsSchema as Z, isValueSignal as Zt, DataTypeVal as _, reportRenderDiagnostic as _n, compositionFrameContext as _t, BaseVideoLayerPropsSchema as a, ms as an, TransitionTypeSchema as at, ExportResultSchema as b, resolveMediaMimeType as bn, cosineSignal as bt, COMPOSITOR_DEFAULTS as c, normalized as cn, VideoSpatialPropsSchema as ct, ConfigSchemaRegistry as d, parseCssGradient as dn, VideoTimingPropsSchema as dt, mediaSourceIsHold as en, TEXT_LAYER_DEFAULTS as et, DATA_TYPE_EXTENSIONS as f, pixels as fn, VirtualMediaDataSchema as ft, DataType as g, registerSignalDependency as gn, checkNodeResultCache as gt, DEFAULT_MEDIA_DIMENSION as h, radians as hn, assertNever as ht, BaseMediaOperationPropsSchema as i, mixColors as in, TransitionSchema as it, MediaMetadataSchema as j, serializeSignalData as jn, frame as jt, MAX_GRADIENT_STOPS as k, sampledMediaSourceTime as kn, formatHex as kt, Color as l, oklabToRgb as ln, VideoStylePropsSchema as lt, DEFAULT_FPS as m, progressSignal as mn, assertFps as mt, AnyOutputUnionSchema as n, mediaSourceRate as nn, TimelineSegmentSchema as nt, CAPTION_LAYER_DEFAULTS as o, nodeId as on, VideoAnimationSchema as ot, DEFAULT_DURATION_MS as p, programmaticSignal as pn, appendOperation as pt, SignalChannelMetaSchema as q, isEqual as qt, AudioExtractorSignalDataSchema as r, mediaSourceTime as rn, TimelineTransformSchema as rt, COMPOSITE_OPERATIONS as s, normalizeColorStops as sn, VideoLayerTypeSchema as st, AnimationTypeSchema as t, mediaSourceRange as tn, TextOperationSchema as tt, ConfigHandleSchema as u, parseCssColor as un, VideoTextPropsSchema as ut, DataTypes as v, resolveBoolean as vn, computeVideoCropRenderProps as vt, GeneratorSignalDataSchema as w, rgbToOklab as wn, degrees as wt, ExtendedLayerSchema as x, resolveNumber as xn, createOutputItemSchema as xt, Effect as y, resolveFrameRequest as yn, computed as yt, ModerationUnrefundableError as z, validateMediaTimeRemap as zn, getLeafMediaType as zt };
|
|
3084
|
-
//# sourceMappingURL=dist-
|
|
3084
|
+
//# sourceMappingURL=dist-ByxHoMQI.mjs.map
|