@allyhub/sdk 0.1.0-alpha.7 → 0.2.0-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (370) hide show
  1. package/NOTICE +85 -0
  2. package/client.d.ts +45 -1
  3. package/dist/anim.js +2 -75
  4. package/dist/define.d.ts +10 -4
  5. package/dist/define.js +2 -95
  6. package/dist/dom.d.ts +1 -1
  7. package/dist/dom.js +2 -457
  8. package/dist/fit.js +2 -60
  9. package/dist/free.d.ts +18 -0
  10. package/dist/free.js +2 -0
  11. package/dist/index.d.ts +28 -13
  12. package/dist/index.js +2 -11
  13. package/dist/input.d.ts +306 -0
  14. package/dist/input.js +2 -0
  15. package/dist/media.d.ts +3 -6
  16. package/dist/media.js +2 -27
  17. package/dist/messages.d.ts +3 -2
  18. package/dist/messages.js +2 -2
  19. package/dist/module.d.ts +24 -0
  20. package/dist/module.js +2 -0
  21. package/dist/noise.js +2 -233
  22. package/dist/parts.d.ts +97 -21
  23. package/dist/parts.js +2 -414
  24. package/dist/paths.d.ts +1 -1
  25. package/dist/paths.js +2 -720
  26. package/dist/phone.d.ts +26 -0
  27. package/dist/phone.js +2 -0
  28. package/dist/piece.d.ts +106 -35
  29. package/dist/piece.js +2 -38
  30. package/dist/props.d.ts +1 -1
  31. package/dist/props.js +2 -35
  32. package/dist/scenery.d.ts +2 -0
  33. package/dist/scenery.js +2 -0
  34. package/dist/text.js +2 -38
  35. package/dist/written.d.ts +12 -0
  36. package/dist/written.js +2 -0
  37. package/docs/README.md +18 -0
  38. package/docs/batches.md +148 -0
  39. package/docs/contract.md +51 -0
  40. package/docs/defaults.md +703 -0
  41. package/docs/docs.md +148 -0
  42. package/docs/footage.md +249 -0
  43. package/docs/layers.md +317 -0
  44. package/docs/modeling.md +143 -0
  45. package/docs/project.md +265 -0
  46. package/docs/scenery.md +308 -0
  47. package/docs/sheets.md +119 -0
  48. package/docs/slides.md +111 -0
  49. package/docs/sound.md +170 -0
  50. package/docs/speech.md +289 -0
  51. package/docs/video.md +265 -0
  52. package/node_modules/@allyhub-next/audio/dist/at-cut.d.ts +52 -0
  53. package/node_modules/@allyhub-next/audio/dist/at-cut.js +2 -0
  54. package/node_modules/@allyhub-next/audio/dist/decode.d.ts +33 -0
  55. package/node_modules/@allyhub-next/audio/dist/decode.js +2 -0
  56. package/node_modules/@allyhub-next/audio/dist/envelope.d.ts +37 -0
  57. package/node_modules/@allyhub-next/audio/dist/envelope.js +2 -0
  58. package/node_modules/@allyhub-next/audio/dist/index.d.ts +17 -0
  59. package/node_modules/@allyhub-next/audio/dist/index.js +2 -0
  60. package/node_modules/@allyhub-next/audio/dist/levels.d.ts +97 -0
  61. package/node_modules/@allyhub-next/audio/dist/levels.js +2 -0
  62. package/node_modules/@allyhub-next/audio/dist/master.d.ts +29 -0
  63. package/node_modules/@allyhub-next/audio/dist/master.js +2 -0
  64. package/node_modules/@allyhub-next/audio/dist/music.d.ts +11 -0
  65. package/node_modules/@allyhub-next/audio/dist/music.js +2 -0
  66. package/node_modules/@allyhub-next/audio/dist/node/decode.d.ts +39 -0
  67. package/node_modules/@allyhub-next/audio/dist/node/decode.js +2 -0
  68. package/node_modules/@allyhub-next/audio/dist/node/ebur128.d.ts +25 -0
  69. package/node_modules/@allyhub-next/audio/dist/node/ebur128.js +2 -0
  70. package/node_modules/@allyhub-next/audio/dist/node/ffmpeg.d.ts +31 -0
  71. package/node_modules/@allyhub-next/audio/dist/node/ffmpeg.js +2 -0
  72. package/node_modules/@allyhub-next/audio/dist/node/index.d.ts +8 -0
  73. package/node_modules/@allyhub-next/audio/dist/node/index.js +2 -0
  74. package/node_modules/@allyhub-next/audio/dist/node/loudness.d.ts +18 -0
  75. package/node_modules/@allyhub-next/audio/dist/node/loudness.js +2 -0
  76. package/node_modules/@allyhub-next/audio/dist/node/master.d.ts +42 -0
  77. package/node_modules/@allyhub-next/audio/dist/node/master.js +2 -0
  78. package/node_modules/@allyhub-next/audio/dist/node/measure.d.ts +60 -0
  79. package/node_modules/@allyhub-next/audio/dist/node/measure.js +2 -0
  80. package/node_modules/@allyhub-next/audio/dist/node/mix.d.ts +31 -0
  81. package/node_modules/@allyhub-next/audio/dist/node/mix.js +2 -0
  82. package/node_modules/@allyhub-next/audio/dist/plan.d.ts +143 -0
  83. package/node_modules/@allyhub-next/audio/dist/plan.js +2 -0
  84. package/node_modules/@allyhub-next/audio/dist/recorded.d.ts +26 -0
  85. package/node_modules/@allyhub-next/audio/dist/recorded.js +2 -0
  86. package/node_modules/@allyhub-next/audio/dist/recording/bandwidth.d.ts +47 -0
  87. package/node_modules/@allyhub-next/audio/dist/recording/bandwidth.js +2 -0
  88. package/node_modules/@allyhub-next/audio/dist/recording/chain.d.ts +89 -0
  89. package/node_modules/@allyhub-next/audio/dist/recording/chain.js +2 -0
  90. package/node_modules/@allyhub-next/audio/dist/recording/dynamics.d.ts +64 -0
  91. package/node_modules/@allyhub-next/audio/dist/recording/dynamics.js +2 -0
  92. package/node_modules/@allyhub-next/audio/dist/recording/fft.d.ts +26 -0
  93. package/node_modules/@allyhub-next/audio/dist/recording/fft.js +2 -0
  94. package/node_modules/@allyhub-next/audio/dist/recording/filters.d.ts +42 -0
  95. package/node_modules/@allyhub-next/audio/dist/recording/filters.js +2 -0
  96. package/node_modules/@allyhub-next/audio/dist/recording/fit.d.ts +56 -0
  97. package/node_modules/@allyhub-next/audio/dist/recording/fit.js +2 -0
  98. package/node_modules/@allyhub-next/audio/dist/recording/index.d.ts +10 -0
  99. package/node_modules/@allyhub-next/audio/dist/recording/index.js +2 -0
  100. package/node_modules/@allyhub-next/audio/dist/recording/loudness.d.ts +12 -0
  101. package/node_modules/@allyhub-next/audio/dist/recording/loudness.js +2 -0
  102. package/node_modules/@allyhub-next/audio/dist/recording/measure.d.ts +67 -0
  103. package/node_modules/@allyhub-next/audio/dist/recording/measure.js +2 -0
  104. package/node_modules/@allyhub-next/audio/dist/recording/mic.d.ts +32 -0
  105. package/node_modules/@allyhub-next/audio/dist/recording/mic.js +2 -0
  106. package/node_modules/@allyhub-next/audio/dist/recording/noise.d.ts +27 -0
  107. package/node_modules/@allyhub-next/audio/dist/recording/noise.js +2 -0
  108. package/node_modules/@allyhub-next/audio/dist/recording/presets.d.ts +64 -0
  109. package/node_modules/@allyhub-next/audio/dist/recording/presets.js +2 -0
  110. package/node_modules/@allyhub-next/audio/dist/recording/room.d.ts +78 -0
  111. package/node_modules/@allyhub-next/audio/dist/recording/room.js +2 -0
  112. package/node_modules/@allyhub-next/audio/dist/recording/setup.d.ts +111 -0
  113. package/node_modules/@allyhub-next/audio/dist/recording/setup.js +2 -0
  114. package/node_modules/@allyhub-next/audio/dist/recording/vec.d.ts +3 -0
  115. package/node_modules/@allyhub-next/audio/dist/recording/vec.js +2 -0
  116. package/node_modules/@allyhub-next/audio/dist/render.d.ts +26 -0
  117. package/node_modules/@allyhub-next/audio/dist/render.js +2 -0
  118. package/node_modules/@allyhub-next/audio/dist/sfx.d.ts +10 -0
  119. package/node_modules/@allyhub-next/audio/dist/sfx.js +2 -0
  120. package/node_modules/@allyhub-next/audio/dist/shape.d.ts +118 -0
  121. package/node_modules/@allyhub-next/audio/dist/shape.js +2 -0
  122. package/node_modules/@allyhub-next/audio/dist/voice.d.ts +45 -0
  123. package/node_modules/@allyhub-next/audio/dist/voice.js +2 -0
  124. package/node_modules/@allyhub-next/audio/package.json +17 -0
  125. package/node_modules/@allyhub-next/formats/dist/data/comments.d.ts +94 -0
  126. package/node_modules/@allyhub-next/formats/dist/data/comments.js +2 -0
  127. package/node_modules/@allyhub-next/formats/dist/data/config.d.ts +10 -0
  128. package/node_modules/@allyhub-next/formats/dist/data/config.js +2 -0
  129. package/node_modules/@allyhub-next/formats/dist/data/edits.d.ts +28 -0
  130. package/node_modules/@allyhub-next/formats/dist/data/edits.js +2 -0
  131. package/node_modules/@allyhub-next/formats/dist/data/elements.d.ts +6 -0
  132. package/node_modules/@allyhub-next/formats/dist/data/elements.js +2 -0
  133. package/node_modules/@allyhub-next/formats/dist/data/faces.d.ts +38 -0
  134. package/node_modules/@allyhub-next/formats/dist/data/faces.js +2 -0
  135. package/node_modules/@allyhub-next/formats/dist/data/file.d.ts +11 -0
  136. package/node_modules/@allyhub-next/formats/dist/data/file.js +2 -0
  137. package/node_modules/@allyhub-next/formats/dist/data/gen.d.ts +31 -0
  138. package/node_modules/@allyhub-next/formats/dist/data/gen.js +2 -0
  139. package/node_modules/@allyhub-next/formats/dist/data/messages.d.ts +34 -0
  140. package/node_modules/@allyhub-next/formats/dist/data/messages.js +2 -0
  141. package/node_modules/@allyhub-next/formats/dist/data/reference.d.ts +676 -0
  142. package/node_modules/@allyhub-next/formats/dist/data/reference.js +2 -0
  143. package/node_modules/@allyhub-next/formats/dist/data/script.d.ts +37 -0
  144. package/node_modules/@allyhub-next/formats/dist/data/script.js +2 -0
  145. package/node_modules/@allyhub-next/formats/dist/data/sheet.d.ts +214 -0
  146. package/node_modules/@allyhub-next/formats/dist/data/sheet.js +2 -0
  147. package/node_modules/@allyhub-next/formats/dist/data/words.d.ts +25 -0
  148. package/node_modules/@allyhub-next/formats/dist/data/words.js +2 -0
  149. package/node_modules/@allyhub-next/formats/dist/index.d.ts +16 -0
  150. package/node_modules/@allyhub-next/formats/dist/index.js +2 -0
  151. package/node_modules/@allyhub-next/formats/dist/items.d.ts +94 -0
  152. package/node_modules/@allyhub-next/formats/dist/items.js +2 -0
  153. package/node_modules/@allyhub-next/formats/dist/layout.d.ts +50 -0
  154. package/node_modules/@allyhub-next/formats/dist/layout.js +5 -0
  155. package/node_modules/@allyhub-next/formats/dist/schemas.d.ts +301 -0
  156. package/node_modules/@allyhub-next/formats/dist/schemas.js +2 -0
  157. package/node_modules/@allyhub-next/formats/package.json +14 -0
  158. package/node_modules/@allyhub-next/formats/schemas/comments.schema.json +152 -0
  159. package/node_modules/@allyhub-next/formats/schemas/config.schema.json +43 -0
  160. package/node_modules/@allyhub-next/formats/schemas/edits.schema.json +112 -0
  161. package/node_modules/@allyhub-next/formats/schemas/elements.schema.json +33 -0
  162. package/node_modules/@allyhub-next/formats/schemas/gen.schema.json +97 -0
  163. package/node_modules/@allyhub-next/formats/schemas/interpretation.schema.json +125 -0
  164. package/node_modules/@allyhub-next/formats/schemas/items.json +75 -0
  165. package/node_modules/@allyhub-next/formats/schemas/messages.schema.json +11 -0
  166. package/node_modules/@allyhub-next/formats/schemas/script.schema.json +162 -0
  167. package/node_modules/@allyhub-next/formats/schemas/sheet.schema.json +395 -0
  168. package/node_modules/@allyhub-next/formats/schemas/words.schema.json +63 -0
  169. package/node_modules/@allyhub-next/protocol/dist/app.d.ts +98 -0
  170. package/node_modules/@allyhub-next/protocol/dist/app.js +2 -0
  171. package/node_modules/@allyhub-next/protocol/dist/auth.d.ts +116 -0
  172. package/node_modules/@allyhub-next/protocol/dist/auth.js +2 -0
  173. package/node_modules/@allyhub-next/protocol/dist/cli.d.ts +59 -0
  174. package/node_modules/@allyhub-next/protocol/dist/cli.js +2 -0
  175. package/node_modules/@allyhub-next/protocol/dist/cloud.d.ts +272 -0
  176. package/node_modules/@allyhub-next/protocol/dist/cloud.js +2 -0
  177. package/node_modules/@allyhub-next/protocol/dist/editor.d.ts +405 -0
  178. package/node_modules/@allyhub-next/protocol/dist/editor.js +2 -0
  179. package/node_modules/@allyhub-next/protocol/dist/files.d.ts +101 -0
  180. package/node_modules/@allyhub-next/protocol/dist/files.js +2 -0
  181. package/node_modules/@allyhub-next/protocol/dist/index.d.ts +12 -0
  182. package/node_modules/@allyhub-next/protocol/dist/index.js +2 -0
  183. package/node_modules/@allyhub-next/protocol/dist/jsonrpc.d.ts +83 -0
  184. package/node_modules/@allyhub-next/protocol/dist/jsonrpc.js +2 -0
  185. package/node_modules/@allyhub-next/protocol/dist/registry.d.ts +53 -0
  186. package/node_modules/@allyhub-next/protocol/dist/registry.js +2 -0
  187. package/node_modules/@allyhub-next/protocol/dist/runtimes.d.ts +93 -0
  188. package/node_modules/@allyhub-next/protocol/dist/runtimes.js +2 -0
  189. package/node_modules/@allyhub-next/protocol/dist/teams.d.ts +67 -0
  190. package/node_modules/@allyhub-next/protocol/dist/teams.js +2 -0
  191. package/node_modules/@allyhub-next/protocol/dist/tools.d.ts +345 -0
  192. package/node_modules/@allyhub-next/protocol/dist/tools.js +2 -0
  193. package/node_modules/@allyhub-next/protocol/package.json +13 -0
  194. package/node_modules/@allyhub-next/runtimes/dist/bundled.d.ts +10 -0
  195. package/node_modules/@allyhub-next/runtimes/dist/bundled.js +2 -0
  196. package/node_modules/@allyhub-next/runtimes/dist/download.d.ts +15 -0
  197. package/node_modules/@allyhub-next/runtimes/dist/download.js +2 -0
  198. package/node_modules/@allyhub-next/runtimes/dist/errors.d.ts +16 -0
  199. package/node_modules/@allyhub-next/runtimes/dist/errors.js +2 -0
  200. package/node_modules/@allyhub-next/runtimes/dist/home.d.ts +2 -0
  201. package/node_modules/@allyhub-next/runtimes/dist/home.js +2 -0
  202. package/node_modules/@allyhub-next/runtimes/dist/index.d.ts +9 -0
  203. package/node_modules/@allyhub-next/runtimes/dist/index.js +2 -0
  204. package/node_modules/@allyhub-next/runtimes/dist/lock.d.ts +6 -0
  205. package/node_modules/@allyhub-next/runtimes/dist/lock.js +2 -0
  206. package/node_modules/@allyhub-next/runtimes/dist/manifest.d.ts +3 -0
  207. package/node_modules/@allyhub-next/runtimes/dist/manifest.js +2 -0
  208. package/node_modules/@allyhub-next/runtimes/dist/runtimes.d.ts +63 -0
  209. package/node_modules/@allyhub-next/runtimes/dist/runtimes.js +3 -0
  210. package/node_modules/@allyhub-next/runtimes/dist/unpack.d.ts +7 -0
  211. package/node_modules/@allyhub-next/runtimes/dist/unpack.js +2 -0
  212. package/node_modules/@allyhub-next/runtimes/manifest.json +395 -0
  213. package/node_modules/@allyhub-next/runtimes/package.json +14 -0
  214. package/node_modules/@allyhub-next/runtimes/schemas/runtimes.schema.json +153 -0
  215. package/node_modules/@allyhub-next/scenery/NOTICE +42 -0
  216. package/node_modules/@allyhub-next/scenery/dist/aim.d.ts +55 -0
  217. package/node_modules/@allyhub-next/scenery/dist/aim.js +2 -0
  218. package/node_modules/@allyhub-next/scenery/dist/bake.d.ts +203 -0
  219. package/node_modules/@allyhub-next/scenery/dist/bake.js +2 -0
  220. package/node_modules/@allyhub-next/scenery/dist/camera.d.ts +150 -0
  221. package/node_modules/@allyhub-next/scenery/dist/camera.js +2 -0
  222. package/node_modules/@allyhub-next/scenery/dist/curve.d.ts +40 -0
  223. package/node_modules/@allyhub-next/scenery/dist/curve.js +2 -0
  224. package/node_modules/@allyhub-next/scenery/dist/define.d.ts +164 -0
  225. package/node_modules/@allyhub-next/scenery/dist/define.js +2 -0
  226. package/node_modules/@allyhub-next/scenery/dist/fit.d.ts +64 -0
  227. package/node_modules/@allyhub-next/scenery/dist/fit.js +2 -0
  228. package/node_modules/@allyhub-next/scenery/dist/glass.d.ts +34 -0
  229. package/node_modules/@allyhub-next/scenery/dist/glass.js +2 -0
  230. package/node_modules/@allyhub-next/scenery/dist/handheld.d.ts +184 -0
  231. package/node_modules/@allyhub-next/scenery/dist/handheld.js +2 -0
  232. package/node_modules/@allyhub-next/scenery/dist/hull.d.ts +23 -0
  233. package/node_modules/@allyhub-next/scenery/dist/hull.js +2 -0
  234. package/node_modules/@allyhub-next/scenery/dist/index.d.ts +22 -0
  235. package/node_modules/@allyhub-next/scenery/dist/index.js +2 -0
  236. package/node_modules/@allyhub-next/scenery/dist/lens.d.ts +48 -0
  237. package/node_modules/@allyhub-next/scenery/dist/lens.js +2 -0
  238. package/node_modules/@allyhub-next/scenery/dist/moire.d.ts +136 -0
  239. package/node_modules/@allyhub-next/scenery/dist/moire.js +93 -0
  240. package/node_modules/@allyhub-next/scenery/dist/motion.d.ts +48 -0
  241. package/node_modules/@allyhub-next/scenery/dist/motion.js +2 -0
  242. package/node_modules/@allyhub-next/scenery/dist/move.d.ts +260 -0
  243. package/node_modules/@allyhub-next/scenery/dist/move.js +2 -0
  244. package/node_modules/@allyhub-next/scenery/dist/noise.d.ts +41 -0
  245. package/node_modules/@allyhub-next/scenery/dist/noise.js +2 -0
  246. package/node_modules/@allyhub-next/scenery/dist/phone.d.ts +34 -0
  247. package/node_modules/@allyhub-next/scenery/dist/phone.js +2 -0
  248. package/node_modules/@allyhub-next/scenery/dist/report.d.ts +677 -0
  249. package/node_modules/@allyhub-next/scenery/dist/report.js +2 -0
  250. package/node_modules/@allyhub-next/scenery/dist/screen-focus.d.ts +55 -0
  251. package/node_modules/@allyhub-next/scenery/dist/screen-focus.js +2 -0
  252. package/node_modules/@allyhub-next/scenery/dist/screen.d.ts +71 -0
  253. package/node_modules/@allyhub-next/scenery/dist/screen.js +2 -0
  254. package/node_modules/@allyhub-next/scenery/dist/solve.d.ts +82 -0
  255. package/node_modules/@allyhub-next/scenery/dist/solve.js +2 -0
  256. package/node_modules/@allyhub-next/scenery/dist/timing.d.ts +26 -0
  257. package/node_modules/@allyhub-next/scenery/dist/timing.js +2 -0
  258. package/node_modules/@allyhub-next/scenery/dist/vec.d.ts +19 -0
  259. package/node_modules/@allyhub-next/scenery/dist/vec.js +2 -0
  260. package/node_modules/@allyhub-next/scenery/package.json +13 -0
  261. package/node_modules/@allyhub-next/video-core/dist/anchors.d.ts +164 -0
  262. package/node_modules/@allyhub-next/video-core/dist/anchors.js +2 -0
  263. package/node_modules/@allyhub-next/video-core/dist/audio-types.d.ts +148 -0
  264. package/node_modules/@allyhub-next/video-core/dist/audio-types.js +2 -0
  265. package/node_modules/@allyhub-next/video-core/dist/backdrop.d.ts +87 -0
  266. package/node_modules/@allyhub-next/video-core/dist/backdrop.js +2 -0
  267. package/node_modules/@allyhub-next/video-core/dist/captions.d.ts +122 -0
  268. package/node_modules/@allyhub-next/video-core/dist/captions.js +11 -0
  269. package/node_modules/@allyhub-next/video-core/dist/console.d.ts +91 -0
  270. package/node_modules/@allyhub-next/video-core/dist/console.js +2 -0
  271. package/node_modules/@allyhub-next/video-core/dist/contrast.d.ts +98 -0
  272. package/node_modules/@allyhub-next/video-core/dist/contrast.js +2 -0
  273. package/node_modules/@allyhub-next/video-core/dist/cut-report.d.ts +77 -0
  274. package/node_modules/@allyhub-next/video-core/dist/cut-report.js +2 -0
  275. package/node_modules/@allyhub-next/video-core/dist/edit.d.ts +77 -0
  276. package/node_modules/@allyhub-next/video-core/dist/edit.js +13 -0
  277. package/node_modules/@allyhub-next/video-core/dist/edits.d.ts +163 -0
  278. package/node_modules/@allyhub-next/video-core/dist/edits.js +2 -0
  279. package/node_modules/@allyhub-next/video-core/dist/export.d.ts +96 -0
  280. package/node_modules/@allyhub-next/video-core/dist/export.js +2 -0
  281. package/node_modules/@allyhub-next/video-core/dist/fact.d.ts +965 -0
  282. package/node_modules/@allyhub-next/video-core/dist/fact.js +2 -0
  283. package/node_modules/@allyhub-next/video-core/dist/footage-motion.d.ts +168 -0
  284. package/node_modules/@allyhub-next/video-core/dist/footage-motion.js +2 -0
  285. package/node_modules/@allyhub-next/video-core/dist/formats.d.ts +240 -0
  286. package/node_modules/@allyhub-next/video-core/dist/formats.js +2 -0
  287. package/node_modules/@allyhub-next/video-core/dist/gen.d.ts +37 -0
  288. package/node_modules/@allyhub-next/video-core/dist/gen.js +2 -0
  289. package/node_modules/@allyhub-next/video-core/dist/index.d.ts +40 -0
  290. package/node_modules/@allyhub-next/video-core/dist/index.js +2 -0
  291. package/node_modules/@allyhub-next/video-core/dist/look.d.ts +66 -0
  292. package/node_modules/@allyhub-next/video-core/dist/look.js +2 -0
  293. package/node_modules/@allyhub-next/video-core/dist/marks.d.ts +34 -0
  294. package/node_modules/@allyhub-next/video-core/dist/marks.js +2 -0
  295. package/node_modules/@allyhub-next/video-core/dist/matrix.d.ts +289 -0
  296. package/node_modules/@allyhub-next/video-core/dist/matrix.js +2 -0
  297. package/node_modules/@allyhub-next/video-core/dist/measure.d.ts +465 -0
  298. package/node_modules/@allyhub-next/video-core/dist/measure.js +5 -0
  299. package/node_modules/@allyhub-next/video-core/dist/media.d.ts +226 -0
  300. package/node_modules/@allyhub-next/video-core/dist/media.js +2 -0
  301. package/node_modules/@allyhub-next/video-core/dist/messages.d.ts +88 -0
  302. package/node_modules/@allyhub-next/video-core/dist/messages.js +2 -0
  303. package/node_modules/@allyhub-next/video-core/dist/motion.d.ts +56 -0
  304. package/node_modules/@allyhub-next/video-core/dist/motion.js +2 -0
  305. package/node_modules/@allyhub-next/video-core/dist/music.d.ts +110 -0
  306. package/node_modules/@allyhub-next/video-core/dist/music.js +2 -0
  307. package/node_modules/@allyhub-next/video-core/dist/piece.d.ts +1146 -0
  308. package/node_modules/@allyhub-next/video-core/dist/piece.js +2 -0
  309. package/node_modules/@allyhub-next/video-core/dist/placement.d.ts +37 -0
  310. package/node_modules/@allyhub-next/video-core/dist/placement.js +2 -0
  311. package/node_modules/@allyhub-next/video-core/dist/problem.d.ts +262 -0
  312. package/node_modules/@allyhub-next/video-core/dist/problem.js +2 -0
  313. package/node_modules/@allyhub-next/video-core/dist/render-types.d.ts +49 -0
  314. package/node_modules/@allyhub-next/video-core/dist/render-types.js +2 -0
  315. package/node_modules/@allyhub-next/video-core/dist/schema.d.ts +352 -0
  316. package/node_modules/@allyhub-next/video-core/dist/schema.js +2 -0
  317. package/node_modules/@allyhub-next/video-core/dist/script-edit.d.ts +176 -0
  318. package/node_modules/@allyhub-next/video-core/dist/script-edit.js +2 -0
  319. package/node_modules/@allyhub-next/video-core/dist/script.d.ts +67 -0
  320. package/node_modules/@allyhub-next/video-core/dist/script.js +2 -0
  321. package/node_modules/@allyhub-next/video-core/dist/seams.d.ts +214 -0
  322. package/node_modules/@allyhub-next/video-core/dist/seams.js +2 -0
  323. package/node_modules/@allyhub-next/video-core/dist/slides.d.ts +37 -0
  324. package/node_modules/@allyhub-next/video-core/dist/slides.js +2 -0
  325. package/node_modules/@allyhub-next/video-core/dist/sound-under.d.ts +72 -0
  326. package/node_modules/@allyhub-next/video-core/dist/sound-under.js +2 -0
  327. package/node_modules/@allyhub-next/video-core/dist/speech.d.ts +83 -0
  328. package/node_modules/@allyhub-next/video-core/dist/speech.js +5 -0
  329. package/node_modules/@allyhub-next/video-core/dist/timeline.d.ts +616 -0
  330. package/node_modules/@allyhub-next/video-core/dist/timeline.js +2 -0
  331. package/node_modules/@allyhub-next/video-core/dist/timing.d.ts +88 -0
  332. package/node_modules/@allyhub-next/video-core/dist/timing.js +2 -0
  333. package/node_modules/@allyhub-next/video-core/dist/transcript.d.ts +288 -0
  334. package/node_modules/@allyhub-next/video-core/dist/transcript.js +2 -0
  335. package/node_modules/@allyhub-next/video-core/dist/transition.d.ts +289 -0
  336. package/node_modules/@allyhub-next/video-core/dist/transition.js +2 -0
  337. package/node_modules/@allyhub-next/video-core/dist/voice.d.ts +175 -0
  338. package/node_modules/@allyhub-next/video-core/dist/voice.js +2 -0
  339. package/node_modules/@allyhub-next/video-core/dist/words.d.ts +128 -0
  340. package/node_modules/@allyhub-next/video-core/dist/words.js +2 -0
  341. package/node_modules/@allyhub-next/video-core/package.json +14 -0
  342. package/package.json +52 -41
  343. package/README.md +0 -17
  344. package/dist/anim.d.ts.map +0 -1
  345. package/dist/anim.js.map +0 -1
  346. package/dist/define.d.ts.map +0 -1
  347. package/dist/define.js.map +0 -1
  348. package/dist/dom.d.ts.map +0 -1
  349. package/dist/dom.js.map +0 -1
  350. package/dist/fit.d.ts.map +0 -1
  351. package/dist/fit.js.map +0 -1
  352. package/dist/index.d.ts.map +0 -1
  353. package/dist/index.js.map +0 -1
  354. package/dist/media.d.ts.map +0 -1
  355. package/dist/media.js.map +0 -1
  356. package/dist/messages.d.ts.map +0 -1
  357. package/dist/messages.js.map +0 -1
  358. package/dist/noise.d.ts.map +0 -1
  359. package/dist/noise.js.map +0 -1
  360. package/dist/parts.d.ts.map +0 -1
  361. package/dist/parts.js.map +0 -1
  362. package/dist/paths.d.ts.map +0 -1
  363. package/dist/paths.js.map +0 -1
  364. package/dist/piece.d.ts.map +0 -1
  365. package/dist/piece.js.map +0 -1
  366. package/dist/props.d.ts.map +0 -1
  367. package/dist/props.js.map +0 -1
  368. package/dist/text.d.ts.map +0 -1
  369. package/dist/text.js.map +0 -1
  370. /package/{LICENSE → LICENSE.md} +0 -0
