@imgly/codesign-mcp 0.1.5 → 0.1.6
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/README.md +51 -1
- package/assets/docs/guide/SKILL.md +45 -53
- package/assets/docs/guide/animation/create/base.md +234 -243
- package/assets/docs/guide/animation/create/text.md +250 -231
- package/assets/docs/guide/animation/create.md +197 -231
- package/assets/docs/guide/animation/edit.md +196 -271
- package/assets/docs/guide/animation/types.md +182 -185
- package/assets/docs/guide/animation.md +9 -6
- package/assets/docs/guide/api/AssetAPI.md +7 -53
- package/assets/docs/guide/api/BlockAPI.md +725 -648
- package/assets/docs/guide/api/CreativeEngine.md +7 -16
- package/assets/docs/guide/api/EditorAPI.md +32 -93
- package/assets/docs/guide/api/EventAPI.md +1 -2
- package/assets/docs/guide/api/SceneAPI.md +47 -98
- package/assets/docs/guide/api/VariableAPI.md +1 -4
- package/assets/docs/guide/api/node/classes/assetapi.md +1090 -0
- package/assets/docs/guide/api/node/classes/blockapi.md +12965 -0
- package/assets/docs/guide/api/node/classes/creativeengine.md +319 -0
- package/assets/docs/guide/api/node/classes/editorapi.md +3417 -0
- package/assets/docs/guide/api/node/classes/engineactions.md +319 -0
- package/assets/docs/guide/api/node/classes/eventapi.md +56 -0
- package/assets/docs/guide/api/node/classes/sceneapi.md +1370 -0
- package/assets/docs/guide/api/node/classes/variableapi.md +143 -0
- package/assets/docs/guide/api/node/enumerations/compressionformat.md +23 -0
- package/assets/docs/guide/api/node/enumerations/compressionlevel.md +24 -0
- package/assets/docs/guide/api/node/functions/iscmykcolor.md +30 -0
- package/assets/docs/guide/api/node/functions/isrgbacolor.md +30 -0
- package/assets/docs/guide/api/node/functions/isspotcolor.md +30 -0
- package/assets/docs/guide/api/node/interfaces/addvideooptions.md +31 -0
- package/assets/docs/guide/api/node/interfaces/applyassetoptions.md +31 -0
- package/assets/docs/guide/api/node/interfaces/asset.md +30 -0
- package/assets/docs/guide/api/node/interfaces/assetbooleanproperty.md +25 -0
- package/assets/docs/guide/api/node/interfaces/assetcmykcolor.md +26 -0
- package/assets/docs/guide/api/node/interfaces/assetcolorproperty.md +25 -0
- package/assets/docs/guide/api/node/interfaces/assetcontentaspectratio.md +23 -0
- package/assets/docs/guide/api/node/interfaces/assetdefinition.md +31 -0
- package/assets/docs/guide/api/node/interfaces/assetenumproperty.md +26 -0
- package/assets/docs/guide/api/node/interfaces/assetfixedaspectratio.md +24 -0
- package/assets/docs/guide/api/node/interfaces/assetfixedsize.md +25 -0
- package/assets/docs/guide/api/node/interfaces/assetfreeaspectratio.md +22 -0
- package/assets/docs/guide/api/node/interfaces/assetnumberproperty.md +28 -0
- package/assets/docs/guide/api/node/interfaces/assetpayload.md +27 -0
- package/assets/docs/guide/api/node/interfaces/assetquerydata.md +32 -0
- package/assets/docs/guide/api/node/interfaces/assetresult.md +46 -0
- package/assets/docs/guide/api/node/interfaces/assetrgbcolor.md +25 -0
- package/assets/docs/guide/api/node/interfaces/assetsource.md +111 -0
- package/assets/docs/guide/api/node/interfaces/assetspotcolor.md +25 -0
- package/assets/docs/guide/api/node/interfaces/assetsqueryresult.md +31 -0
- package/assets/docs/guide/api/node/interfaces/assetstringproperty.md +25 -0
- package/assets/docs/guide/api/node/interfaces/assetstylepreset.md +39 -0
- package/assets/docs/guide/api/node/interfaces/assetstylepresetanimation.md +23 -0
- package/assets/docs/guide/api/node/interfaces/audiotrackinfo.md +32 -0
- package/assets/docs/guide/api/node/interfaces/blockevent.md +26 -0
- package/assets/docs/guide/api/node/interfaces/blockstateerror.md +26 -0
- package/assets/docs/guide/api/node/interfaces/blockstatepending.md +26 -0
- package/assets/docs/guide/api/node/interfaces/blockstateready.md +25 -0
- package/assets/docs/guide/api/node/interfaces/buffer.md +26 -0
- package/assets/docs/guide/api/node/interfaces/characterinkbox.md +29 -0
- package/assets/docs/guide/api/node/interfaces/cmykcolor.md +34 -0
- package/assets/docs/guide/api/node/interfaces/completeassetresult.md +46 -0
- package/assets/docs/guide/api/node/interfaces/configuration.md +38 -0
- package/assets/docs/guide/api/node/interfaces/dominantcolor.md +25 -0
- package/assets/docs/guide/api/node/interfaces/dominantcolorsoptions.md +23 -0
- package/assets/docs/guide/api/node/interfaces/engineactioninfo.md +24 -0
- package/assets/docs/guide/api/node/interfaces/engineactionsregistry.md +18 -0
- package/assets/docs/guide/api/node/interfaces/engineplugin.md +30 -0
- package/assets/docs/guide/api/node/interfaces/font.md +27 -0
- package/assets/docs/guide/api/node/interfaces/fontmetrics.md +32 -0
- package/assets/docs/guide/api/node/interfaces/gradientcolorstop.md +28 -0
- package/assets/docs/guide/api/node/interfaces/logger.md +39 -0
- package/assets/docs/guide/api/node/interfaces/pageduration.md +23 -0
- package/assets/docs/guide/api/node/interfaces/range.md +23 -0
- package/assets/docs/guide/api/node/interfaces/rgbacolor.md +32 -0
- package/assets/docs/guide/api/node/interfaces/rgbcolor.md +30 -0
- package/assets/docs/guide/api/node/interfaces/settings.md +126 -0
- package/assets/docs/guide/api/node/interfaces/size2.md +21 -0
- package/assets/docs/guide/api/node/interfaces/source.md +24 -0
- package/assets/docs/guide/api/node/interfaces/spotcolor.md +30 -0
- package/assets/docs/guide/api/node/interfaces/textdecorationconfig.md +31 -0
- package/assets/docs/guide/api/node/interfaces/textfontsizeoptions.md +24 -0
- package/assets/docs/guide/api/node/interfaces/textruninfo.md +33 -0
- package/assets/docs/guide/api/node/interfaces/transientresource.md +26 -0
- package/assets/docs/guide/api/node/interfaces/typeface.md +23 -0
- package/assets/docs/guide/api/node/interfaces/vec2.md +21 -0
- package/assets/docs/guide/api/node/interfaces/vec3.md +22 -0
- package/assets/docs/guide/api/node/type-aliases/addimageoptions.md +36 -0
- package/assets/docs/guide/api/node/type-aliases/animationbaselinedirection.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/animationblockswipetextdirection.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/animationeasing.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/animationentry.md +28 -0
- package/assets/docs/guide/api/node/type-aliases/animationgrowdirection.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/animationjumploopdirection.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/animationkenburnsdirection.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/animationmergetextdirection.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/animationoptions.md +28 -0
- package/assets/docs/guide/api/node/type-aliases/animationspindirection.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/animationspinloopdirection.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/animationtype.md +24 -0
- package/assets/docs/guide/api/node/type-aliases/animationtypelonghand.md +21 -0
- package/assets/docs/guide/api/node/type-aliases/animationtypeshorthand.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/animationtypewritertextwritingstyle.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/animationwipedirection.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/applicationmimetype.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/assetcolor.md +23 -0
- package/assets/docs/guide/api/node/type-aliases/assetfilter.md +47 -0
- package/assets/docs/guide/api/node/type-aliases/assetgroups.md +25 -0
- package/assets/docs/guide/api/node/type-aliases/assetmetadata.md +42 -0
- package/assets/docs/guide/api/node/type-aliases/assetproperty.md +25 -0
- package/assets/docs/guide/api/node/type-aliases/assetpropertyfilter.md +41 -0
- package/assets/docs/guide/api/node/type-aliases/assetpropertypath.md +26 -0
- package/assets/docs/guide/api/node/type-aliases/assetstylepresetanimationproperties.md +34 -0
- package/assets/docs/guide/api/node/type-aliases/assetstylepresetproperties.md +29 -0
- package/assets/docs/guide/api/node/type-aliases/assetstylepresetpropertyvalue.md +29 -0
- package/assets/docs/guide/api/node/type-aliases/assetstylepresetscalableproperty.md +28 -0
- package/assets/docs/guide/api/node/type-aliases/assettransformpreset.md +24 -0
- package/assets/docs/guide/api/node/type-aliases/asyncuriresolver.md +36 -0
- package/assets/docs/guide/api/node/type-aliases/audioexportoptions.md +43 -0
- package/assets/docs/guide/api/node/type-aliases/audiofromvideooptions.md +27 -0
- package/assets/docs/guide/api/node/type-aliases/audiomimetype.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/blendmode.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/blockenumtype.md +63 -0
- package/assets/docs/guide/api/node/type-aliases/blockstate.md +26 -0
- package/assets/docs/guide/api/node/type-aliases/blurtype.md +24 -0
- package/assets/docs/guide/api/node/type-aliases/blurtypelonghand.md +21 -0
- package/assets/docs/guide/api/node/type-aliases/blurtypeshorthand.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/booleanoperation.md +27 -0
- package/assets/docs/guide/api/node/type-aliases/boolpropertyname.md +79 -0
- package/assets/docs/guide/api/node/type-aliases/cameraclampingovershootmode.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/captionhorizontalalignment.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/captionverticalalignment.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/cmyk.md +23 -0
- package/assets/docs/guide/api/node/type-aliases/color.md +23 -0
- package/assets/docs/guide/api/node/type-aliases/colorpickercolormode.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/colorpropertyname.md +31 -0
- package/assets/docs/guide/api/node/type-aliases/colorspace.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/contentfillmode.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/controlgizmomovehandlevisibility.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/controlgizmoresizehandlesvisibility.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/controlgizmorotatehandlesvisibility.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/controlgizmoscalehandlesvisibility.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/createsceneoptions.md +30 -0
- package/assets/docs/guide/api/node/type-aliases/cutoutoperation.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/cutouttype.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/defaultassetsourceid.md +37 -0
- package/assets/docs/guide/api/node/type-aliases/demoassetsourceid.md +33 -0
- package/assets/docs/guide/api/node/type-aliases/designblockid.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/designblocktype.md +24 -0
- package/assets/docs/guide/api/node/type-aliases/designblocktypelonghand.md +21 -0
- package/assets/docs/guide/api/node/type-aliases/designblocktypeshorthand.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/designunit.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/doubleclickselectionmode.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/doublepropertyname.md +26 -0
- package/assets/docs/guide/api/node/type-aliases/dropshadowoptions.md +32 -0
- package/assets/docs/guide/api/node/type-aliases/editmode.md +27 -0
- package/assets/docs/guide/api/node/type-aliases/effecttype.md +24 -0
- package/assets/docs/guide/api/node/type-aliases/effecttypelonghand.md +21 -0
- package/assets/docs/guide/api/node/type-aliases/effecttypeshorthand.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/engineactionid.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/enginecustomactionfunction.md +30 -0
- package/assets/docs/guide/api/node/type-aliases/engineplugincontext.md +30 -0
- package/assets/docs/guide/api/node/type-aliases/enumpropertyname.md +59 -0
- package/assets/docs/guide/api/node/type-aliases/enumvalues.md +59 -0
- package/assets/docs/guide/api/node/type-aliases/exportoptions.md +57 -0
- package/assets/docs/guide/api/node/type-aliases/fillpixelstreamorientation.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/filltype.md +24 -0
- package/assets/docs/guide/api/node/type-aliases/filltypelonghand.md +21 -0
- package/assets/docs/guide/api/node/type-aliases/filltypeshorthand.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/floatpropertyname.md +184 -0
- package/assets/docs/guide/api/node/type-aliases/fontsizeunit.md +23 -0
- package/assets/docs/guide/api/node/type-aliases/fontstyle.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/fontweight.md +30 -0
- package/assets/docs/guide/api/node/type-aliases/gradientstoprgba.md +23 -0
- package/assets/docs/guide/api/node/type-aliases/heightmode.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/hexcolorstring.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/historyid.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/historyupdate.md +25 -0
- package/assets/docs/guide/api/node/type-aliases/horizontalblockalignment.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/horizontalcontentfillalignment.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/horizontaltextalignment.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/imagemimetype.md +25 -0
- package/assets/docs/guide/api/node/type-aliases/intpropertyname.md +26 -0
- package/assets/docs/guide/api/node/type-aliases/liststyle.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/locale.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/loglevel.md +24 -0
- package/assets/docs/guide/api/node/type-aliases/mimetype.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/objecttype.md +24 -0
- package/assets/docs/guide/api/node/type-aliases/objecttypelonghand.md +27 -0
- package/assets/docs/guide/api/node/type-aliases/objecttypeshorthand.md +27 -0
- package/assets/docs/guide/api/node/type-aliases/optionalprefix.md +24 -0
- package/assets/docs/guide/api/node/type-aliases/pageguidessource.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/palettecolor.md +24 -0
- package/assets/docs/guide/api/node/type-aliases/positionmode.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/positionxmode.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/positionymode.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/propertytype.md +31 -0
- package/assets/docs/guide/api/node/type-aliases/rgba.md +23 -0
- package/assets/docs/guide/api/node/type-aliases/rolestring.md +23 -0
- package/assets/docs/guide/api/node/type-aliases/scenefontsizeunit.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/scenelayout.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/scenemode.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/scope.md +50 -0
- package/assets/docs/guide/api/node/type-aliases/settingboolpropertyname.md +62 -0
- package/assets/docs/guide/api/node/type-aliases/settingcolorpropertyname.md +38 -0
- package/assets/docs/guide/api/node/type-aliases/settingenumpropertyname.md +29 -0
- package/assets/docs/guide/api/node/type-aliases/settingenumtype.md +33 -0
- package/assets/docs/guide/api/node/type-aliases/settingenumvalues.md +29 -0
- package/assets/docs/guide/api/node/type-aliases/settingfloatpropertyname.md +25 -0
- package/assets/docs/guide/api/node/type-aliases/settingintpropertyname.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/settingkey.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/settingsbool.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/settingscolor.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/settingscolorrgba.md +24 -0
- package/assets/docs/guide/api/node/type-aliases/settingsenum.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/settingsfloat.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/settingsint.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/settingsstring.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/settingstringpropertyname.md +28 -0
- package/assets/docs/guide/api/node/type-aliases/settingtype.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/settingvaluetype.md +26 -0
- package/assets/docs/guide/api/node/type-aliases/shapetype.md +24 -0
- package/assets/docs/guide/api/node/type-aliases/shapetypelonghand.md +21 -0
- package/assets/docs/guide/api/node/type-aliases/shapetypeshorthand.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/shapevectorpathfillrule.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/sizemode.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/sortingorder.md +21 -0
- package/assets/docs/guide/api/node/type-aliases/sourcesetpropertyname.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/splitoptions.md +28 -0
- package/assets/docs/guide/api/node/type-aliases/stringpropertyname.md +43 -0
- package/assets/docs/guide/api/node/type-aliases/strokecap.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/strokecornergeometry.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/strokedashendcap.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/strokedashstartcap.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/strokeendcap.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/strokeposition.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/strokestartcap.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/strokestyle.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/syncuriresolver.md +31 -0
- package/assets/docs/guide/api/node/type-aliases/textanimationwritingstyle.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/textcase.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/textdecorationline.md +27 -0
- package/assets/docs/guide/api/node/type-aliases/textdecorationstyle.md +26 -0
- package/assets/docs/guide/api/node/type-aliases/textverticalalignment.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/timelinetrackvisibility.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/touchpinchaction.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/touchrotateaction.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/typefacedefinition.md +41 -0
- package/assets/docs/guide/api/node/type-aliases/verticalblockalignment.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/verticalcontentfillalignment.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/videoexportoptions.md +54 -0
- package/assets/docs/guide/api/node/type-aliases/videomimetype.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/widthmode.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/xywh.md +23 -0
- package/assets/docs/guide/api/node/type-aliases/zoomautofitaxis.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/zoomoptions.md +27 -0
- package/assets/docs/guide/api/node/variables/animation_types.md +21 -0
- package/assets/docs/guide/api/node/variables/animationbaselinedirectionvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/animationblockswipetextdirectionvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/animationeasingvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/animationgrowdirectionvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/animationjumploopdirectionvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/animationkenburnsdirectionvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/animationmergetextdirectionvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/animationspindirectionvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/animationspinloopdirectionvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/animationtypewritertextwritingstylevalues.md +18 -0
- package/assets/docs/guide/api/node/variables/animationwipedirectionvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/blendmodevalues.md +18 -0
- package/assets/docs/guide/api/node/variables/blur_types.md +21 -0
- package/assets/docs/guide/api/node/variables/cameraclampingovershootmodevalues.md +18 -0
- package/assets/docs/guide/api/node/variables/captionhorizontalalignmentvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/captionverticalalignmentvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/colorpickercolormodevalues.md +18 -0
- package/assets/docs/guide/api/node/variables/contentfillmodevalues.md +18 -0
- package/assets/docs/guide/api/node/variables/controlgizmomovehandlevisibilityvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/controlgizmoresizehandlesvisibilityvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/controlgizmorotatehandlesvisibilityvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/controlgizmoscalehandlesvisibilityvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/cutouttypevalues.md +18 -0
- package/assets/docs/guide/api/node/variables/design_block_types.md +21 -0
- package/assets/docs/guide/api/node/variables/doubleclickselectionmodevalues.md +18 -0
- package/assets/docs/guide/api/node/variables/effect_types.md +21 -0
- package/assets/docs/guide/api/node/variables/fill_types.md +21 -0
- package/assets/docs/guide/api/node/variables/fillpixelstreamorientationvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/heightmodevalues.md +18 -0
- package/assets/docs/guide/api/node/variables/horizontalcontentfillalignmentvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/loglevel.md +37 -0
- package/assets/docs/guide/api/node/variables/mimetype.md +41 -0
- package/assets/docs/guide/api/node/variables/pageguidessourcevalues.md +18 -0
- package/assets/docs/guide/api/node/variables/positionxmodevalues.md +18 -0
- package/assets/docs/guide/api/node/variables/positionymodevalues.md +18 -0
- package/assets/docs/guide/api/node/variables/scenedesignunitvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/scenefontsizeunitvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/scenelayoutvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/scenemodevalues.md +18 -0
- package/assets/docs/guide/api/node/variables/shape_types.md +21 -0
- package/assets/docs/guide/api/node/variables/shapevectorpathfillrulevalues.md +18 -0
- package/assets/docs/guide/api/node/variables/strokecapvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/strokecornergeometryvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/strokedashendcapvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/strokedashstartcapvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/strokeendcapvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/strokepositionvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/strokestartcapvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/strokestylevalues.md +18 -0
- package/assets/docs/guide/api/node/variables/textanimationwritingstylevalues.md +18 -0
- package/assets/docs/guide/api/node/variables/texthorizontalalignmentvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/textverticalalignmentvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/timelinetrackvisibilityvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/touchpinchactionvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/touchrotateactionvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/verticalcontentfillalignmentvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/widthmodevalues.md +18 -0
- package/assets/docs/guide/api/types.md +5 -9
- package/assets/docs/guide/api-reference/overview.md +7 -7
- package/assets/docs/guide/automation/auto-resize.md +263 -300
- package/assets/docs/guide/automation/data-merge.md +246 -275
- package/assets/docs/guide/automation/design-generation.md +102 -31
- package/assets/docs/guide/automation/multi-image-generation.md +758 -0
- package/assets/docs/guide/automation/overview.md +21 -4
- package/assets/docs/guide/automation.md +10 -5
- package/assets/docs/guide/capabilities.md +6 -4
- package/assets/docs/guide/colors/adjust.md +247 -249
- package/assets/docs/guide/colors/apply.md +127 -138
- package/assets/docs/guide/colors/basics.md +126 -150
- package/assets/docs/guide/colors/conversion.md +171 -177
- package/assets/docs/guide/colors/create-color-palette.md +244 -245
- package/assets/docs/guide/colors/extract-colors.md +144 -0
- package/assets/docs/guide/colors/for-print/cmyk.md +292 -352
- package/assets/docs/guide/colors/for-print/spot.md +521 -578
- package/assets/docs/guide/colors/for-print.md +9 -4
- package/assets/docs/guide/colors/for-screen/p3.md +12 -10
- package/assets/docs/guide/colors/for-screen/srgb.md +107 -133
- package/assets/docs/guide/colors/for-screen.md +9 -4
- package/assets/docs/guide/colors/overview.md +6 -4
- package/assets/docs/guide/colors/replace.md +381 -419
- package/assets/docs/guide/colors.md +9 -4
- package/assets/docs/guide/compatibility.md +7 -5
- package/assets/docs/guide/concepts/architecture.md +17 -15
- package/assets/docs/guide/concepts/assets.md +152 -140
- package/assets/docs/guide/concepts/blocks.md +227 -323
- package/assets/docs/guide/concepts/buffers.md +147 -276
- package/assets/docs/guide/concepts/design-units.md +95 -145
- package/assets/docs/guide/concepts/editing-workflow.md +69 -183
- package/assets/docs/guide/concepts/events.md +80 -122
- package/assets/docs/guide/concepts/headless-mode.md +237 -0
- package/assets/docs/guide/concepts/pages.md +137 -127
- package/assets/docs/guide/concepts/resources.md +156 -217
- package/assets/docs/guide/concepts/scenes.md +191 -210
- package/assets/docs/guide/concepts/templating.md +118 -74
- package/assets/docs/guide/concepts/terminology.md +49 -47
- package/assets/docs/guide/concepts/undo-and-history.md +229 -303
- package/assets/docs/guide/concepts.md +9 -7
- package/assets/docs/guide/configuration.md +252 -380
- package/assets/docs/guide/conversion/overview.md +33 -4
- package/assets/docs/guide/conversion/to-base64.md +127 -167
- package/assets/docs/guide/conversion/to-pdf.md +24 -474
- package/assets/docs/guide/conversion/to-png.md +168 -211
- package/assets/docs/guide/conversion.md +9 -4
- package/assets/docs/guide/create-audio/audio/add-music.md +301 -327
- package/assets/docs/guide/create-audio/audio/add-sound-effects.md +475 -359
- package/assets/docs/guide/create-audio/audio/loop.md +232 -272
- package/assets/docs/guide/create-composition/add-background.md +237 -239
- package/assets/docs/guide/create-composition/blend-modes.md +118 -209
- package/assets/docs/guide/create-composition/collage.md +538 -320
- package/assets/docs/guide/create-composition/group-and-ungroup.md +216 -261
- package/assets/docs/guide/create-composition/layer-management.md +219 -257
- package/assets/docs/guide/create-composition/layout.md +513 -315
- package/assets/docs/guide/create-composition/lock-design.md +90 -109
- package/assets/docs/guide/create-composition/multi-page.md +133 -113
- package/assets/docs/guide/create-composition/overview.md +16 -4
- package/assets/docs/guide/create-composition/programmatic.md +288 -344
- package/assets/docs/guide/create-composition.md +10 -5
- package/assets/docs/guide/create-templates/add-dynamic-content/placeholders.md +443 -569
- package/assets/docs/guide/create-templates/add-dynamic-content/set-editing-constraints.md +567 -470
- package/assets/docs/guide/create-templates/add-dynamic-content/text-variables.md +179 -516
- package/assets/docs/guide/create-templates/add-dynamic-content.md +226 -224
- package/assets/docs/guide/create-templates/add-to-template-library.md +183 -193
- package/assets/docs/guide/create-templates/edit-or-remove.md +297 -303
- package/assets/docs/guide/create-templates/from-scratch.md +207 -268
- package/assets/docs/guide/create-templates/import/from-scene-file.md +158 -236
- package/assets/docs/guide/create-templates/import.md +145 -161
- package/assets/docs/guide/create-templates/lock.md +42 -295
- package/assets/docs/guide/create-templates/overview.md +33 -4
- package/assets/docs/guide/create-templates.md +9 -5
- package/assets/docs/guide/create-video/audio/adjust-speed.md +157 -207
- package/assets/docs/guide/create-video/audio/adjust-volume.md +116 -227
- package/assets/docs/guide/create-video/control.md +352 -193
- package/assets/docs/guide/create-video/limitations.md +175 -280
- package/assets/docs/guide/create-video.md +11 -10
- package/assets/docs/guide/edit-image/add-watermark.md +283 -330
- package/assets/docs/guide/edit-image/overview.md +29 -4
- package/assets/docs/guide/edit-image/remove-bg.md +283 -337
- package/assets/docs/guide/edit-image/replace-colors.md +424 -502
- package/assets/docs/guide/edit-image/transform/crop.md +463 -402
- package/assets/docs/guide/edit-image/transform/flip.md +353 -0
- package/assets/docs/guide/edit-image/transform/move.md +143 -100
- package/assets/docs/guide/edit-image/transform/resize.md +118 -88
- package/assets/docs/guide/edit-image/transform/rotate.md +132 -165
- package/assets/docs/guide/edit-image/transform/scale.md +230 -228
- package/assets/docs/guide/edit-image/transform.md +10 -5
- package/assets/docs/guide/edit-image.md +11 -7
- package/assets/docs/guide/edit-video/add-captions.md +344 -421
- package/assets/docs/guide/edit-video/add-watermark.md +312 -258
- package/assets/docs/guide/edit-video/join-and-arrange.md +237 -371
- package/assets/docs/guide/edit-video/redaction.md +419 -385
- package/assets/docs/guide/edit-video/split.md +243 -493
- package/assets/docs/guide/edit-video/transform/crop.md +21 -352
- package/assets/docs/guide/edit-video/transform/flip.md +102 -76
- package/assets/docs/guide/edit-video/transform/move.md +258 -310
- package/assets/docs/guide/edit-video/transform/resize.md +264 -428
- package/assets/docs/guide/edit-video/transform/rotate.md +265 -228
- package/assets/docs/guide/edit-video/transform/scale.md +320 -417
- package/assets/docs/guide/edit-video/transform.md +10 -6
- package/assets/docs/guide/edit-video/trim.md +448 -494
- package/assets/docs/guide/engine-interface.md +51 -62
- package/assets/docs/guide/export-save-publish/create-thumbnail.md +148 -184
- package/assets/docs/guide/export-save-publish/export/compress.md +161 -559
- package/assets/docs/guide/export-save-publish/export/overview.md +224 -373
- package/assets/docs/guide/export-save-publish/export/partial-export.md +386 -577
- package/assets/docs/guide/export-save-publish/export/size-limits.md +215 -310
- package/assets/docs/guide/export-save-publish/export/to-jpeg.md +132 -213
- package/assets/docs/guide/export-save-publish/export/to-pdf.md +139 -267
- package/assets/docs/guide/export-save-publish/export/to-png.md +121 -165
- package/assets/docs/guide/export-save-publish/export/to-raw-data.md +187 -234
- package/assets/docs/guide/export-save-publish/export/to-webp.md +160 -190
- package/assets/docs/guide/export-save-publish/export/with-color-mask.md +359 -203
- package/assets/docs/guide/export-save-publish/export.md +14 -11
- package/assets/docs/guide/export-save-publish/for-printing.md +141 -237
- package/assets/docs/guide/export-save-publish/for-social-media.md +124 -261
- package/assets/docs/guide/export-save-publish/pre-export-validation.md +436 -522
- package/assets/docs/guide/export-save-publish/save.md +167 -226
- package/assets/docs/guide/export-save-publish/store-custom-metadata.md +97 -162
- package/assets/docs/guide/file-format-support.md +9 -9
- package/assets/docs/guide/fills/color.md +370 -347
- package/assets/docs/guide/fills/image.md +167 -196
- package/assets/docs/guide/fills/overview.md +6 -4
- package/assets/docs/guide/fills/video.md +286 -438
- package/assets/docs/guide/fills.md +12 -8
- package/assets/docs/guide/filters-and-effects/apply.md +598 -664
- package/assets/docs/guide/filters-and-effects/blur.md +261 -159
- package/assets/docs/guide/filters-and-effects/chroma-key-green-screen.md +194 -293
- package/assets/docs/guide/filters-and-effects/create-custom-filters.md +548 -466
- package/assets/docs/guide/filters-and-effects/create-custom-lut-filter.md +176 -244
- package/assets/docs/guide/filters-and-effects/distortion.md +317 -384
- package/assets/docs/guide/filters-and-effects/duotone.md +221 -217
- package/assets/docs/guide/filters-and-effects/gradients.md +670 -813
- package/assets/docs/guide/filters-and-effects/overview.md +7 -7
- package/assets/docs/guide/filters-and-effects/support.md +97 -132
- package/assets/docs/guide/filters-and-effects.md +11 -6
- package/assets/docs/guide/get-started/agent-skills.md +20 -18
- package/assets/docs/guide/get-started/build-with-ai.md +7 -4
- package/assets/docs/guide/get-started/bun.md +219 -0
- package/assets/docs/guide/get-started/deno.md +161 -0
- package/assets/docs/guide/get-started/mcp-server.md +6 -4
- package/assets/docs/guide/get-started/overview.md +11 -6
- package/assets/docs/guide/get-started/vanilla-aws-lambda.md +506 -0
- package/assets/docs/guide/get-started/vanilla-clone-github-project.md +124 -0
- package/assets/docs/guide/get-started/vanilla.md +235 -0
- package/assets/docs/guide/guides/export-save-publish/export/audio.md +80 -66
- package/assets/docs/guide/guides.md +10 -9
- package/assets/docs/guide/import-media/asset-panel/refresh-assets.md +259 -288
- package/assets/docs/guide/import-media/concepts.md +20 -38
- package/assets/docs/guide/import-media/content-json-schema.md +145 -125
- package/assets/docs/guide/import-media/default-assets.md +113 -161
- package/assets/docs/guide/import-media/edit-or-remove-assets.md +391 -395
- package/assets/docs/guide/import-media/file-format-support.md +78 -61
- package/assets/docs/guide/import-media/from-remote-source/asset-versioning.md +273 -244
- package/assets/docs/guide/import-media/from-remote-source/remote-asset.md +152 -222
- package/assets/docs/guide/import-media/from-remote-source.md +9 -11
- package/assets/docs/guide/import-media/overview.md +5 -5
- package/assets/docs/guide/import-media/retrieve-mimetype.md +216 -108
- package/assets/docs/guide/import-media/size-limits.md +6 -4
- package/assets/docs/guide/import-media/source-sets.md +190 -251
- package/assets/docs/guide/import-media.md +10 -8
- package/assets/docs/guide/insert-media/audio.md +202 -195
- package/assets/docs/guide/insert-media/images.md +190 -188
- package/assets/docs/guide/insert-media/position-and-align.md +284 -551
- package/assets/docs/guide/insert-media/shapes-or-stickers.md +402 -418
- package/assets/docs/guide/insert-media/videos.md +236 -203
- package/assets/docs/guide/insert-media.md +10 -5
- package/assets/docs/guide/key-capabilities.md +36 -4
- package/assets/docs/guide/key-concepts.md +6 -4
- package/assets/docs/guide/licensing.md +6 -4
- package/assets/docs/guide/llms-txt.md +11 -7
- package/assets/docs/guide/open-the-editor/blank-canvas.md +102 -63
- package/assets/docs/guide/open-the-editor/from-image.md +157 -127
- package/assets/docs/guide/open-the-editor/from-template.md +131 -92
- package/assets/docs/guide/open-the-editor/from-video.md +204 -212
- package/assets/docs/guide/open-the-editor/import-design/from-archive.md +310 -360
- package/assets/docs/guide/open-the-editor/import-design/from-indesign.md +716 -513
- package/assets/docs/guide/open-the-editor/import-design/from-photoshop.md +667 -695
- package/assets/docs/guide/open-the-editor/import-design.md +228 -266
- package/assets/docs/guide/open-the-editor/load-scene.md +72 -68
- package/assets/docs/guide/open-the-editor/overview.md +6 -4
- package/assets/docs/guide/open-the-editor/uri-resolver.md +160 -251
- package/assets/docs/guide/open-the-editor.md +11 -9
- package/assets/docs/guide/outlines/overview.md +12 -4
- package/assets/docs/guide/outlines/shadows-and-glows.md +105 -410
- package/assets/docs/guide/outlines/strokes.md +218 -166
- package/assets/docs/guide/outlines.md +9 -4
- package/assets/docs/guide/overview.md +14 -6
- package/assets/docs/guide/performance.md +220 -113
- package/assets/docs/guide/plugins/print-ready-pdf.md +273 -368
- package/assets/docs/guide/plugins.md +10 -16
- package/assets/docs/guide/rules/asset-handling.md +7 -18
- package/assets/docs/guide/rules/common-pitfalls.md +25 -42
- package/assets/docs/guide/rules/content-fill-mode.md +4 -4
- package/assets/docs/guide/rules/enforce-brand-guidelines.md +398 -567
- package/assets/docs/guide/rules/lock-content.md +188 -231
- package/assets/docs/guide/rules/moderate-content.md +580 -571
- package/assets/docs/guide/rules/overview.md +345 -380
- package/assets/docs/guide/rules/silent-init-errors.md +4 -1
- package/assets/docs/guide/rules/verify-properties-before-use.md +2 -11
- package/assets/docs/guide/rules.md +10 -5
- package/assets/docs/guide/security.md +7 -5
- package/assets/docs/guide/serve-assets.md +57 -284
- package/assets/docs/guide/settings.md +96 -74
- package/assets/docs/guide/shapes.md +10 -5
- package/assets/docs/guide/stickers-and-shapes/combine.md +397 -583
- package/assets/docs/guide/stickers-and-shapes/create-cutout.md +181 -268
- package/assets/docs/guide/stickers-and-shapes/create-edit/create-shapes.md +418 -431
- package/assets/docs/guide/stickers-and-shapes/create-edit/create-stickers.md +147 -226
- package/assets/docs/guide/stickers-and-shapes/create-edit/edit-shapes.md +138 -123
- package/assets/docs/guide/stickers-and-shapes/insert-qr-code.md +151 -149
- package/assets/docs/guide/stickers.md +9 -4
- package/assets/docs/guide/text/add.md +470 -482
- package/assets/docs/guide/text/adjust-spacing.md +179 -214
- package/assets/docs/guide/text/auto-size.md +210 -271
- package/assets/docs/guide/text/edit.md +294 -309
- package/assets/docs/guide/text/effects.md +154 -190
- package/assets/docs/guide/text/emojis.md +199 -232
- package/assets/docs/guide/text/language-support.md +369 -382
- package/assets/docs/guide/text/overview.md +41 -4
- package/assets/docs/guide/text/styling.md +239 -273
- package/assets/docs/guide/text/text-designs.md +405 -544
- package/assets/docs/guide/text.md +10 -9
- package/assets/docs/guide/to-v1-19.md +12 -10
- package/assets/docs/guide/upgrade.md +8 -9
- package/assets/docs/guide/use-templates/apply-template.md +174 -163
- package/assets/docs/guide/use-templates/generate.md +171 -152
- package/assets/docs/guide/use-templates/overview.md +32 -4
- package/assets/docs/guide/use-templates/programmatic.md +266 -301
- package/assets/docs/guide/use-templates/replace-content.md +181 -171
- package/assets/docs/guide/what-is-cesdk.md +71 -282
- package/assets/docs/handbook/SKILL.md +24 -0
- package/dist/assets/inline.generated.d.ts.map +1 -1
- package/dist/assets/inline.generated.js +544 -406
- package/dist/assets/inline.generated.js.map +1 -1
- package/dist/assets/load-browser.d.ts +1 -1
- package/dist/assets/load-browser.js +1 -1
- package/dist/assets/load-browser.js.map +1 -1
- package/dist/assets/load-node.d.ts +1 -1
- package/dist/assets/load-node.js +1 -1
- package/dist/assets/load-node.js.map +1 -1
- package/dist/cli/http.d.ts.map +1 -1
- package/dist/cli/http.js +4 -28
- package/dist/cli/http.js.map +1 -1
- package/dist/cli/redirect-console.d.ts +1 -1
- package/dist/cli/redirect-console.d.ts.map +1 -1
- package/dist/cli/redirect-console.js +12 -3
- package/dist/cli/redirect-console.js.map +1 -1
- package/dist/cli/resolve-license.d.ts.map +1 -1
- package/dist/cli/resolve-license.js +8 -6
- package/dist/cli/resolve-license.js.map +1 -1
- package/dist/cli/stdio.d.ts +9 -0
- package/dist/cli/stdio.d.ts.map +1 -1
- package/dist/cli/stdio.js +48 -4
- package/dist/cli/stdio.js.map +1 -1
- package/dist/cli.js +10 -1
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +11 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +20 -1
- package/dist/config.js.map +1 -1
- package/dist/diagnostics/bundle.d.ts +10 -0
- package/dist/diagnostics/bundle.d.ts.map +1 -0
- package/dist/diagnostics/bundle.js +148 -0
- package/dist/diagnostics/bundle.js.map +1 -0
- package/dist/diagnostics/compose.d.ts +3 -0
- package/dist/diagnostics/compose.d.ts.map +1 -0
- package/dist/diagnostics/compose.js +15 -0
- package/dist/diagnostics/compose.js.map +1 -0
- package/dist/diagnostics/events.d.ts +34 -0
- package/dist/diagnostics/events.d.ts.map +1 -0
- package/dist/diagnostics/events.js +3 -0
- package/dist/diagnostics/events.js.map +1 -0
- package/dist/diagnostics/file-sink.d.ts +38 -0
- package/dist/diagnostics/file-sink.d.ts.map +1 -0
- package/dist/diagnostics/file-sink.js +157 -0
- package/dist/diagnostics/file-sink.js.map +1 -0
- package/dist/diagnostics/redact.d.ts +7 -0
- package/dist/diagnostics/redact.d.ts.map +1 -0
- package/dist/diagnostics/redact.js +43 -0
- package/dist/diagnostics/redact.js.map +1 -0
- package/dist/diagnostics/tool-call-adapter.d.ts +4 -0
- package/dist/diagnostics/tool-call-adapter.d.ts.map +1 -0
- package/dist/diagnostics/tool-call-adapter.js +21 -0
- package/dist/diagnostics/tool-call-adapter.js.map +1 -0
- package/dist/engine/cesdk-adapter.d.ts +5 -1
- package/dist/engine/cesdk-adapter.d.ts.map +1 -1
- package/dist/engine/cesdk-adapter.js +9 -2
- package/dist/engine/cesdk-adapter.js.map +1 -1
- package/dist/engine/index.d.ts +1 -0
- package/dist/engine/index.d.ts.map +1 -1
- package/dist/engine/index.js +4 -0
- package/dist/engine/index.js.map +1 -1
- package/dist/engine/scene-resource-schemes.d.ts +2 -0
- package/dist/engine/scene-resource-schemes.d.ts.map +1 -0
- package/dist/engine/scene-resource-schemes.js +20 -0
- package/dist/engine/scene-resource-schemes.js.map +1 -0
- package/dist/http/server.d.ts +0 -6
- package/dist/http/server.d.ts.map +1 -1
- package/dist/http/server.js +1 -2
- package/dist/http/server.js.map +1 -1
- package/dist/server.d.ts +0 -4
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +4 -60
- package/dist/server.js.map +1 -1
- package/dist/test/scripts/changelog-add.d.ts +8 -0
- package/dist/test/scripts/changelog-add.d.ts.map +1 -0
- package/dist/test/scripts/changelog-add.js +50 -0
- package/dist/test/scripts/changelog-add.js.map +1 -0
- package/dist/test/scripts/changelog-collate.d.ts +38 -0
- package/dist/test/scripts/changelog-collate.d.ts.map +1 -0
- package/dist/test/scripts/changelog-collate.js +171 -0
- package/dist/test/scripts/changelog-collate.js.map +1 -0
- package/dist/test/test/changelog.test.d.ts +2 -0
- package/dist/test/test/changelog.test.d.ts.map +1 -0
- package/dist/test/test/changelog.test.js +293 -0
- package/dist/test/test/changelog.test.js.map +1 -0
- package/dist/test/test/cli/dispatcher.test.js +10 -3
- package/dist/test/test/cli/dispatcher.test.js.map +1 -1
- package/dist/test/test/cli/redirect-console.test.js +31 -0
- package/dist/test/test/cli/redirect-console.test.js.map +1 -1
- package/dist/test/test/cli/resolve-license.test.js +10 -1
- package/dist/test/test/cli/resolve-license.test.js.map +1 -1
- package/dist/test/test/cli/stdio-diagnostics.test.d.ts +2 -0
- package/dist/test/test/cli/stdio-diagnostics.test.d.ts.map +1 -0
- package/dist/test/test/cli/stdio-diagnostics.test.js +31 -0
- package/dist/test/test/cli/stdio-diagnostics.test.js.map +1 -0
- package/dist/test/test/config.test.js +17 -13
- package/dist/test/test/config.test.js.map +1 -1
- package/dist/test/test/diagnostics/bundle.test.d.ts +2 -0
- package/dist/test/test/diagnostics/bundle.test.d.ts.map +1 -0
- package/dist/test/test/diagnostics/bundle.test.js +53 -0
- package/dist/test/test/diagnostics/bundle.test.js.map +1 -0
- package/dist/test/test/diagnostics/compose.test.d.ts +2 -0
- package/dist/test/test/diagnostics/compose.test.d.ts.map +1 -0
- package/dist/test/test/diagnostics/compose.test.js +31 -0
- package/dist/test/test/diagnostics/compose.test.js.map +1 -0
- package/dist/test/test/diagnostics/file-sink.test.d.ts +2 -0
- package/dist/test/test/diagnostics/file-sink.test.d.ts.map +1 -0
- package/dist/test/test/diagnostics/file-sink.test.js +113 -0
- package/dist/test/test/diagnostics/file-sink.test.js.map +1 -0
- package/dist/test/test/diagnostics/redact.test.d.ts +2 -0
- package/dist/test/test/diagnostics/redact.test.d.ts.map +1 -0
- package/dist/test/test/diagnostics/redact.test.js +59 -0
- package/dist/test/test/diagnostics/redact.test.js.map +1 -0
- package/dist/test/test/diagnostics/tool-call-adapter.test.d.ts +2 -0
- package/dist/test/test/diagnostics/tool-call-adapter.test.d.ts.map +1 -0
- package/dist/test/test/diagnostics/tool-call-adapter.test.js +34 -0
- package/dist/test/test/diagnostics/tool-call-adapter.test.js.map +1 -0
- package/dist/test/test/engine/cesdk-adapter.test.d.ts +2 -0
- package/dist/test/test/engine/cesdk-adapter.test.d.ts.map +1 -0
- package/dist/test/test/engine/cesdk-adapter.test.js +32 -0
- package/dist/test/test/engine/cesdk-adapter.test.js.map +1 -0
- package/dist/test/test/handbook-contract.test.js +6 -2
- package/dist/test/test/handbook-contract.test.js.map +1 -1
- package/dist/test/test/http/server.test.js +0 -36
- package/dist/test/test/http/server.test.js.map +1 -1
- package/dist/test/test/http/workspace-auth.test.js +0 -1
- package/dist/test/test/http/workspace-auth.test.js.map +1 -1
- package/dist/test/test/server.test.js +0 -40
- package/dist/test/test/server.test.js.map +1 -1
- package/dist/test/test/tools/edit-harness.d.ts +14 -0
- package/dist/test/test/tools/edit-harness.d.ts.map +1 -0
- package/dist/test/test/tools/edit-harness.js +30 -0
- package/dist/test/test/tools/edit-harness.js.map +1 -0
- package/dist/test/test/tools/edit.telemetry.test.d.ts +2 -0
- package/dist/test/test/tools/edit.telemetry.test.d.ts.map +1 -0
- package/dist/test/test/tools/edit.telemetry.test.js +46 -0
- package/dist/test/test/tools/edit.telemetry.test.js.map +1 -0
- package/dist/test/test/tools/export-harness.d.ts +13 -0
- package/dist/test/test/tools/export-harness.d.ts.map +1 -0
- package/dist/test/test/tools/export-harness.js +27 -0
- package/dist/test/test/tools/export-harness.js.map +1 -0
- package/dist/test/test/tools/export.telemetry.test.d.ts +2 -0
- package/dist/test/test/tools/export.telemetry.test.d.ts.map +1 -0
- package/dist/test/test/tools/export.telemetry.test.js +65 -0
- package/dist/test/test/tools/export.telemetry.test.js.map +1 -0
- package/dist/test/test/tools/import.test.d.ts +2 -0
- package/dist/test/test/tools/import.test.d.ts.map +1 -0
- package/dist/test/test/tools/import.test.js +122 -0
- package/dist/test/test/tools/import.test.js.map +1 -0
- package/dist/test/test/tools/index.test.js +78 -16
- package/dist/test/test/tools/index.test.js.map +1 -1
- package/dist/test/test/tools/load.integration.test.d.ts +2 -0
- package/dist/test/test/tools/load.integration.test.d.ts.map +1 -0
- package/dist/test/test/tools/load.integration.test.js +165 -0
- package/dist/test/test/tools/load.integration.test.js.map +1 -0
- package/dist/test/test/tools/load.test.d.ts +2 -0
- package/dist/test/test/tools/load.test.d.ts.map +1 -0
- package/dist/test/test/tools/load.test.js +387 -0
- package/dist/test/test/tools/load.test.js.map +1 -0
- package/dist/test/test/tools/preview-harness.d.ts +9 -0
- package/dist/test/test/tools/preview-harness.d.ts.map +1 -0
- package/dist/test/test/tools/preview-harness.js +23 -0
- package/dist/test/test/tools/preview-harness.js.map +1 -0
- package/dist/test/test/tools/preview.telemetry.test.d.ts +2 -0
- package/dist/test/test/tools/preview.telemetry.test.d.ts.map +1 -0
- package/dist/test/test/tools/preview.telemetry.test.js +36 -0
- package/dist/test/test/tools/preview.telemetry.test.js.map +1 -0
- package/dist/test/test/tools/schema-best-practices.d.ts +13 -0
- package/dist/test/test/tools/schema-best-practices.d.ts.map +1 -0
- package/dist/test/test/tools/schema-best-practices.js +169 -0
- package/dist/test/test/tools/schema-best-practices.js.map +1 -0
- package/dist/test/test/tools/schema-best-practices.test.d.ts +3 -0
- package/dist/test/test/tools/schema-best-practices.test.d.ts.map +1 -0
- package/dist/test/test/tools/schema-best-practices.test.js +194 -0
- package/dist/test/test/tools/schema-best-practices.test.js.map +1 -0
- package/dist/test/test/tools/spans.test.d.ts +2 -0
- package/dist/test/test/tools/spans.test.d.ts.map +1 -0
- package/dist/test/test/tools/spans.test.js +84 -0
- package/dist/test/test/tools/spans.test.js.map +1 -0
- package/dist/test/test/viewer/cesdk-cdn.test.d.ts +2 -0
- package/dist/test/test/viewer/cesdk-cdn.test.d.ts.map +1 -0
- package/dist/test/test/viewer/cesdk-cdn.test.js +19 -0
- package/dist/test/test/viewer/cesdk-cdn.test.js.map +1 -0
- package/dist/test/test/viewer/config-route.test.d.ts +2 -0
- package/dist/test/test/viewer/config-route.test.d.ts.map +1 -0
- package/dist/test/test/viewer/config-route.test.js +28 -0
- package/dist/test/test/viewer/config-route.test.js.map +1 -0
- package/dist/test/test/viewer/spa-version.test.d.ts +2 -0
- package/dist/test/test/viewer/spa-version.test.d.ts.map +1 -0
- package/dist/test/test/viewer/spa-version.test.js +14 -0
- package/dist/test/test/viewer/spa-version.test.js.map +1 -0
- package/dist/test/test/workspace/content-hash.test.d.ts +2 -0
- package/dist/test/test/workspace/content-hash.test.d.ts.map +1 -0
- package/dist/test/test/workspace/content-hash.test.js +17 -0
- package/dist/test/test/workspace/content-hash.test.js.map +1 -0
- package/dist/test/tsconfig.test.tsbuildinfo +1 -1
- package/dist/test/vitest.config.js +1 -1
- package/dist/test/vitest.config.js.map +1 -1
- package/dist/tools/asset-generate.d.ts.map +1 -1
- package/dist/tools/asset-generate.js +1 -8
- package/dist/tools/asset-generate.js.map +1 -1
- package/dist/tools/edit.d.ts +3 -0
- package/dist/tools/edit.d.ts.map +1 -1
- package/dist/tools/edit.js +145 -96
- package/dist/tools/edit.js.map +1 -1
- package/dist/tools/export.d.ts +3 -0
- package/dist/tools/export.d.ts.map +1 -1
- package/dist/tools/export.js +146 -108
- package/dist/tools/export.js.map +1 -1
- package/dist/tools/import.d.ts +12 -0
- package/dist/tools/import.d.ts.map +1 -0
- package/dist/tools/import.js +144 -0
- package/dist/tools/import.js.map +1 -0
- package/dist/tools/index.d.ts +3 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +44 -4
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/load.d.ts +26 -0
- package/dist/tools/load.d.ts.map +1 -0
- package/dist/tools/load.js +400 -0
- package/dist/tools/load.js.map +1 -0
- package/dist/tools/preview.d.ts +3 -0
- package/dist/tools/preview.d.ts.map +1 -1
- package/dist/tools/preview.js +79 -44
- package/dist/tools/preview.js.map +1 -1
- package/dist/tools/result.d.ts +1 -1
- package/dist/tools/result.js +2 -2
- package/dist/tools/result.js.map +1 -1
- package/dist/tools/spans.d.ts +45 -0
- package/dist/tools/spans.d.ts.map +1 -0
- package/dist/tools/spans.js +77 -0
- package/dist/tools/spans.js.map +1 -0
- package/dist/tools/telemetry-wrapper.d.ts +4 -0
- package/dist/tools/telemetry-wrapper.d.ts.map +1 -0
- package/dist/tools/telemetry-wrapper.js +43 -0
- package/dist/tools/telemetry-wrapper.js.map +1 -0
- package/dist/viewer/cesdk-cdn.d.ts +16 -0
- package/dist/viewer/cesdk-cdn.d.ts.map +1 -0
- package/dist/viewer/cesdk-cdn.js +30 -0
- package/dist/viewer/cesdk-cdn.js.map +1 -0
- package/dist/viewer/router.d.ts +6 -0
- package/dist/viewer/router.d.ts.map +1 -1
- package/dist/viewer/router.js +4 -1
- package/dist/viewer/router.js.map +1 -1
- package/dist/viewer/spa-assets.generated.d.ts.map +1 -1
- package/dist/viewer/spa-assets.generated.js +2 -3
- package/dist/viewer/spa-assets.generated.js.map +1 -1
- package/dist/workspace/content-hash.d.ts +2 -0
- package/dist/workspace/content-hash.d.ts.map +1 -0
- package/dist/workspace/content-hash.js +15 -0
- package/dist/workspace/content-hash.js.map +1 -0
- package/package.json +18 -9
- package/assets/docs/guide/actions.md +0 -1038
- package/assets/docs/guide/animation/overview.md +0 -22
- package/assets/docs/guide/automation/batch-processing.md +0 -474
- package/assets/docs/guide/browser-support.md +0 -38
- package/assets/docs/guide/concepts/edit-modes.md +0 -431
- package/assets/docs/guide/concepts/headless-mode/browser.md +0 -291
- package/assets/docs/guide/create-audio/audio.md +0 -336
- package/assets/docs/guide/create-video/overview.md +0 -224
- package/assets/docs/guide/create-video/timeline-editor.md +0 -622
- package/assets/docs/guide/create-video/update-caption-presets.md +0 -676
- package/assets/docs/guide/edit-image/vectorize.md +0 -204
- package/assets/docs/guide/export-save-publish/export/to-html5.md +0 -474
- package/assets/docs/guide/export-save-publish/export/to-mp4.md +0 -364
- package/assets/docs/guide/get-started/vanilla-js/quickstart.md +0 -175
- package/assets/docs/guide/grid-and-rulers.md +0 -222
- package/assets/docs/guide/guides/text/rendering-internals.md +0 -796
- package/assets/docs/guide/import-media/asset-library.md +0 -23
- package/assets/docs/guide/import-media/asset-panel/basics.md +0 -324
- package/assets/docs/guide/import-media/asset-panel/customize.md +0 -478
- package/assets/docs/guide/import-media/asset-panel/thumbnails.md +0 -633
- package/assets/docs/guide/import-media/capture-from-camera/record-video.md +0 -137
- package/assets/docs/guide/import-media/capture-from-camera.md +0 -20
- package/assets/docs/guide/import-media/from-local-source/user-upload.md +0 -438
- package/assets/docs/guide/import-media/from-local-source.md +0 -20
- package/assets/docs/guide/import-media/from-remote-source/getty-images.md +0 -627
- package/assets/docs/guide/import-media/from-remote-source/imgly-premium-assets.md +0 -625
- package/assets/docs/guide/import-media/from-remote-source/pexels.md +0 -692
- package/assets/docs/guide/import-media/from-remote-source/soundstripe.md +0 -497
- package/assets/docs/guide/import-media/from-remote-source/third-party.md +0 -51
- package/assets/docs/guide/import-media/from-remote-source/unsplash.md +0 -914
- package/assets/docs/guide/import-media/from-remote-source/your-server.md +0 -764
- package/assets/docs/guide/open-the-editor/from-htmlcanvas.md +0 -228
- package/assets/docs/guide/open-the-editor/set-zoom-level.md +0 -303
- package/assets/docs/guide/plugins/asset-sources.md +0 -553
- package/assets/docs/guide/starterkits/3d-mockup-editor.md +0 -748
- package/assets/docs/guide/starterkits/advanced-editor.md +0 -698
- package/assets/docs/guide/starterkits/advanced-video-editor.md +0 -696
- package/assets/docs/guide/starterkits/ai-editor.md +0 -749
- package/assets/docs/guide/starterkits/airtable-image-editor.md +0 -672
- package/assets/docs/guide/starterkits/apparel-ui.md +0 -188
- package/assets/docs/guide/starterkits/assets.md +0 -27
- package/assets/docs/guide/starterkits/auto-resize.md +0 -586
- package/assets/docs/guide/starterkits/automated-video-generation.md +0 -692
- package/assets/docs/guide/starterkits/background-removal-editor.md +0 -480
- package/assets/docs/guide/starterkits/content-moderation.md +0 -863
- package/assets/docs/guide/starterkits/creative-automation.md +0 -28
- package/assets/docs/guide/starterkits/custom-built-uis.md +0 -26
- package/assets/docs/guide/starterkits/customization.md +0 -29
- package/assets/docs/guide/starterkits/cutout-lines-editor.md +0 -470
- package/assets/docs/guide/starterkits/data-merge.md +0 -850
- package/assets/docs/guide/starterkits/design-editor.md +0 -698
- package/assets/docs/guide/starterkits/design-generation.md +0 -719
- package/assets/docs/guide/starterkits/design-validation.md +0 -808
- package/assets/docs/guide/starterkits/editor-ui-configurations.md +0 -14
- package/assets/docs/guide/starterkits/export-options.md +0 -724
- package/assets/docs/guide/starterkits/export-using-renderer.md +0 -708
- package/assets/docs/guide/starterkits/extensibility.md +0 -28
- package/assets/docs/guide/starterkits/force-crop-editor.md +0 -675
- package/assets/docs/guide/starterkits/form-based-template-adoption.md +0 -522
- package/assets/docs/guide/starterkits/getty-images-editor.md +0 -700
- package/assets/docs/guide/starterkits/html5-ads-exporter.md +0 -719
- package/assets/docs/guide/starterkits/indesign-template-import.md +0 -580
- package/assets/docs/guide/starterkits/layouts-editor.md +0 -724
- package/assets/docs/guide/starterkits/mobile-ui.md +0 -185
- package/assets/docs/guide/starterkits/mockup-editor.md +0 -745
- package/assets/docs/guide/starterkits/multi-image-generation.md +0 -542
- package/assets/docs/guide/starterkits/page-sizes-editor.md +0 -657
- package/assets/docs/guide/starterkits/pexels-image-editor.md +0 -665
- package/assets/docs/guide/starterkits/photo-editor.md +0 -755
- package/assets/docs/guide/starterkits/photo-ui.md +0 -186
- package/assets/docs/guide/starterkits/photobook-ui.md +0 -188
- package/assets/docs/guide/starterkits/placeholders.md +0 -678
- package/assets/docs/guide/starterkits/player.md +0 -405
- package/assets/docs/guide/starterkits/plugins.md +0 -25
- package/assets/docs/guide/starterkits/postcard-editor.md +0 -202
- package/assets/docs/guide/starterkits/pptx-template-import.md +0 -581
- package/assets/docs/guide/starterkits/print-ready-pdf-editor.md +0 -746
- package/assets/docs/guide/starterkits/product-editor.md +0 -773
- package/assets/docs/guide/starterkits/psd-template-import.md +0 -580
- package/assets/docs/guide/starterkits/qr-code-editor.md +0 -470
- package/assets/docs/guide/starterkits/single-page-editor.md +0 -661
- package/assets/docs/guide/starterkits/start-with-image.md +0 -684
- package/assets/docs/guide/starterkits/start-with-video.md +0 -651
- package/assets/docs/guide/starterkits/t-shirt-designer.md +0 -742
- package/assets/docs/guide/starterkits/templating.md +0 -23
- package/assets/docs/guide/starterkits/theming.md +0 -662
- package/assets/docs/guide/starterkits/translation-internationalization.md +0 -662
- package/assets/docs/guide/starterkits/unsplash-editor.md +0 -839
- package/assets/docs/guide/starterkits/vectorizer-editor.md +0 -466
- package/assets/docs/guide/starterkits/version-history.md +0 -745
- package/assets/docs/guide/starterkits/video-animations.md +0 -853
- package/assets/docs/guide/starterkits/video-captions.md +0 -884
- package/assets/docs/guide/starterkits/video-editing.md +0 -25
- package/assets/docs/guide/starterkits/video-editor.md +0 -696
- package/assets/docs/guide/starterkits/video-export-options.md +0 -676
- package/assets/docs/guide/starterkits/viewer.md +0 -400
- package/assets/docs/guide/starterkits.md +0 -41
- package/assets/docs/guide/stickers-and-shapes/create-edit/vector-edit.md +0 -362
- package/assets/docs/guide/text/custom-fonts.md +0 -401
- package/assets/docs/guide/text/decorations.md +0 -330
- package/assets/docs/guide/text/enumerations.md +0 -258
- package/assets/docs/guide/to-v1-10.md +0 -131
- package/assets/docs/guide/to-v1-13.md +0 -165
- package/assets/docs/guide/to-v1-32.md +0 -110
- package/assets/docs/guide/to-v1-69.md +0 -468
- package/assets/docs/guide/to-v1-72.md +0 -193
- package/assets/docs/guide/use-templates/library.md +0 -450
- package/assets/docs/guide/user-interface/ai-integration/audio-generation.md +0 -428
- package/assets/docs/guide/user-interface/ai-integration/auto-captions.md +0 -337
- package/assets/docs/guide/user-interface/ai-integration/custom-provider.md +0 -853
- package/assets/docs/guide/user-interface/ai-integration/gateway-provider.md +0 -1045
- package/assets/docs/guide/user-interface/ai-integration/image-generation.md +0 -641
- package/assets/docs/guide/user-interface/ai-integration/integrate.md +0 -966
- package/assets/docs/guide/user-interface/ai-integration/proxy-server.md +0 -99
- package/assets/docs/guide/user-interface/ai-integration/text-generation.md +0 -498
- package/assets/docs/guide/user-interface/ai-integration/video-generation.md +0 -493
- package/assets/docs/guide/user-interface/ai-integration.md +0 -30
- package/assets/docs/guide/user-interface/appearance/change-ui-font.md +0 -316
- package/assets/docs/guide/user-interface/appearance/custom-labels.md +0 -509
- package/assets/docs/guide/user-interface/appearance/icons.md +0 -373
- package/assets/docs/guide/user-interface/appearance/theming.md +0 -665
- package/assets/docs/guide/user-interface/appearance.md +0 -23
- package/assets/docs/guide/user-interface/build-your-own-ui.md +0 -620
- package/assets/docs/guide/user-interface/customization/canvas-menu.md +0 -412
- package/assets/docs/guide/user-interface/customization/canvas.md +0 -281
- package/assets/docs/guide/user-interface/customization/color-palette.md +0 -413
- package/assets/docs/guide/user-interface/customization/crop-presets.md +0 -384
- package/assets/docs/guide/user-interface/customization/disable-or-enable.md +0 -676
- package/assets/docs/guide/user-interface/customization/dock.md +0 -399
- package/assets/docs/guide/user-interface/customization/force-crop.md +0 -289
- package/assets/docs/guide/user-interface/customization/inspector-bar.md +0 -371
- package/assets/docs/guide/user-interface/customization/navigation-bar.md +0 -516
- package/assets/docs/guide/user-interface/customization/page-format.md +0 -436
- package/assets/docs/guide/user-interface/customization/panel.md +0 -605
- package/assets/docs/guide/user-interface/customization/quick-start/add-action-buttons.md +0 -531
- package/assets/docs/guide/user-interface/customization/quick-start/add-dock-buttons.md +0 -358
- package/assets/docs/guide/user-interface/customization/quick-start/create-custom-components.md +0 -374
- package/assets/docs/guide/user-interface/customization/quick-start/reorder-components.md +0 -323
- package/assets/docs/guide/user-interface/customization/quick-start/show-hide-components.md +0 -294
- package/assets/docs/guide/user-interface/customization/quick-start.md +0 -12
- package/assets/docs/guide/user-interface/customization/reference/component-order-api.md +0 -519
- package/assets/docs/guide/user-interface/customization/reference/component-reference.md +0 -333
- package/assets/docs/guide/user-interface/customization/reference.md +0 -12
- package/assets/docs/guide/user-interface/customization.md +0 -39
- package/assets/docs/guide/user-interface/localization.md +0 -633
- package/assets/docs/guide/user-interface/overview.md +0 -167
- package/assets/docs/guide/user-interface/ui-extensions/add-custom-feature.md +0 -411
- package/assets/docs/guide/user-interface/ui-extensions/asset-library.md +0 -721
- package/assets/docs/guide/user-interface/ui-extensions/create-custom-panel.md +0 -331
- package/assets/docs/guide/user-interface/ui-extensions/customize-behaviour.md +0 -553
- package/assets/docs/guide/user-interface/ui-extensions/notifications-and-dialogs.md +0 -672
- package/assets/docs/guide/user-interface/ui-extensions/quick-actions.md +0 -415
- package/assets/docs/guide/user-interface/ui-extensions/register-new-component.md +0 -521
- package/assets/docs/guide/user-interface/ui-extensions.md +0 -26
- package/assets/docs/guide/user-interface.md +0 -25
- package/assets/prompts/evals-assetGenerate.md +0 -12
- package/assets/prompts/evals-brutalistCore.md +0 -34
- package/assets/prompts/evals-danskCatalogue.md +0 -31
- package/assets/prompts/evals-exportRoundTrip.md +0 -12
- package/assets/prompts/evals-inspectPriorCode.md +0 -16
- package/assets/prompts/evals-listProjectFiles.md +0 -6
- package/assets/prompts/evals-readAndExplainScript.md +0 -6
- package/assets/prompts/evals-resumeAcrossRestart.md +0 -15
- package/assets/prompts/evals-rewindRecovery.md +0 -10
- package/assets/prompts/evals-searchAcrossFiles.md +0 -6
- package/assets/prompts/evals-weddingCard.md +0 -20
- package/assets/prompts/explain.md +0 -6
- package/assets/prompts/review.md +0 -6
- package/dist/frontmatter.d.ts +0 -15
- package/dist/frontmatter.d.ts.map +0 -1
- package/dist/frontmatter.js +0 -46
- package/dist/frontmatter.js.map +0 -1
- package/dist/test/test/frontmatter.test.d.ts +0 -2
- package/dist/test/test/frontmatter.test.d.ts.map +0 -1
- package/dist/test/test/frontmatter.test.js +0 -55
- package/dist/test/test/frontmatter.test.js.map +0 -1
|
@@ -1,44 +1,29 @@
|
|
|
1
|
-
> This is one page of the CE.SDK
|
|
2
|
-
|
|
3
|
-
**Navigation:** [Guides](./guides.md) > [Create and Edit Audio](./create-audio/audio.md) > [Add Sound Effects](./create-audio/audio/add-sound-effects.md)
|
|
1
|
+
> This is one page of the CE.SDK Node.js documentation. For a complete overview, see the [Node.js Documentation Index](https://img.ly/docs/cesdk/node.md). For all docs in one file, see [llms-full.txt](./llms-full.txt.md).
|
|
4
2
|
|
|
5
3
|
---
|
|
6
4
|
|
|
7
|
-
Generate sound effects programmatically using buffers with arbitrary audio data. Create notification chimes, alert tones, and melodies without external files.
|
|
8
|
-
|
|
9
|
-

|
|
5
|
+
Generate sound effects programmatically using buffers with arbitrary audio data. Create notification chimes, alert tones, and melodies without external files in headless server environments.
|
|
10
6
|
|
|
11
7
|
> **Reading time:** 10 minutes
|
|
12
8
|
>
|
|
13
9
|
> **Resources:**
|
|
14
10
|
>
|
|
15
11
|
> - [Download examples](https://github.com/imgly/cesdk-web-examples/archive/refs/tags/release-$UBQ_VERSION$.zip)
|
|
16
|
-
>
|
|
17
|
-
> - [
|
|
18
|
-
>
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
FiltersAssetSource,
|
|
32
|
-
PagePresetsAssetSource,
|
|
33
|
-
StickerAssetSource,
|
|
34
|
-
TextAssetSource,
|
|
35
|
-
TextComponentAssetSource,
|
|
36
|
-
TypefaceAssetSource,
|
|
37
|
-
UploadAssetSources,
|
|
38
|
-
VectorShapeAssetSource
|
|
39
|
-
} from '@cesdk/cesdk-js/plugins';
|
|
40
|
-
import { VideoEditorConfig } from './video-editor/plugin';
|
|
41
|
-
import packageJson from './package.json';
|
|
12
|
+
>
|
|
13
|
+
> - [View source on GitHub](https://github.com/imgly/cesdk-web-examples/tree/release-$UBQ_VERSION$/guides-create-audio-add-sound-effects-server-js)
|
|
14
|
+
>
|
|
15
|
+
> - [Open in StackBlitz](https://stackblitz.com/github/imgly/cesdk-web-examples/tree/v$UBQ_VERSION$/guides-create-audio-add-sound-effects-server-js)
|
|
16
|
+
|
|
17
|
+
<NodejsVideoExportNotice {...props} />
|
|
18
|
+
|
|
19
|
+
CE.SDK's headless engine lets you create audio from code using buffers. This approach generates sound effects dynamically without external files—useful for notification tones, procedural audio, or any scenario where you need to synthesize audio programmatically on the server.
|
|
20
|
+
|
|
21
|
+
```typescript file=@cesdk_web_examples/guides-create-audio-add-sound-effects-server-js/server-js.ts reference-only
|
|
22
|
+
import CreativeEngine from '@cesdk/node';
|
|
23
|
+
import { config } from 'dotenv';
|
|
24
|
+
import { writeFileSync, mkdirSync, existsSync } from 'fs';
|
|
25
|
+
|
|
26
|
+
config();
|
|
42
27
|
|
|
43
28
|
/**
|
|
44
29
|
* Creates a WAV file buffer from audio parameters and a sample generator function.
|
|
@@ -51,7 +36,6 @@ import packageJson from './package.json';
|
|
|
51
36
|
function createWavBuffer(
|
|
52
37
|
sampleRate: number,
|
|
53
38
|
durationSeconds: number,
|
|
54
|
-
/* eslint-disable-next-line no-unused-vars -- Parameter name documents callback signature */
|
|
55
39
|
generator: (time: number) => number
|
|
56
40
|
): Uint8Array {
|
|
57
41
|
const bitsPerSample = 16;
|
|
@@ -204,272 +188,226 @@ const ALERT_TONE = {
|
|
|
204
188
|
};
|
|
205
189
|
|
|
206
190
|
/**
|
|
207
|
-
* CE.SDK
|
|
191
|
+
* CE.SDK Server Guide: Add Sound Effects
|
|
208
192
|
*
|
|
209
193
|
* This example demonstrates:
|
|
210
194
|
* - Creating audio buffers with arbitrary data
|
|
211
|
-
* - Generating sound effects programmatically (chimes,
|
|
195
|
+
* - Generating sound effects programmatically (chimes, melodies, alerts)
|
|
212
196
|
* - Using WAV format for in-memory audio
|
|
213
197
|
* - Positioning sound effects on the timeline
|
|
198
|
+
* - Exporting the scene for rendering
|
|
214
199
|
*/
|
|
215
|
-
class Example implements EditorPlugin {
|
|
216
|
-
name = packageJson.name;
|
|
217
|
-
|
|
218
|
-
version = packageJson.version;
|
|
219
|
-
|
|
220
|
-
async initialize({ cesdk }: EditorPluginContext): Promise<void> {
|
|
221
|
-
if (!cesdk) {
|
|
222
|
-
throw new Error('CE.SDK instance is required for this plugin');
|
|
223
|
-
}
|
|
224
200
|
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
color: { r: 0, g: 0, b: 0, a: 1 }
|
|
201
|
+
const engine = await CreativeEngine.init({
|
|
202
|
+
baseURL: process.env.IMGLY_LOCAL_ASSETS_URL
|
|
203
|
+
});
|
|
204
|
+
|
|
205
|
+
try {
|
|
206
|
+
// Create a scene with a page for audio content
|
|
207
|
+
engine.scene.create('DepthStack');
|
|
208
|
+
const page = engine.block.create('page');
|
|
209
|
+
engine.block.setWidth(page, 1920);
|
|
210
|
+
engine.block.setHeight(page, 1080);
|
|
211
|
+
engine.block.appendChild(engine.scene.get()!, page);
|
|
212
|
+
|
|
213
|
+
// Calculate total duration: 3 effects x 2s + 2 gaps x 0.5s = 7s
|
|
214
|
+
const effectDuration = 2.0;
|
|
215
|
+
const gapDuration = 0.5;
|
|
216
|
+
const totalDuration = 3 * effectDuration + 2 * gapDuration; // 7 seconds
|
|
217
|
+
|
|
218
|
+
// Set page duration to match total effects length
|
|
219
|
+
engine.block.setDuration(page, totalDuration);
|
|
220
|
+
|
|
221
|
+
const sampleRate = 48000;
|
|
222
|
+
|
|
223
|
+
// Create the "success chime" sound effect
|
|
224
|
+
const chimeBuffer = engine.editor.createBuffer();
|
|
225
|
+
|
|
226
|
+
// Generate the chime using our helper function
|
|
227
|
+
const chimeWav = createWavBuffer(
|
|
228
|
+
sampleRate,
|
|
229
|
+
SUCCESS_CHIME.totalDuration,
|
|
230
|
+
(time) => {
|
|
231
|
+
let sample = 0;
|
|
232
|
+
|
|
233
|
+
// Mix all notes together
|
|
234
|
+
for (const note of SUCCESS_CHIME.notes) {
|
|
235
|
+
// Calculate envelope for this note
|
|
236
|
+
const envelope = adsr(
|
|
237
|
+
time,
|
|
238
|
+
note.start,
|
|
239
|
+
note.duration,
|
|
240
|
+
0.02, // Soft attack (20ms)
|
|
241
|
+
0.08, // Gentle decay (80ms)
|
|
242
|
+
0.7, // Sustain at 70%
|
|
243
|
+
0.25 // Smooth release (250ms)
|
|
244
|
+
);
|
|
245
|
+
|
|
246
|
+
if (envelope > 0) {
|
|
247
|
+
// Generate sine wave with slight harmonics for richness
|
|
248
|
+
const fundamental = Math.sin(2 * Math.PI * note.freq * time);
|
|
249
|
+
const harmonic2 = Math.sin(4 * Math.PI * note.freq * time) * 0.25;
|
|
250
|
+
const harmonic3 = Math.sin(6 * Math.PI * note.freq * time) * 0.1;
|
|
251
|
+
|
|
252
|
+
sample += (fundamental + harmonic2 + harmonic3) * envelope * 0.3;
|
|
253
|
+
}
|
|
279
254
|
}
|
|
280
|
-
});
|
|
281
|
-
|
|
282
|
-
const engine = cesdk.engine;
|
|
283
255
|
|
|
284
|
-
|
|
285
|
-
const pages = engine.block.findByType('page');
|
|
286
|
-
const page = pages[0];
|
|
287
|
-
if (!page) {
|
|
288
|
-
throw new Error('No page found');
|
|
256
|
+
return sample;
|
|
289
257
|
}
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
// Mix all notes together
|
|
332
|
-
for (const note of SUCCESS_CHIME.notes) {
|
|
333
|
-
// Calculate envelope for this note
|
|
334
|
-
const envelope = adsr(
|
|
335
|
-
time,
|
|
336
|
-
note.start,
|
|
337
|
-
note.duration,
|
|
338
|
-
0.02, // Soft attack (20ms)
|
|
339
|
-
0.08, // Gentle decay (80ms)
|
|
340
|
-
0.7, // Sustain at 70%
|
|
341
|
-
0.25 // Smooth release (250ms)
|
|
342
|
-
);
|
|
343
|
-
|
|
344
|
-
if (envelope > 0) {
|
|
345
|
-
// Generate sine wave with slight harmonics for richness
|
|
346
|
-
const fundamental = Math.sin(2 * Math.PI * note.freq * time);
|
|
347
|
-
const harmonic2 = Math.sin(4 * Math.PI * note.freq * time) * 0.25;
|
|
348
|
-
const harmonic3 = Math.sin(6 * Math.PI * note.freq * time) * 0.1;
|
|
349
|
-
|
|
350
|
-
sample += (fundamental + harmonic2 + harmonic3) * envelope * 0.3;
|
|
351
|
-
}
|
|
258
|
+
);
|
|
259
|
+
|
|
260
|
+
// Write WAV data to the buffer
|
|
261
|
+
engine.editor.setBufferData(chimeBuffer, 0, chimeWav);
|
|
262
|
+
|
|
263
|
+
// Create audio block for the chime (starts at 0s)
|
|
264
|
+
const chimeBlock = engine.block.create('audio');
|
|
265
|
+
engine.block.appendChild(page, chimeBlock);
|
|
266
|
+
engine.block.setString(chimeBlock, 'audio/fileURI', chimeBuffer);
|
|
267
|
+
engine.block.setTimeOffset(chimeBlock, 0);
|
|
268
|
+
engine.block.setDuration(chimeBlock, SUCCESS_CHIME.totalDuration);
|
|
269
|
+
engine.block.setVolume(chimeBlock, 0.8);
|
|
270
|
+
|
|
271
|
+
console.log('Created success chime at 0s');
|
|
272
|
+
|
|
273
|
+
// Create the "notification melody" sound effect
|
|
274
|
+
const melodyBuffer = engine.editor.createBuffer();
|
|
275
|
+
|
|
276
|
+
const melodyWav = createWavBuffer(
|
|
277
|
+
sampleRate,
|
|
278
|
+
NOTIFICATION_MELODY.totalDuration,
|
|
279
|
+
(time) => {
|
|
280
|
+
let sample = 0;
|
|
281
|
+
|
|
282
|
+
for (const note of NOTIFICATION_MELODY.notes) {
|
|
283
|
+
const envelope = adsr(
|
|
284
|
+
time,
|
|
285
|
+
note.start,
|
|
286
|
+
note.duration,
|
|
287
|
+
0.01, // Soft attack (10ms)
|
|
288
|
+
0.06, // Gentle decay (60ms)
|
|
289
|
+
0.6, // Sustain at 60%
|
|
290
|
+
0.2 // Smooth release (200ms)
|
|
291
|
+
);
|
|
292
|
+
|
|
293
|
+
if (envelope > 0) {
|
|
294
|
+
// Pure sine wave with light 2nd harmonic for gentle tone
|
|
295
|
+
const fundamental = Math.sin(2 * Math.PI * note.freq * time);
|
|
296
|
+
const harmonic2 = Math.sin(4 * Math.PI * note.freq * time) * 0.15;
|
|
297
|
+
|
|
298
|
+
sample += (fundamental + harmonic2) * envelope * 0.4;
|
|
352
299
|
}
|
|
353
|
-
|
|
354
|
-
return sample;
|
|
355
300
|
}
|
|
356
|
-
);
|
|
357
|
-
|
|
358
|
-
// Write WAV data to the buffer
|
|
359
|
-
engine.editor.setBufferData(chimeBuffer, 0, chimeWav);
|
|
360
|
-
|
|
361
|
-
// Create audio block for the chime (starts at 0s)
|
|
362
|
-
const chimeBlock = engine.block.create('audio');
|
|
363
|
-
engine.block.appendChild(page, chimeBlock);
|
|
364
|
-
engine.block.setString(chimeBlock, 'audio/fileURI', chimeBuffer);
|
|
365
|
-
engine.block.setTimeOffset(chimeBlock, 0);
|
|
366
|
-
engine.block.setDuration(chimeBlock, SUCCESS_CHIME.totalDuration);
|
|
367
|
-
engine.block.setVolume(chimeBlock, 0.8);
|
|
368
|
-
|
|
369
|
-
// Create the "notification melody" sound effect
|
|
370
|
-
const melodyBuffer = engine.editor.createBuffer();
|
|
371
|
-
|
|
372
|
-
const melodyWav = createWavBuffer(
|
|
373
|
-
sampleRate,
|
|
374
|
-
NOTIFICATION_MELODY.totalDuration,
|
|
375
|
-
(time) => {
|
|
376
|
-
let sample = 0;
|
|
377
|
-
|
|
378
|
-
for (const note of NOTIFICATION_MELODY.notes) {
|
|
379
|
-
const envelope = adsr(
|
|
380
|
-
time,
|
|
381
|
-
note.start,
|
|
382
|
-
note.duration,
|
|
383
|
-
0.01, // Soft attack (10ms)
|
|
384
|
-
0.06, // Gentle decay (60ms)
|
|
385
|
-
0.6, // Sustain at 60%
|
|
386
|
-
0.2 // Smooth release (200ms)
|
|
387
|
-
);
|
|
388
|
-
|
|
389
|
-
if (envelope > 0) {
|
|
390
|
-
// Pure sine wave with light 2nd harmonic for gentle tone
|
|
391
|
-
const fundamental = Math.sin(2 * Math.PI * note.freq * time);
|
|
392
|
-
const harmonic2 = Math.sin(4 * Math.PI * note.freq * time) * 0.15;
|
|
393
|
-
|
|
394
|
-
sample += (fundamental + harmonic2) * envelope * 0.4;
|
|
395
|
-
}
|
|
396
|
-
}
|
|
397
301
|
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
302
|
+
return sample;
|
|
303
|
+
}
|
|
304
|
+
);
|
|
305
|
+
|
|
306
|
+
engine.editor.setBufferData(melodyBuffer, 0, melodyWav);
|
|
307
|
+
|
|
308
|
+
// Starts at 2.5s (after 2s effect + 0.5s gap)
|
|
309
|
+
const melodyBlock = engine.block.create('audio');
|
|
310
|
+
engine.block.appendChild(page, melodyBlock);
|
|
311
|
+
engine.block.setString(melodyBlock, 'audio/fileURI', melodyBuffer);
|
|
312
|
+
engine.block.setTimeOffset(melodyBlock, effectDuration + gapDuration); // 2.5s
|
|
313
|
+
engine.block.setDuration(melodyBlock, NOTIFICATION_MELODY.totalDuration);
|
|
314
|
+
engine.block.setVolume(melodyBlock, 0.8);
|
|
315
|
+
|
|
316
|
+
console.log('Created notification melody at 2.5s');
|
|
317
|
+
|
|
318
|
+
// Create the "alert" sound effect
|
|
319
|
+
const alertBuffer = engine.editor.createBuffer();
|
|
320
|
+
|
|
321
|
+
const alertWav = createWavBuffer(
|
|
322
|
+
sampleRate,
|
|
323
|
+
ALERT_TONE.totalDuration,
|
|
324
|
+
(time) => {
|
|
325
|
+
let sample = 0;
|
|
326
|
+
|
|
327
|
+
for (const note of ALERT_TONE.notes) {
|
|
328
|
+
const envelope = adsr(
|
|
329
|
+
time,
|
|
330
|
+
note.start,
|
|
331
|
+
note.duration,
|
|
332
|
+
0.005, // Sharp attack (5ms)
|
|
333
|
+
0.05, // Quick decay (50ms)
|
|
334
|
+
0.5, // Sustain at 50%
|
|
335
|
+
0.15 // Medium release (150ms)
|
|
336
|
+
);
|
|
337
|
+
|
|
338
|
+
if (envelope > 0) {
|
|
339
|
+
// Slightly brighter tone for alert
|
|
340
|
+
const fundamental = Math.sin(2 * Math.PI * note.freq * time);
|
|
341
|
+
const harmonic2 = Math.sin(4 * Math.PI * note.freq * time) * 0.2;
|
|
342
|
+
const harmonic3 = Math.sin(6 * Math.PI * note.freq * time) * 0.15;
|
|
343
|
+
|
|
344
|
+
sample += (fundamental + harmonic2 + harmonic3) * envelope * 0.35;
|
|
440
345
|
}
|
|
441
|
-
|
|
442
|
-
return sample;
|
|
443
346
|
}
|
|
444
|
-
);
|
|
445
347
|
|
|
446
|
-
|
|
348
|
+
return sample;
|
|
349
|
+
}
|
|
350
|
+
);
|
|
351
|
+
|
|
352
|
+
engine.editor.setBufferData(alertBuffer, 0, alertWav);
|
|
447
353
|
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
354
|
+
// Starts at 5s (after 2 effects + 2 gaps)
|
|
355
|
+
const alertBlock = engine.block.create('audio');
|
|
356
|
+
engine.block.appendChild(page, alertBlock);
|
|
357
|
+
engine.block.setString(alertBlock, 'audio/fileURI', alertBuffer);
|
|
358
|
+
engine.block.setTimeOffset(alertBlock, 2 * (effectDuration + gapDuration)); // 5s
|
|
359
|
+
engine.block.setDuration(alertBlock, ALERT_TONE.totalDuration);
|
|
360
|
+
engine.block.setVolume(alertBlock, 0.75);
|
|
455
361
|
|
|
456
|
-
|
|
457
|
-
engine.block.select(chimeBlock);
|
|
362
|
+
console.log('Created alert tone at 5s');
|
|
458
363
|
|
|
459
|
-
|
|
460
|
-
|
|
364
|
+
// Export the scene as an archive containing all audio data
|
|
365
|
+
// saveToArchive() packages the scene with all embedded resources (including buffers)
|
|
461
366
|
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
);
|
|
367
|
+
// Ensure output directory exists
|
|
368
|
+
if (!existsSync('output')) {
|
|
369
|
+
mkdirSync('output');
|
|
466
370
|
}
|
|
371
|
+
|
|
372
|
+
// Save scene archive with all audio buffers embedded
|
|
373
|
+
const archiveBlob = await engine.scene.saveToArchive();
|
|
374
|
+
const archiveBuffer = Buffer.from(await archiveBlob.arrayBuffer());
|
|
375
|
+
writeFileSync('output/sound-effects.zip', archiveBuffer);
|
|
376
|
+
|
|
377
|
+
console.log('');
|
|
378
|
+
console.log('Exported scene archive to output/sound-effects.zip');
|
|
379
|
+
console.log('Scene contains:');
|
|
380
|
+
console.log(' - Scene structure with audio timeline');
|
|
381
|
+
console.log(' - 3 embedded sound effect audio files');
|
|
382
|
+
|
|
383
|
+
console.log('');
|
|
384
|
+
console.log('Sound effects guide completed successfully.');
|
|
385
|
+
console.log(
|
|
386
|
+
`Timeline: Success (0s), Melody (2.5s), Alert (5s) - each 2s, total ${totalDuration}s`
|
|
387
|
+
);
|
|
388
|
+
console.log('');
|
|
389
|
+
console.log('Audio blocks created with:');
|
|
390
|
+
console.log(' - 3 programmatically generated sound effects');
|
|
391
|
+
console.log(' - Each effect with unique tonal character');
|
|
392
|
+
console.log(' - Scene exported with embedded audio for later use');
|
|
393
|
+
} finally {
|
|
394
|
+
engine.dispose();
|
|
467
395
|
}
|
|
396
|
+
```
|
|
397
|
+
|
|
398
|
+
This guide covers working with buffers to create audio data and position it in the composition in a headless Node.js environment.
|
|
399
|
+
|
|
400
|
+
## Setting Up the Engine
|
|
468
401
|
|
|
469
|
-
|
|
402
|
+
Initialize CE.SDK's headless engine for server-side audio generation:
|
|
403
|
+
|
|
404
|
+
```typescript highlight-setup
|
|
405
|
+
const engine = await CreativeEngine.init({
|
|
406
|
+
baseURL: process.env.IMGLY_LOCAL_ASSETS_URL
|
|
407
|
+
});
|
|
470
408
|
```
|
|
471
409
|
|
|
472
|
-
|
|
410
|
+
The headless engine provides full API access for buffer creation and audio synthesis without browser dependencies.
|
|
473
411
|
|
|
474
412
|
## Working with Buffers
|
|
475
413
|
|
|
@@ -477,19 +415,20 @@ CE.SDK provides a buffer API for creating and managing arbitrary binary data in
|
|
|
477
415
|
|
|
478
416
|
### Creating a Buffer
|
|
479
417
|
|
|
480
|
-
Create a buffer with `createBuffer()`, which returns a URI you can use to reference the buffer:
|
|
418
|
+
Create a buffer with `engine.editor.createBuffer()`, which returns a URI you can use to reference the buffer:
|
|
481
419
|
|
|
482
420
|
```typescript highlight-buffer-create
|
|
483
|
-
// Create the "
|
|
484
|
-
const
|
|
421
|
+
// Create the "success chime" sound effect
|
|
422
|
+
const chimeBuffer = engine.editor.createBuffer();
|
|
485
423
|
```
|
|
486
424
|
|
|
487
425
|
### Writing Data
|
|
488
426
|
|
|
489
|
-
Write data to a buffer using `setBufferData()`. The offset parameter specifies where to start writing:
|
|
427
|
+
Write data to a buffer using `engine.editor.setBufferData()`. The offset parameter specifies where to start writing:
|
|
490
428
|
|
|
491
429
|
```typescript highlight-buffer-write
|
|
492
|
-
|
|
430
|
+
// Write WAV data to the buffer
|
|
431
|
+
engine.editor.setBufferData(chimeBuffer, 0, chimeWav);
|
|
493
432
|
```
|
|
494
433
|
|
|
495
434
|
### Reading Data
|
|
@@ -506,10 +445,10 @@ const data = engine.editor.getBufferData(buffer, 0, length);
|
|
|
506
445
|
Create an audio block and assign the buffer URI to its `audio/fileURI` property. Append it to the page to add it to the composition:
|
|
507
446
|
|
|
508
447
|
```typescript highlight-audio-track
|
|
509
|
-
//
|
|
510
|
-
const
|
|
511
|
-
engine.block.appendChild(page,
|
|
512
|
-
engine.block.setString(
|
|
448
|
+
// Create audio block for the chime (starts at 0s)
|
|
449
|
+
const chimeBlock = engine.block.create('audio');
|
|
450
|
+
engine.block.appendChild(page, chimeBlock);
|
|
451
|
+
engine.block.setString(chimeBlock, 'audio/fileURI', chimeBuffer);
|
|
513
452
|
```
|
|
514
453
|
|
|
515
454
|
### Cleanup
|
|
@@ -525,99 +464,230 @@ engine.editor.destroyBuffer(buffer);
|
|
|
525
464
|
To use buffers for audio, you need valid audio data. The WAV format is straightforward to generate: a 44-byte header followed by raw PCM samples.
|
|
526
465
|
|
|
527
466
|
```typescript highlight-wav-body
|
|
528
|
-
const bitsPerSample = 16;
|
|
529
|
-
const channels = 2; // Stereo output
|
|
530
|
-
const numSamples = Math.floor(durationSeconds * sampleRate);
|
|
531
|
-
const dataSize = numSamples * channels * (bitsPerSample / 8);
|
|
532
|
-
|
|
533
|
-
// Create WAV file buffer (44-byte header + audio data)
|
|
534
|
-
const wavBuffer = new ArrayBuffer(44 + dataSize);
|
|
535
|
-
const view = new DataView(wavBuffer);
|
|
536
|
-
|
|
537
|
-
// RIFF chunk descriptor
|
|
538
|
-
view.setUint32(0, 0x52494646, false); // "RIFF"
|
|
539
|
-
view.setUint32(4, 36 + dataSize, true); // File size - 8
|
|
540
|
-
view.setUint32(8, 0x57415645, false); // "WAVE"
|
|
541
|
-
|
|
542
|
-
// fmt sub-chunk
|
|
543
|
-
view.setUint32(12, 0x666d7420, false); // "fmt "
|
|
544
|
-
view.setUint32(16, 16, true); // Sub-chunk size (16 for PCM)
|
|
545
|
-
view.setUint16(20, 1, true); // Audio format (1 = PCM)
|
|
546
|
-
view.setUint16(22, channels, true); // Number of channels
|
|
547
|
-
view.setUint32(24, sampleRate, true); // Sample rate
|
|
548
|
-
view.setUint32(28, sampleRate * channels * (bitsPerSample / 8), true);
|
|
549
|
-
view.setUint16(32, channels * (bitsPerSample / 8), true); // Block align
|
|
550
|
-
view.setUint16(34, bitsPerSample, true); // Bits per sample
|
|
551
|
-
|
|
552
|
-
// data sub-chunk
|
|
553
|
-
view.setUint32(36, 0x64617461, false); // "data"
|
|
554
|
-
view.setUint32(40, dataSize, true); // Data size
|
|
555
|
-
|
|
556
|
-
// Generate audio samples
|
|
557
|
-
let offset = 44;
|
|
558
|
-
for (let i = 0; i < numSamples; i++) {
|
|
559
|
-
const time = i / sampleRate;
|
|
560
|
-
// Generate mono sample and duplicate to both channels
|
|
561
|
-
const value = generator(time);
|
|
562
|
-
const sample = Math.max(-32768, Math.min(32767, Math.round(value * 32767)));
|
|
563
|
-
view.setInt16(offset, sample, true); // Left channel
|
|
564
|
-
view.setInt16(offset + 2, sample, true); // Right channel
|
|
565
|
-
offset += 4;
|
|
566
|
-
}
|
|
467
|
+
const bitsPerSample = 16;
|
|
468
|
+
const channels = 2; // Stereo output
|
|
469
|
+
const numSamples = Math.floor(durationSeconds * sampleRate);
|
|
470
|
+
const dataSize = numSamples * channels * (bitsPerSample / 8);
|
|
471
|
+
|
|
472
|
+
// Create WAV file buffer (44-byte header + audio data)
|
|
473
|
+
const wavBuffer = new ArrayBuffer(44 + dataSize);
|
|
474
|
+
const view = new DataView(wavBuffer);
|
|
475
|
+
|
|
476
|
+
// RIFF chunk descriptor
|
|
477
|
+
view.setUint32(0, 0x52494646, false); // "RIFF"
|
|
478
|
+
view.setUint32(4, 36 + dataSize, true); // File size - 8
|
|
479
|
+
view.setUint32(8, 0x57415645, false); // "WAVE"
|
|
480
|
+
|
|
481
|
+
// fmt sub-chunk
|
|
482
|
+
view.setUint32(12, 0x666d7420, false); // "fmt "
|
|
483
|
+
view.setUint32(16, 16, true); // Sub-chunk size (16 for PCM)
|
|
484
|
+
view.setUint16(20, 1, true); // Audio format (1 = PCM)
|
|
485
|
+
view.setUint16(22, channels, true); // Number of channels
|
|
486
|
+
view.setUint32(24, sampleRate, true); // Sample rate
|
|
487
|
+
view.setUint32(28, sampleRate * channels * (bitsPerSample / 8), true);
|
|
488
|
+
view.setUint16(32, channels * (bitsPerSample / 8), true); // Block align
|
|
489
|
+
view.setUint16(34, bitsPerSample, true); // Bits per sample
|
|
567
490
|
|
|
568
|
-
|
|
491
|
+
// data sub-chunk
|
|
492
|
+
view.setUint32(36, 0x64617461, false); // "data"
|
|
493
|
+
view.setUint32(40, dataSize, true); // Data size
|
|
494
|
+
|
|
495
|
+
// Generate audio samples
|
|
496
|
+
let offset = 44;
|
|
497
|
+
for (let i = 0; i < numSamples; i++) {
|
|
498
|
+
const time = i / sampleRate;
|
|
499
|
+
// Generate mono sample and duplicate to both channels
|
|
500
|
+
const value = generator(time);
|
|
501
|
+
const sample = Math.max(-32768, Math.min(32767, Math.round(value * 32767)));
|
|
502
|
+
view.setInt16(offset, sample, true); // Left channel
|
|
503
|
+
view.setInt16(offset + 2, sample, true); // Right channel
|
|
504
|
+
offset += 4;
|
|
505
|
+
}
|
|
506
|
+
|
|
507
|
+
return new Uint8Array(wavBuffer);
|
|
569
508
|
```
|
|
570
509
|
|
|
571
510
|
This code builds a stereo WAV file by writing the RIFF header, format chunk, and data chunk, then iterating through time to generate samples from a generator function that returns values between -1.0 and 1.0.
|
|
572
511
|
|
|
512
|
+
## Creating Sound Effect Generators
|
|
513
|
+
|
|
514
|
+
### ADSR Envelope
|
|
515
|
+
|
|
516
|
+
Shape notes with ADSR envelopes (attack, decay, sustain, release) to avoid clicks and create natural-sounding tones:
|
|
517
|
+
|
|
518
|
+
```typescript highlight-envelope-helper
|
|
519
|
+
/**
|
|
520
|
+
* Calculates an ADSR (Attack-Decay-Sustain-Release) envelope value for a note.
|
|
521
|
+
* The envelope shapes the volume over time, creating natural-sounding tones.
|
|
522
|
+
*
|
|
523
|
+
* @param time - Current time in seconds
|
|
524
|
+
* @param noteStart - When the note starts (seconds)
|
|
525
|
+
* @param noteDuration - Total note duration including release (seconds)
|
|
526
|
+
* @param attack - Time to reach peak volume (seconds)
|
|
527
|
+
* @param decay - Time to fall from peak to sustain level (seconds)
|
|
528
|
+
* @param sustain - Held volume level (0.0 to 1.0)
|
|
529
|
+
* @param release - Time to fade to silence (seconds)
|
|
530
|
+
* @returns Envelope amplitude (0.0 to 1.0)
|
|
531
|
+
*/
|
|
532
|
+
function adsr(
|
|
533
|
+
time: number,
|
|
534
|
+
noteStart: number,
|
|
535
|
+
noteDuration: number,
|
|
536
|
+
attack: number,
|
|
537
|
+
decay: number,
|
|
538
|
+
sustain: number,
|
|
539
|
+
release: number
|
|
540
|
+
): number {
|
|
541
|
+
const t = time - noteStart;
|
|
542
|
+
if (t < 0) return 0;
|
|
543
|
+
|
|
544
|
+
const noteEnd = noteDuration - release;
|
|
545
|
+
|
|
546
|
+
if (t < attack) {
|
|
547
|
+
// Attack phase: ramp up from 0 to 1
|
|
548
|
+
return t / attack;
|
|
549
|
+
} else if (t < attack + decay) {
|
|
550
|
+
// Decay phase: ramp down from 1 to sustain level
|
|
551
|
+
return 1 - ((t - attack) / decay) * (1 - sustain);
|
|
552
|
+
} else if (t < noteEnd) {
|
|
553
|
+
// Sustain phase: hold at sustain level
|
|
554
|
+
return sustain;
|
|
555
|
+
} else if (t < noteDuration) {
|
|
556
|
+
// Release phase: ramp down from sustain to 0
|
|
557
|
+
return sustain * (1 - (t - noteEnd) / release);
|
|
558
|
+
}
|
|
559
|
+
return 0;
|
|
560
|
+
}
|
|
561
|
+
```
|
|
562
|
+
|
|
563
|
+
The envelope function shapes volume over time—quickly ramping up during attack, gradually falling during decay, holding steady during sustain, and fading out during release.
|
|
564
|
+
|
|
565
|
+
### Sound Effect Definitions
|
|
566
|
+
|
|
567
|
+
Define sound effects as note sequences with frequencies, start times, and durations:
|
|
568
|
+
|
|
569
|
+
```typescript highlight-sound-definitions
|
|
570
|
+
// Musical note frequencies (Hz) for the 4th and 5th octaves
|
|
571
|
+
const NOTE_FREQUENCIES = {
|
|
572
|
+
C4: 261.63,
|
|
573
|
+
D4: 293.66,
|
|
574
|
+
E4: 329.63,
|
|
575
|
+
F4: 349.23,
|
|
576
|
+
G4: 392.0,
|
|
577
|
+
A4: 440.0,
|
|
578
|
+
B4: 493.88,
|
|
579
|
+
C5: 523.25,
|
|
580
|
+
D5: 587.33,
|
|
581
|
+
E5: 659.25,
|
|
582
|
+
F5: 698.46,
|
|
583
|
+
G5: 783.99,
|
|
584
|
+
A5: 880.0,
|
|
585
|
+
B5: 987.77,
|
|
586
|
+
C6: 1046.5
|
|
587
|
+
};
|
|
588
|
+
|
|
589
|
+
// Sound effect 1: Ascending "success" fanfare (2 seconds)
|
|
590
|
+
// Creates a triumphant feeling with overlapping notes building to a chord
|
|
591
|
+
const SUCCESS_CHIME = {
|
|
592
|
+
notes: [
|
|
593
|
+
// Quick ascending arpeggio
|
|
594
|
+
{ freq: NOTE_FREQUENCIES.C4, start: 0.0, duration: 0.3 },
|
|
595
|
+
{ freq: NOTE_FREQUENCIES.E4, start: 0.1, duration: 0.4 },
|
|
596
|
+
{ freq: NOTE_FREQUENCIES.G4, start: 0.2, duration: 0.5 },
|
|
597
|
+
// Sustained major chord
|
|
598
|
+
{ freq: NOTE_FREQUENCIES.C5, start: 0.35, duration: 1.65 },
|
|
599
|
+
{ freq: NOTE_FREQUENCIES.E5, start: 0.4, duration: 1.6 },
|
|
600
|
+
{ freq: NOTE_FREQUENCIES.G5, start: 0.45, duration: 1.55 }
|
|
601
|
+
],
|
|
602
|
+
totalDuration: 2.0
|
|
603
|
+
};
|
|
604
|
+
|
|
605
|
+
// Sound effect 2: Gentle notification melody (2 seconds)
|
|
606
|
+
// A musical phrase that resolves pleasantly
|
|
607
|
+
const NOTIFICATION_MELODY = {
|
|
608
|
+
notes: [
|
|
609
|
+
{ freq: NOTE_FREQUENCIES.E5, start: 0.0, duration: 0.4 },
|
|
610
|
+
{ freq: NOTE_FREQUENCIES.G5, start: 0.25, duration: 0.5 },
|
|
611
|
+
{ freq: NOTE_FREQUENCIES.A5, start: 0.6, duration: 0.3 },
|
|
612
|
+
{ freq: NOTE_FREQUENCIES.G5, start: 0.85, duration: 0.4 },
|
|
613
|
+
{ freq: NOTE_FREQUENCIES.E5, start: 1.15, duration: 0.85 }
|
|
614
|
+
],
|
|
615
|
+
totalDuration: 2.0
|
|
616
|
+
};
|
|
617
|
+
|
|
618
|
+
// Sound effect 3: Alert/warning tone (2 seconds)
|
|
619
|
+
// Descending pattern that grabs attention
|
|
620
|
+
const ALERT_TONE = {
|
|
621
|
+
notes: [
|
|
622
|
+
// Attention-grabbing high notes
|
|
623
|
+
{ freq: NOTE_FREQUENCIES.A5, start: 0.0, duration: 0.25 },
|
|
624
|
+
{ freq: NOTE_FREQUENCIES.A5, start: 0.3, duration: 0.25 },
|
|
625
|
+
// Descending resolution
|
|
626
|
+
{ freq: NOTE_FREQUENCIES.F5, start: 0.6, duration: 0.4 },
|
|
627
|
+
{ freq: NOTE_FREQUENCIES.D5, start: 0.9, duration: 0.5 },
|
|
628
|
+
{ freq: NOTE_FREQUENCIES.A4, start: 1.3, duration: 0.7 }
|
|
629
|
+
],
|
|
630
|
+
totalDuration: 2.0
|
|
631
|
+
};
|
|
632
|
+
```
|
|
633
|
+
|
|
634
|
+
Each sound effect specifies a series of notes with their musical frequencies, when they start, and how long they play. Overlapping notes create chords and harmonic textures.
|
|
635
|
+
|
|
573
636
|
## Creating a Sound Effect
|
|
574
637
|
|
|
575
638
|
Combine the buffer API with the WAV helper to create a complete sound effect. This example generates a notification melody by mixing multiple notes with harmonics:
|
|
576
639
|
|
|
577
640
|
```typescript highlight-generate-melody
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
641
|
+
// Create the "notification melody" sound effect
|
|
642
|
+
const melodyBuffer = engine.editor.createBuffer();
|
|
643
|
+
|
|
644
|
+
const melodyWav = createWavBuffer(
|
|
645
|
+
sampleRate,
|
|
646
|
+
NOTIFICATION_MELODY.totalDuration,
|
|
647
|
+
(time) => {
|
|
648
|
+
let sample = 0;
|
|
649
|
+
|
|
650
|
+
for (const note of NOTIFICATION_MELODY.notes) {
|
|
651
|
+
const envelope = adsr(
|
|
652
|
+
time,
|
|
653
|
+
note.start,
|
|
654
|
+
note.duration,
|
|
655
|
+
0.01, // Soft attack (10ms)
|
|
656
|
+
0.06, // Gentle decay (60ms)
|
|
657
|
+
0.6, // Sustain at 60%
|
|
658
|
+
0.2 // Smooth release (200ms)
|
|
659
|
+
);
|
|
660
|
+
|
|
661
|
+
if (envelope > 0) {
|
|
662
|
+
// Pure sine wave with light 2nd harmonic for gentle tone
|
|
663
|
+
const fundamental = Math.sin(2 * Math.PI * note.freq * time);
|
|
664
|
+
const harmonic2 = Math.sin(4 * Math.PI * note.freq * time) * 0.15;
|
|
665
|
+
|
|
666
|
+
sample += (fundamental + harmonic2) * envelope * 0.4;
|
|
667
|
+
}
|
|
601
668
|
}
|
|
669
|
+
|
|
670
|
+
return sample;
|
|
602
671
|
}
|
|
672
|
+
);
|
|
603
673
|
|
|
604
|
-
|
|
605
|
-
}
|
|
606
|
-
);
|
|
674
|
+
engine.editor.setBufferData(melodyBuffer, 0, melodyWav);
|
|
607
675
|
```
|
|
608
676
|
|
|
609
|
-
The generator function mixes overlapping notes, each with its own start time and duration.
|
|
677
|
+
The generator function mixes overlapping notes, each with its own start time and duration. Adding harmonics at lower amplitudes creates a warmer tone than a pure sine wave.
|
|
610
678
|
|
|
611
679
|
## Positioning in Time
|
|
612
680
|
|
|
613
|
-
|
|
681
|
+
Audio blocks exist in the composition and can be positioned precisely. Set when audio starts and how long it plays:
|
|
614
682
|
|
|
615
683
|
```typescript highlight-timeline-position
|
|
616
|
-
engine.block.setTimeOffset(
|
|
617
|
-
engine.block.setDuration(
|
|
684
|
+
engine.block.setTimeOffset(chimeBlock, 0);
|
|
685
|
+
engine.block.setDuration(chimeBlock, SUCCESS_CHIME.totalDuration);
|
|
618
686
|
```
|
|
619
687
|
|
|
620
|
-
|
|
688
|
+
### Timeline Layout Example
|
|
689
|
+
|
|
690
|
+
The example spaces three sound effects with 0.5-second gaps:
|
|
621
691
|
|
|
622
692
|
```
|
|
623
693
|
Timeline: |----|----|----|----|----|----|----|
|
|
@@ -635,12 +705,39 @@ Alert: |====|
|
|
|
635
705
|
|
|
636
706
|
Each effect is 2 seconds with 0.5-second gaps between them, for a total duration of 7 seconds.
|
|
637
707
|
|
|
708
|
+
## Exporting the Scene
|
|
709
|
+
|
|
710
|
+
Export the scene as an archive containing all audio data. The `saveToArchive()` method packages the scene with all embedded resources, including buffer data:
|
|
711
|
+
|
|
712
|
+
```typescript highlight-export
|
|
713
|
+
// Export the scene as an archive containing all audio data
|
|
714
|
+
// saveToArchive() packages the scene with all embedded resources (including buffers)
|
|
715
|
+
|
|
716
|
+
// Ensure output directory exists
|
|
717
|
+
if (!existsSync('output')) {
|
|
718
|
+
mkdirSync('output');
|
|
719
|
+
}
|
|
720
|
+
|
|
721
|
+
// Save scene archive with all audio buffers embedded
|
|
722
|
+
const archiveBlob = await engine.scene.saveToArchive();
|
|
723
|
+
const archiveBuffer = Buffer.from(await archiveBlob.arrayBuffer());
|
|
724
|
+
writeFileSync('output/sound-effects.zip', archiveBuffer);
|
|
725
|
+
|
|
726
|
+
console.log('');
|
|
727
|
+
console.log('Exported scene archive to output/sound-effects.zip');
|
|
728
|
+
console.log('Scene contains:');
|
|
729
|
+
console.log(' - Scene structure with audio timeline');
|
|
730
|
+
console.log(' - 3 embedded sound effect audio files');
|
|
731
|
+
```
|
|
732
|
+
|
|
733
|
+
> **Note:** Buffer URIs are in-memory resources and cannot be serialized with `saveToString()`. Use `saveToArchive()` to export the complete scene with embedded audio buffers.
|
|
734
|
+
|
|
638
735
|
## Troubleshooting
|
|
639
736
|
|
|
640
737
|
### No Sound
|
|
641
738
|
|
|
642
|
-
- **Check
|
|
643
|
-
- **Verify duration** -
|
|
739
|
+
- **Check WAV format** - Ensure the 44-byte header matches the data size and parameters
|
|
740
|
+
- **Verify duration** - Audio blocks need duration greater than 0
|
|
644
741
|
- **Check buffer data** - The buffer must contain valid WAV data
|
|
645
742
|
|
|
646
743
|
### Audio Sounds Wrong
|
|
@@ -654,11 +751,30 @@ Each effect is 2 seconds with 0.5-second gaps between them, for a total duration
|
|
|
654
751
|
- **Invalid WAV** - Ensure header size fields match actual data size
|
|
655
752
|
- **Format mismatch** - Use 16-bit PCM, stereo, 48 kHz for best compatibility
|
|
656
753
|
|
|
754
|
+
## API Reference
|
|
755
|
+
|
|
756
|
+
| Method | Description | Parameters |
|
|
757
|
+
| --------------------------------- | ----------------------------------------- | ------------------------------------- |
|
|
758
|
+
| `engine.editor.createBuffer()` | Create a new buffer resource | None |
|
|
759
|
+
| `engine.editor.setBufferData()` | Write data to a buffer | `uri: string, offset: number, data: Uint8Array` |
|
|
760
|
+
| `engine.editor.getBufferLength()` | Get the length of buffer data | `uri: string` |
|
|
761
|
+
| `engine.editor.getBufferData()` | Read data from a buffer | `uri: string, offset: number, length: number` |
|
|
762
|
+
| `engine.editor.destroyBuffer()` | Clean up buffer resources | `uri: string` |
|
|
763
|
+
| `engine.block.create('audio')` | Create a new audio block | `type: 'audio'` |
|
|
764
|
+
| `engine.block.setString()` | Set string properties (e.g., audio/fileURI) | `id: number, key: string, value: string` |
|
|
765
|
+
| `engine.block.setTimeOffset()` | Set when the audio block starts | `id: number, offset: number` |
|
|
766
|
+
| `engine.block.setDuration()` | Set the duration of the audio block | `id: number, duration: number` |
|
|
767
|
+
| `engine.block.setVolume()` | Set the volume level (0.0 to 1.0) | `id: number, volume: number` |
|
|
768
|
+
| `engine.block.appendChild()` | Add block to parent (page) | `parent: number, child: number` |
|
|
769
|
+
| `engine.scene.saveToArchive()` | Export scene with embedded resources | None (returns `Promise<Blob>`) |
|
|
770
|
+
|
|
771
|
+
|
|
772
|
+
|
|
657
773
|
---
|
|
658
774
|
|
|
659
775
|
## More Resources
|
|
660
776
|
|
|
661
|
-
- **[
|
|
777
|
+
- **[Node.js Documentation Index](https://img.ly/docs/cesdk/node.md)** - Browse all Node.js documentation
|
|
662
778
|
- **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
|
|
663
|
-
- **[Web Documentation](./
|
|
664
|
-
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
|
|
779
|
+
- **[Web Documentation](./node.md)** - Interactive documentation with examples
|
|
780
|
+
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
|