package/docs/sheets.md ADDED
@@ -0,0 +1,119 @@
1
+ # Sheets
2
+
3
+ A sheet is rows a person sorts, filters and edits as a grid and an agent writes as files: `sheet.csv`, and `sheet.yaml` beside it saying what its columns are. It is one grid (no saved views, groups or footers in its files) and not a piece: it has no format, languages or combos. `allyhub check` checks it, `allyhub dev` shows it in its editor, `allyhub render` writes it out.
4
+
5
+ ## A sheet item
6
+
7
+ A sheet is a folder whose entry file is `sheet.csv`:
8
+
9
+ ```
10
+ research/leads/
11
+ sheet.csv the rows: a header row, then a row per record
12
+ sheet.yaml optional: its title, its key and title columns, what each column is
13
+ files/ optional: files its cells name (logo.png)
14
+ comments.json optional: what was said about its cells
15
+ ```
16
+
17
+ - The folder may be anywhere in the project but its root, a folder whose name starts with a dot, or `node_modules`. Its place is its path from the project (`research/leads`), which commands take.
18
+ - A sheet is never inside another item's folder (AK-M009), and its folder holds no other item (AK-M003).
19
+
20
+ ## sheet.csv
21
+
22
+ Plain CSV (RFC 4180) with a header row:
23
+
24
+ ```csv
25
+ id,company,arr,share,stage,tags,signed,active,site,contact,notes,logo
26
+ 1,Acme,12000,0.12,Won,inbound;partner,2026-10-14,true,acme.example,ops@acme.example,"Signed after a demo, ""fast""",files/acme.png
27
+ 2,Globex,,,Lead,,2026-10-14T09:30,false,https://globex.example,,,
28
+ ```
29
+
30
+ - The delimiter is a comma. A field is quoted when it holds a comma, a quote or a line break; `""` is a quote inside quotes.
31
+ - Every value is text. Its column's type says how it is read; nothing is guessed from what the values look like.
32
+ - A row may have fewer fields than the header (the rest are empty), never more. A blank line is a row of empty cells.
33
+ - Header names are trimmed; each is a column's name, not empty, not repeated.
34
+ - The file's dialect is kept when the editor writes rows back (line endings, a byte-order mark, a final line ending), and every row that did not change keeps its bytes.
35
+
36
+ ## sheet.yaml
37
+
38
+ Every field is optional; a column not named under `columns` is text (JSON Schema: `https://allyhub.com/schemas/sheet.schema.json`).
39
+
40
+ ```yaml
41
+ title: Launch leads
42
+ key: id
43
+ primary: company
44
+ columns:
45
+ arr:
46
+ type: number
47
+ format: { style: currency, currency: USD, decimals: 0 }
48
+ width: 120
49
+ share: { type: number, format: percent }
50
+ stage:
51
+ type: select
52
+ options:
53
+ - { name: Lead, color: gray }
54
+ - { name: Won, color: green }
55
+ tags: { type: multi-select, options: [inbound, partner], separator: ";" }
56
+ signed: { type: date, format: { style: long, time: false } }
57
+ active: checkbox
58
+ site: url
59
+ contact: email
60
+ notes: { type: text, wrap: true }
61
+ logo: { type: file, height: 48 }
62
+ ```
63
+
64
+ | Field | Type | |
65
+ | --- | --- | --- |
66
+ | `title` | string | The sheet's name; its workbook's worksheet is named by it, else by the sheet's folder |
67
+ | `key` | column name | The column whose value names a row: every row has one, and no two rows share it |
68
+ | `primary` | column name | The column a row is called by (a record's title). Default: the first text column that is not the key, else the first column that is not the key |
69
+ | `columns` | map | By the column's name in the header: its type alone (`active: checkbox`), or a map of the fields below |
70
+
71
+ A column:
72
+
73
+ | Field | Type | For | |
74
+ | --- | --- | --- | --- |
75
+ | `type` | one of the types below | every column | Default `text` |
76
+ | `options` | list | `select`, `multi-select` | In order, each once. An option is a name (`Won`) or `{ name, color }` |
77
+ | `separator` | string | `multi-select`, `file` | What joins names or paths in a cell. Default `;`. Not empty, not a quote |
78
+ | `format` | see below | `number`, `date` | How values are shown |
79
+ | `width` | number, px | every column | Its width in the grid |
80
+ | `wrap` | boolean | every column | Long text wraps onto more lines |
81
+ | `height` | number, px | `file` | Pictures this tall in the grid; rows grow to hold them |
82
+
83
+ A field set on a column of another type (`options` on a number column) is a problem. An option's `color` is one of `gray`, `brown`, `red`, `orange`, `yellow`, `green`, `blue`, `purple`, `pink`; its name is trimmed, not empty, and does not contain the separator.
84
+
85
+ **Number format**: `plain`, `percent` (0.12 shows as 12%), `currency`, or a map of `style` (`plain`, `percent`, `currency`; `currency` when `currency` is given, else `plain`), `decimals` (0 to 10; default as many as the value has, at most 6), `currency` (ISO 4217, default `USD`) and `thousands` (default `true`).
86
+
87
+ **Date format**: `iso` (2026-10-14), `short` (Oct 14, 2026), `long` (Wednesday, October 14, 2026), or a map of `style` (default `short`) and `time` (default `true`: the time of day shows when a value has one). Without a format a date shows as `short`.
88
+
89
+ ## Types
90
+
91
+ | Type | A value is written | Read as |
92
+ | --- | --- | --- |
93
+ | `text` | as it is | text |
94
+ | `number` | `1234.5`, `-0.12`, `1e6`: digits, a point for decimals, no thousands separator | a number |
95
+ | `select` | one option's name | the option, sorted by its place among the options |
96
+ | `multi-select` | option names joined by the separator: `inbound;partner` | a list of names |
97
+ | `date` | `2026-10-14`, or `2026-10-14T09:30` with optional seconds and zone (`Z`, `+02:00`); UTC without a zone | a moment |
98
+ | `checkbox` | `true` or `false`, any case | true or false |
99
+ | `url` | an address with no space; without a scheme it links to `https://` | a link |
100
+ | `email` | `name@domain.tld` | a `mailto:` link |
101
+ | `phone` | as it is | a `tel:` link |
102
+ | `file` | a path to a file of the project, from the sheet's folder or the project's root; several joined by the separator: `files/a.png;files/b.pdf` | an attachment: a picture (png, jpg, gif, webp, avif, svg) shows as itself, any other file by its name |
103
+
104
+ Any column may have an empty cell. Sorting is by type; a value its type cannot read comes after those it can, and empty cells come last whichever the direction.
105
+
106
+ ## comments.json
107
+
108
+ Threads about a sheet's cells are kept beside it in `comments.json`, as a doc's are ([docs.md](docs.md#commentsjson)), each with the `range` it is about (`B4`, or `B4:C9`: columns by letter, rows counted from 1 under the header).
109
+
110
+ ## Check, measure, import, render
111
+
112
+ - `allyhub check` reports AK-M009, each with its file and line: rows that are not CSV, a header with an empty or repeated name, a row with more fields than the header; a value its column's type cannot read (five per column, then a count); a `file` cell naming no file of the project; a key with an empty or repeated value; a `sheet.yaml` that is not YAML, an unknown field or one of the wrong kind, a column, key or primary the sheet does not have; a sheet inside another item's folder. A mistake in `sheet.yaml` leaves the rest of it read.
113
+ - `allyhub sheet <sheet>` measures each column of a sheet too long to read whole: count, empty cells, distinct values, values its type cannot read, smallest and largest, the most frequent values.
114
+ - `allyhub sheet import <file> --to <folder>` makes a sheet of a CSV, a TSV or an Excel workbook (a sheet per worksheet), never over a place that is taken.
115
+ - `allyhub render` writes each sheet as an Excel workbook, `.allyhub/out/<place>/sheet.xlsx`; `--type` takes any of `xlsx`, `csv`, `md`, `json`, and an item's place names one sheet (`allyhub render research/leads --type csv,md`). A sheet with a problem is not written: the command fails and says why.
116
+
117
+ ## A sheet in a piece
118
+
119
+ A piece reads a sheet's rows as data, by import or with `ctx.data(path)` for a path worked out in code, both relative to the file that names them: an object per row, keyed by the header ([project.md](project.md)). This reads the CSV alone, not `sheet.yaml`: a column whose every non-empty value is a number becomes numbers, everything else stays text, and lines with nothing in them are left out.
package/docs/slides.md ADDED
@@ -0,0 +1,111 @@
1
+ # Slides
2
+
3
+ A deck is the default export of an item's `slides.ts`: `slides({ …, pages })`, pages of one format, each one still frame. It is a single image, a carousel, slides or a PDF document.
4
+
5
+ ```ts file=launch/deck/slides.ts
6
+ import { custom, part, slides } from "@allyhub/sdk";
7
+ import { h, layout } from "@allyhub/sdk/dom";
8
+
9
+ const heading = (line: string) =>
10
+ custom({
11
+ mount(el, ctx) {
12
+ const L = layout(ctx);
13
+ const title = h("h1", {
14
+ position: "absolute",
15
+ left: L.left,
16
+ top: L.top,
17
+ fontSize: 96 * L.k,
18
+ });
19
+ title.textContent = line;
20
+ el.append(title);
21
+ },
22
+ render() {},
23
+ });
24
+
25
+ export default slides({
26
+ format: "16x9",
27
+ notes: true,
28
+ pages: ({ s }) => [
29
+ part({ key: "cover", layers: [heading(s("launch.deck.cover.title"))] }),
30
+ part({
31
+ key: "how",
32
+ still: 0,
33
+ layers: [heading(s("launch.deck.how.title"))],
34
+ }),
35
+ ],
36
+ });
37
+ ```
38
+
39
+ ## `slides()`
40
+
41
+ Besides a piece's `id`, `title`, `format`, `matrix` and `meta` ([video.md](video.md)):
42
+
43
+ | Field | Type | Default | What it is |
44
+ | --- | --- | --- | --- |
45
+ | `pages` | `(ctx) => PartSpec[]` (or a promise) | required | The pages, in order; `ctx` is the one a video's parts function gets (`s`, `combo`, `asset`…) |
46
+ | `notes` | boolean | false | Each page's speaker notes are the message `<prefix>.<page key>.notes` |
47
+ | `prefix` | message key | the piece's id with `/` as `.` | The prefix of the notes' keys |
48
+ | `look` | string | `"clean"` | The look's name |
49
+ | `loadLimit` | seconds | 10 | How long loading may take (AK-P002) |
50
+ | `seekLimit` | seconds | 30 | How long one page may take to draw (AK-P003) |
51
+
52
+ `slides()` with no `pages` function throws; `definePiece()` and `paged()` are gone and throw.
53
+
54
+ ## Pages
55
+
56
+ - A page is made with `part()`, with a `key` unique in the deck, and its layers ([layers.md](layers.md)). It is drawn at its `still` moment: by default 0.4 s before the end of its `dur` (4 s unless given, or `defaults.part`); `still: 0` is its first moment, a function of its length another.
57
+ - A deck has no clock to hear: a page's speech, sounds and transition are not played. A layer's `render(t)` is called at the still only. `footage(file)` on a page shows the file's frame at that moment; `footage()` without a file has no take to show (AK-A001).
58
+ - Layers lay out in the page's pixels with `layout(ctx)` and `ctx.dims`, as a video's do.
59
+
60
+ ## Formats
61
+
62
+ A deck's `format` is a preset (`16x9`, `9x16`, `1x1`, `4x5`), a platform profile, a page format, or `WIDTHxHEIGHT` in pixels (each side 64 to 8192, e.g. `1200x630`). An unknown format is AK-G001.
63
+
64
+ | Format | Pixels | Paper |
65
+ | --- | --- | --- |
66
+ | `a4` | 1240 × 1754 | 210 × 297 mm, at 150 dpi |
67
+ | `letter` | 1275 × 1650 | 8.5 × 11 in, at 150 dpi |
68
+
69
+ `a4` and `letter` are for decks only. They and `WIDTHxHEIGHT` have no covered edges; a preset or a profile has its platform's.
70
+
71
+ Another format is another item that imports what it shares:
72
+
73
+ ```ts file=launch/handout/slides.ts
74
+ import { slides } from "@allyhub/sdk";
75
+
76
+ import deck from "../deck/slides.ts";
77
+
78
+ export default slides({
79
+ ...deck,
80
+ id: "launch/handout",
81
+ format: "a4",
82
+ notes: false,
83
+ });
84
+ ```
85
+
86
+ ## Speaker notes
87
+
88
+ With `notes: true`, a page's notes are the message `<prefix>.<page key>.notes`. In the item's script that is the page's row, `screen.notes`:
89
+
90
+ ```yaml
91
+ title: Launch deck
92
+ parts:
93
+ - id: cover
94
+ screen:
95
+ title: Tidyform
96
+ notes: Thank the partners first.
97
+ ```
98
+
99
+ The keys are read in the combo's language. A page with no notes message has none.
100
+
101
+ ## What a deck renders to
102
+
103
+ `allyhub render` makes a deck's files in `.allyhub/out/<piece>/` (`slides.<combo key>.<ext>`), each page drawn at its still as the render draws it. `--type` picks them; `allyhub help render` lists the options.
104
+
105
+ | Type | What it is |
106
+ | --- | --- |
107
+ | `pdf` (the default) | One page per page, at the format's paper (`a4`, `letter`) or its pixels |
108
+ | `png` | One PNG per page, numbered from 1 |
109
+ | `pptx` | One full-bleed picture per page (not editable objects), with its speaker notes, else the text the page shows |
110
+
111
+ Every combo of the deck's matrix (its languages, for one) renders its own files. `allyhub frames` draws every page's still on one sheet.
package/docs/sound.md ADDED
@@ -0,0 +1,170 @@
1
+ # Sound
2
+
3
+ Nothing makes a sound unless the piece puts it there: each part's speech ([speech.md](speech.md)), the music, footage with `audio: true` and the sound effects a part places. Each stem is shaped, levelled to a loudness, the music dips under speech, and the sum is mastered. The render's mix and the preview's are the same computation, sample by sample. This file covers music, sound effects, the mix, the master and how the voice was recorded.
4
+
5
+ ```ts file=launch/film/video.ts
6
+ import { part, take, video } from "@allyhub/sdk";
7
+
8
+ import chime from "./sfx/chime.wav";
9
+
10
+ export default video({
11
+ format: "16x9",
12
+ music: {
13
+ file: "./music/song.mp3",
14
+ bpm: 113,
15
+ downbeat: 0.42,
16
+ play: [
17
+ { from: { bar: 0 }, to: { bar: 7 } },
18
+ { from: { bar: 3 }, to: { bar: 7 } },
19
+ ],
20
+ end: "bar",
21
+ snap: true,
22
+ eq: [
23
+ { type: "highpass", hz: 60 },
24
+ {
25
+ type: "lowpass",
26
+ hz: 20000,
27
+ keys: [
28
+ { at: 0, hz: 1100 },
29
+ { at: "@drop", hz: 1100 },
30
+ { at: "@drop+0.3", hz: 20000 },
31
+ ],
32
+ },
33
+ ],
34
+ compress: { threshold: -6, ratio: 1.5 },
35
+ gain: [
36
+ { at: 0, db: -4 },
37
+ { at: "@drop", db: -4 },
38
+ { at: "@drop+0.1", db: 0 },
39
+ ],
40
+ },
41
+ mix: { music: -24, duck: { db: -6, hold: 1 }, musicFade: { out: 3 } },
42
+ master: { lufs: -16, truePeak: -1.5 },
43
+ mic: { setup: "phone", distance: 1.3, room: "bedroom" },
44
+ parts: ({ s }) => [
45
+ part({
46
+ key: "how",
47
+ speech: take("./vo/en.mp3").saying(s("launch.film.how.say")),
48
+ anchors: { drop: 2 },
49
+ sounds: [
50
+ { at: "paste", sound: "tick", what: "step 1" },
51
+ { at: 2.4, sound: "./sfx/ding.wav", gainDb: -3 },
52
+ {
53
+ at: "free-0.05",
54
+ sound: chime,
55
+ shape: { eq: [{ type: "highpass", hz: 200 }] },
56
+ },
57
+ ],
58
+ }),
59
+ ],
60
+ });
61
+ ```
62
+
63
+ A path written as a string (the music's file, a sound's) is relative to the module that wrote it ([project.md](project.md)).
64
+
65
+ ## Music
66
+
67
+ `video({ music })`: an audio file (an import, or a path), or `MusicOptions`. Any audio file is music: a song, or a bed of a room's sound.
68
+
69
+ - `file`: the music, or one per language (`{ en: a, "zh-cn": b }`); a language without an entry has none.
70
+ - `from`: where in the file it starts, seconds; default 0.
71
+ - `play`: stretches of the file, `[{ from, to }]`, back to back; each place in seconds, `{ beat: n }` or `{ bar: n }`. The film moves on by each stretch's exact length, so stretches cut on the beat keep the beat. Default the file from `from` to its end.
72
+ - `loop`: `true` plays the whole file again and again, each seam crossed over 0.25 s; `{ from, to }` plays that stretch again and again after `play`. Default false: it plays once.
73
+ - `seam`: each seam's equal-power cross-fade, seconds, before the join, so a downbeat there is heard whole; default 0.03 (0.25 with `loop: true`).
74
+ - `bpm`: beats per minute, for `snap`, beats and bars; default the tempo the build measured.
75
+ - `downbeat`: the file's second of bar 0; bars and beats count from 0. Default the first beat measured, or 0 with a given `bpm`.
76
+ - `meter`: beats a bar, for `{ bar }` places and `end: "bar"`; default 4.
77
+ - `end`: where it stops, `"film"` (the video's end, the default), `"bar"` or `"beat"` (the last bar line or beat before it); its fade out ends there.
78
+ - `snap`: parts without speech end on the music's beats as the stretches lay them; default false.
79
+ - `gain`: its level over the film, `[{ at, db }]`, dB over its mix level, linear in dB between points and held outside them, added to its dip under speech.
80
+ - `filter`: an ffmpeg audio filter chain run on the file as it is decoded, on the file's clock. One chain; nothing that reads files, listens, loads plugins, makes sound or changes the timing.
81
+ - `eq`: bands, in order, `{ type, hz, db?, q?, keys? }`: `highpass`, `lowpass`, `bandpass` (`q` default 0.707), `peak` (`q` default 1), `lowshelf`, `highshelf` (`q` the slope, default 1). `keys: [{ at, hz?, db?, q? }]` move a band over the film.
82
+ - `compress`: a compressor after the bands, `{ threshold, ratio?, knee?, attack?, release?, window? }`, its threshold dB over the music's own loudness; the rest `COMPRESS_DEFAULTS` (ratio 2, knee 6 dB, attack 0.01 s, release 0.15 s, window 0.01 s).
83
+
84
+ - A moment of `gain` and `keys` (`at`) is film seconds, an anchor of any part (`"@drop"`, `"@drop-0.2"`, `"@/drop"`), a part's key (its start), or `{ part, at }`, a word reference or seconds in that part ([speech.md](speech.md#word-references)). One that is not there is AK-T004.
85
+ - A beat, a bar, `snap` or `end` without a tempo (no `bpm` and none measured) plays the file once, or ends it with the film, and snaps nothing; a fact says so.
86
+ - Music shorter than the film leaves its end silent unless it loops; the `music-length` fact gives both lengths.
87
+ - The music is levelled as shaped: `filter`, `eq` and `compress` change how it sounds, `mix` and `gain` how loud. The values are `MUSIC_DEFAULTS` ([defaults.md](defaults.md)).
88
+
89
+ ## Sound effects
90
+
91
+ A part places its sounds: `part({ sounds: [{ at, sound, gainDb?, shape?, what? }] })`.
92
+
93
+ - `at`: a word reference, an anchor or seconds from the part's start. A built-in sound's transient lands there; a file starts there.
94
+ - `sound`: a name (the built-in synthesized `whoosh`, `tick` or `pop`, or a name of the look's `sfx`), or an audio file: an import, or a path (a string with `.` or `/` in it). A video with sound plays its sound.
95
+ - `gainDb`: −60 to 24, over the mix's sound-effect level; default 0.
96
+ - `shape`: `{ filter?, eq?, compress? }`, as the music's, its bands without `keys`.
97
+ - `what`: a note for people, what it marks (`allyhub inspect timeline` prints it).
98
+
99
+ The look's sounds are named in `allyhub.config.ts`: `defineConfig({ look: { sfx: { swoosh: "assets/media/sfx/swoosh.wav" } } })`, each path from the project's root; a name there replaces a built-in one. A name that is neither a sound nor a file, or a file that is not in the project, is AK-A001; a file with no sound AK-A003.
100
+
101
+ A file is levelled by its integrated loudness to `mix.sfx`; a sound too short or quiet for that (a click) by its K-weighted level over its whole length. The built-in sounds move by as much as `mix.sfx` moves from its default.
102
+
103
+ ## Footage sound
104
+
105
+ A footage layer's own sound is mixed only with `footage(file, { audio: true })`; `gainDb` (default 0) changes its level over the mix's footage level. A take's own footage (`footage()` without a file) sounds as the part's speech ([footage.md](footage.md)).
106
+
107
+ ## The mix
108
+
109
+ `video({ mix })`: each stem's loudness target in LUFS, and the music's dip under words.
110
+
111
+ | Field | Default | What it is |
112
+ | --- | --- | --- |
113
+ | `speech` | −16 | Each part's speech, with its room tone |
114
+ | `music` | −20 | The music while speech plays |
115
+ | `musicAlone` | −16 | The music where nobody speaks |
116
+ | `sfx` | −22 | Sound-effect files; the built-in sounds move by the same amount from −22 |
117
+ | `footage` | −16 | Footage's own sound where nobody speaks |
118
+ | `footageUnderSpeech` | −22 | Footage's own sound while speech plays |
119
+ | `duck` | `{ db: −8, attack: 0.3, release: 1, hold: 2 }` | How far (dB) the music dips under words, over `attack` seconds before a word and `release` after one, staying down through pauses shorter than `hold` |
120
+ | `musicFade` | `{ in: 0.3, out: 1.5 }` | The music's fades at the start and the end, seconds (the fade out at most a quarter of the video) |
121
+
122
+ The values are `MIX_DEFAULTS`. A part's own speech level is `speechGainDb` ([speech.md](speech.md#speech-gain)).
123
+
124
+ ## The master
125
+
126
+ `video({ master })`: a loudness in LUFS (−70 to 0), `{ lufs?, truePeak? }` (`truePeak` −9 to 0 dBTP), or `false`. The default is the format's platform profile's loudness, else −14 LUFS, with a −3 dBTP true peak (`MASTER_DEFAULTS`).
127
+
128
+ The mix's integrated loudness is measured and one gain brings it to `lufs`; a limiter at 4 times the sample rate holds the true peak; what came out is measured again and the gain corrected by what the limiter took, at most 4 times, until within 0.1 LU (`MASTER_MECHANICS`). Nothing rides the level over time: the mix keeps its loudness range. `false` (or `lufs: false`) keeps the mix's own level and only limits its peaks.
129
+
130
+ `allyhub audio` measures a video's mix as the render makes it: its loudness, range and true peak, what the master did, silences, onsets against cuts, each part's speech. `allyhub render --type wav` writes the mastered mix.
131
+
132
+ ## How the voice was recorded
133
+
134
+ `video({ mic })` and `part({ mic })` say what heard the voice: a microphone of some pattern and distance, in a room, over the room's own sound, through what a device does by itself, then the finishing done to it after. The speech is played through it in the mix, the same every time. A part's `mic` replaces the video's for that part; parts with the same setting are one recording, with one room tone under them while they play.
135
+
136
+ - Nothing asked is `"studio"`: a cardioid 0.2 m away, no room, no room tone, finished (`"finish"`: a high-pass, a gentle de-esser and compressor). `mic: false` plays the files as they are.
137
+ - A setup by name: `"studio"`, `"phone"` (a phone held in front, a little below the face: two omni microphones, its band, its automatic gain, a small dead room and its room tone), `"lav"` (a clip-on on the chest, in a dead room, finished). Their values are `SETUP_PRESETS`, the rooms' `ROOM_PRESETS` and the finishing's `POST_PRESETS` ([defaults.md](defaults.md)).
138
+ - Any value of a setup changes:
139
+
140
+ ```ts file=talk/video.ts
141
+ import { part, video } from "@allyhub/sdk";
142
+
143
+ export default video({
144
+ format: "16x9",
145
+ mic: {
146
+ setup: "lav",
147
+ room: { preset: "office", rt60: 0.3 },
148
+ noise: { below: 36, hum: { hz: 50, db: -50 } },
149
+ post: { preset: "finish", highpass: 80 },
150
+ also: [{ setup: "phone", distance: 0.8, gain: -10 }],
151
+ },
152
+ parts: () => [part({ key: "x", dur: 2, mic: "phone" })],
153
+ });
154
+ ```
155
+
156
+ - `setup`: the setup whose values fill what is not given; default `"studio"`.
157
+ - `pattern`: `omni`, `subcardioid`, `cardioid`, `supercardioid`, `hypercardioid` or `figure8`.
158
+ - `distance`, `angle`, `below`: mouth to microphone (m); how far round from where the talker faces, and how far below the mouth (degrees).
159
+ - `response`: the microphone's own response, `[Hz, dB]` points, linear in log frequency. `band`: `[low, high]` Hz it records; under and over them it falls away.
160
+ - `stereo`: two microphones this far apart (m), or `false`.
161
+ - `room`: a name (`bedroom`, `living-room`, `office`, `kitchen`, `treated`, `car`, `outdoor`), a box `{ preset?, size: [w, h, d], walls, floor, ceiling, rt60, talker }`, or `false`. A surface is a material (`hard`, `plasterboard`, `plasterboard-ceiling`, `tiles`, `concrete`, `wood`, `carpet`, `carpet-thin`, `glass`, `curtains`, `ceiling-tiles`, `foam`, `upholstery`, `grass`) or its absorption by octave from 125 Hz to 8 kHz. `rt60` (s, at 500 Hz–1 kHz) scales the surfaces' absorption until the room has it. `talker` is the mouth, m from the room's corner, facing +z.
162
+ - `noise`: the room tone, `{ below, tilt, rumble, top, hum }` (LU under the voice at the setup's own distance; dB per octave over 1 kHz; dB more below 120 Hz; the highest frequency, Hz; a mains hum `{ hz, db }`), or `false`. Further away, the voice reaches the microphone weaker against the same room tone.
163
+ - `agc`: the device's automatic gain, `{ target, most, attack, release, window, gate }` (target dB over the voice's loudness; under `gate` dB the gain holds), or `false`.
164
+ - `post`: the finishing, `"finish"`, `"phone-app"`, `{ preset?, highpass, eq, deess, compress }` (thresholds dB over the voice's loudness), or `false`.
165
+ - `source`: what recorded the file already, `{ pattern, distance }`; default a cardioid 0.2 m away (a generated voice). The setup adds only what differs.
166
+ - `also`: more microphones that heard the same voice, `[{ setup, …, gain }]`, mixed in at `gain` dB (default −12). The finishing is the first's, on the sum.
167
+
168
+ The voice's loudness is kept: a setting changes how it sounds, not how loud it is. A part's `mic` that is not valid throws where `part()` is called, naming the field.
169
+
170
+ `allyhub audio recording` measures how a video's voice is recorded (the room, the room tone, the spectrum, the dynamics), beside a reference file with `--file`, and `--fit` fits the video's setting to that file and prints it for `video({ mic })`.