@omnimedia/omnitool 1.1.0-5 → 1.1.0-51

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 (380) hide show
  1. package/README.md +143 -80
  2. package/package.json +18 -16
  3. package/s/context.ts +0 -7
  4. package/s/demo/demo.bundle.ts +102 -43
  5. package/s/demo/demo.css +246 -11
  6. package/s/demo/routines/export-test.ts +16 -0
  7. package/s/demo/routines/filmstrip-test.ts +22 -18
  8. package/s/demo/routines/load-video.ts +2 -3
  9. package/s/demo/routines/playback-test.ts +76 -0
  10. package/s/demo/routines/timeline-setup.ts +24 -0
  11. package/s/demo/routines/transcode-test.ts +21 -5
  12. package/s/demo/routines/transitions-test.ts +2 -2
  13. package/s/demo/routines/waveform-test.ts +8 -6
  14. package/s/driver/driver-worker.ts +9 -0
  15. package/s/driver/driver.test.ts +1 -1
  16. package/s/driver/driver.ts +32 -44
  17. package/s/driver/fns/schematic.ts +52 -25
  18. package/s/driver/fns/work.ts +71 -200
  19. package/s/driver/parts/compositor.ts +178 -0
  20. package/s/driver/parts/machina.ts +19 -20
  21. package/s/index.html.ts +103 -19
  22. package/s/index.ts +1 -0
  23. package/s/tests.bundle.ts +11 -0
  24. package/s/tests.html.ts +28 -0
  25. package/s/timeline/index.ts +3 -0
  26. package/s/timeline/parts/basics.ts +1 -1
  27. package/s/timeline/parts/filmstrip.ts +43 -16
  28. package/s/timeline/parts/item.ts +59 -6
  29. package/s/timeline/parts/media.ts +32 -1
  30. package/s/timeline/parts/resource-pool.ts +8 -5
  31. package/s/timeline/parts/resource.ts +2 -0
  32. package/s/timeline/parts/waveform.ts +3 -4
  33. package/s/timeline/renderers/export/parts/audio-gain.ts +17 -0
  34. package/s/timeline/renderers/export/parts/audio-mix.ts +133 -0
  35. package/s/timeline/renderers/export/parts/cursor.ts +109 -0
  36. package/s/timeline/renderers/export/parts/produce-audio.ts +64 -0
  37. package/s/timeline/renderers/export/parts/produce-video.ts +50 -0
  38. package/s/timeline/renderers/export/parts/resamplers.ts +48 -0
  39. package/s/timeline/renderers/export/produce.ts +28 -0
  40. package/s/timeline/renderers/parts/handy.ts +360 -0
  41. package/s/timeline/renderers/parts/samplers/audio/parts/find.ts +19 -0
  42. package/s/timeline/renderers/parts/samplers/audio/parts/init.ts +60 -0
  43. package/s/timeline/renderers/parts/samplers/audio/parts/sink.ts +38 -0
  44. package/s/timeline/renderers/parts/samplers/audio/parts/types.ts +16 -0
  45. package/s/timeline/renderers/parts/samplers/audio/sampler.ts +35 -0
  46. package/s/timeline/renderers/parts/samplers/visual/parts/defaults.ts +16 -0
  47. package/s/timeline/renderers/parts/samplers/visual/parts/sample.ts +59 -0
  48. package/s/timeline/renderers/parts/samplers/visual/parts/sequence.ts +111 -0
  49. package/s/timeline/renderers/parts/samplers/visual/parts/sink.ts +38 -0
  50. package/s/timeline/renderers/parts/samplers/visual/parts/transition.ts +28 -0
  51. package/s/timeline/renderers/parts/samplers/visual/parts/types.ts +10 -0
  52. package/s/timeline/renderers/parts/samplers/visual/sampler.ts +28 -0
  53. package/s/timeline/renderers/parts/schedulers.ts +96 -0
  54. package/s/timeline/renderers/player/parts/playback.ts +125 -0
  55. package/s/timeline/renderers/player/player.ts +71 -0
  56. package/s/timeline/renderers/renderers.test.ts +387 -0
  57. package/s/timeline/sugar/helpers.ts +85 -0
  58. package/s/timeline/sugar/o.ts +178 -38
  59. package/s/timeline/sugar/omni.test.ts +210 -0
  60. package/s/timeline/sugar/omni.ts +38 -12
  61. package/s/timeline/types.ts +29 -0
  62. package/s/timeline/utils/checksum.ts +3 -1
  63. package/s/timeline/utils/datafile.ts +15 -4
  64. package/s/timeline/utils/dummy-data.ts +3 -3
  65. package/s/timeline/utils/matrix.ts +33 -0
  66. package/s/units/fps.ts +8 -0
  67. package/s/units/ms.ts +8 -0
  68. package/s/units/seconds.ts +8 -0
  69. package/x/WebGLRenderer-7X274AYV.js +2 -0
  70. package/x/WebGLRenderer-7X274AYV.js.map +7 -0
  71. package/x/WebGPURenderer-XMCMEXAO.js +2 -0
  72. package/x/WebGPURenderer-XMCMEXAO.js.map +7 -0
  73. package/x/browserAll-6TVTCHHE.js +2 -0
  74. package/x/browserAll-6TVTCHHE.js.map +7 -0
  75. package/x/chunk-4ONWQOPX.js +157 -0
  76. package/x/chunk-4ONWQOPX.js.map +7 -0
  77. package/x/chunk-63NSCXPX.js +2 -0
  78. package/x/chunk-63NSCXPX.js.map +7 -0
  79. package/x/chunk-A45M2HJC.js +2 -0
  80. package/x/chunk-A45M2HJC.js.map +7 -0
  81. package/x/chunk-OTQK6FAJ.js +15 -0
  82. package/x/chunk-OTQK6FAJ.js.map +7 -0
  83. package/x/chunk-Q7JBQNE4.js +42 -0
  84. package/x/chunk-Q7JBQNE4.js.map +7 -0
  85. package/x/chunk-W33LM336.js +393 -0
  86. package/x/chunk-W33LM336.js.map +7 -0
  87. package/x/chunk-W5CN46AR.js +327 -0
  88. package/x/chunk-W5CN46AR.js.map +7 -0
  89. package/x/chunk-WFT3KTZG.js +269 -0
  90. package/x/chunk-WFT3KTZG.js.map +7 -0
  91. package/x/context.d.ts +1 -4
  92. package/x/context.js +1 -5
  93. package/x/context.js.map +1 -1
  94. package/x/demo/WebGLRenderer-NLGJGAXK.js +2 -0
  95. package/x/demo/WebGLRenderer-NLGJGAXK.js.map +7 -0
  96. package/x/demo/WebGPURenderer-RBOFXPL5.js +2 -0
  97. package/x/demo/WebGPURenderer-RBOFXPL5.js.map +7 -0
  98. package/x/demo/browserAll-5AZHDDG6.js +2 -0
  99. package/x/demo/browserAll-5AZHDDG6.js.map +7 -0
  100. package/x/demo/chunk-5ZZYIILO.js +393 -0
  101. package/x/demo/chunk-5ZZYIILO.js.map +7 -0
  102. package/x/demo/chunk-P3PTHHFE.js +42 -0
  103. package/x/demo/chunk-P3PTHHFE.js.map +7 -0
  104. package/x/demo/chunk-PYG4RZZ2.js +269 -0
  105. package/x/demo/chunk-PYG4RZZ2.js.map +7 -0
  106. package/x/demo/chunk-Q4MWBZHL.js +157 -0
  107. package/x/demo/chunk-Q4MWBZHL.js.map +7 -0
  108. package/x/demo/chunk-T3METYEY.js +15 -0
  109. package/x/demo/chunk-T3METYEY.js.map +7 -0
  110. package/x/demo/chunk-USLRKDKD.js +2 -0
  111. package/x/demo/chunk-USLRKDKD.js.map +7 -0
  112. package/x/demo/chunk-YISSXWBT.js +327 -0
  113. package/x/demo/chunk-YISSXWBT.js.map +7 -0
  114. package/x/demo/chunk-YJQWVIHX.js +2 -0
  115. package/x/demo/chunk-YJQWVIHX.js.map +7 -0
  116. package/x/demo/demo.bundle.js +92 -40
  117. package/x/demo/demo.bundle.js.map +1 -1
  118. package/x/demo/demo.bundle.min.js +2450 -35
  119. package/x/demo/demo.bundle.min.js.map +4 -4
  120. package/x/demo/demo.css +246 -11
  121. package/x/demo/routines/export-test.d.ts +2 -0
  122. package/x/demo/routines/export-test.js +10 -0
  123. package/x/demo/routines/export-test.js.map +1 -0
  124. package/x/demo/routines/filmstrip-test.d.ts +1 -1
  125. package/x/demo/routines/filmstrip-test.js +20 -17
  126. package/x/demo/routines/filmstrip-test.js.map +1 -1
  127. package/x/demo/routines/load-video.d.ts +1 -1
  128. package/x/demo/routines/load-video.js +1 -2
  129. package/x/demo/routines/load-video.js.map +1 -1
  130. package/x/demo/routines/playback-test.d.ts +2 -0
  131. package/x/demo/routines/playback-test.js +65 -0
  132. package/x/demo/routines/playback-test.js.map +1 -0
  133. package/x/demo/routines/timeline-setup.d.ts +6 -0
  134. package/x/demo/routines/timeline-setup.js +13 -0
  135. package/x/demo/routines/timeline-setup.js.map +1 -0
  136. package/x/demo/routines/transcode-test.js +17 -5
  137. package/x/demo/routines/transcode-test.js.map +1 -1
  138. package/x/demo/routines/transitions-test.js +2 -2
  139. package/x/demo/routines/transitions-test.js.map +1 -1
  140. package/x/demo/routines/waveform-test.d.ts +2 -1
  141. package/x/demo/routines/waveform-test.js +7 -6
  142. package/x/demo/routines/waveform-test.js.map +1 -1
  143. package/x/demo/webworkerAll-QKIC5O27.js +2 -0
  144. package/x/demo/webworkerAll-QKIC5O27.js.map +7 -0
  145. package/x/driver/WebGLRenderer-OMRWYQIV.js +2 -0
  146. package/x/driver/WebGLRenderer-OMRWYQIV.js.map +7 -0
  147. package/x/driver/WebGPURenderer-KQJB2OJJ.js +2 -0
  148. package/x/driver/WebGPURenderer-KQJB2OJJ.js.map +7 -0
  149. package/x/driver/browserAll-YBZEJCN3.js +2 -0
  150. package/x/driver/browserAll-YBZEJCN3.js.map +7 -0
  151. package/x/driver/chunk-3L3MB5NY.js +393 -0
  152. package/x/driver/chunk-3L3MB5NY.js.map +7 -0
  153. package/x/driver/chunk-42BQ4XKE.js +269 -0
  154. package/x/driver/chunk-42BQ4XKE.js.map +7 -0
  155. package/x/driver/chunk-4HAYG3N5.js +327 -0
  156. package/x/driver/chunk-4HAYG3N5.js.map +7 -0
  157. package/x/driver/chunk-BFBY7VYB.js +42 -0
  158. package/x/driver/chunk-BFBY7VYB.js.map +7 -0
  159. package/x/driver/chunk-KM6O72WE.js +157 -0
  160. package/x/driver/chunk-KM6O72WE.js.map +7 -0
  161. package/x/driver/chunk-N6HD4WYJ.js +2 -0
  162. package/x/driver/chunk-N6HD4WYJ.js.map +7 -0
  163. package/x/driver/chunk-WCZ2O3UN.js +15 -0
  164. package/x/driver/chunk-WCZ2O3UN.js.map +7 -0
  165. package/x/driver/chunk-XWNSF3WJ.js +2 -0
  166. package/x/driver/chunk-XWNSF3WJ.js.map +7 -0
  167. package/x/driver/driver-worker.d.ts +1 -0
  168. package/x/driver/driver-worker.js +6 -0
  169. package/x/driver/driver-worker.js.map +1 -0
  170. package/x/driver/driver.d.ts +12 -9
  171. package/x/driver/driver.js +31 -41
  172. package/x/driver/driver.js.map +1 -1
  173. package/x/driver/driver.test.js +1 -1
  174. package/x/driver/driver.test.js.map +1 -1
  175. package/x/driver/driver.worker.bundle.min.js +139 -1135
  176. package/x/driver/driver.worker.bundle.min.js.map +4 -4
  177. package/x/driver/fns/host.d.ts +10 -4
  178. package/x/driver/fns/schematic.d.ts +47 -24
  179. package/x/driver/fns/work.d.ts +12 -7
  180. package/x/driver/fns/work.js +68 -170
  181. package/x/driver/fns/work.js.map +1 -1
  182. package/x/driver/parts/compositor.d.ts +15 -0
  183. package/x/driver/parts/compositor.js +152 -0
  184. package/x/driver/parts/compositor.js.map +1 -0
  185. package/x/driver/parts/machina.d.ts +0 -20
  186. package/x/driver/parts/machina.js +6 -10
  187. package/x/driver/parts/machina.js.map +1 -1
  188. package/x/driver/webworkerAll-BKJQW6P7.js +2 -0
  189. package/x/driver/webworkerAll-BKJQW6P7.js.map +7 -0
  190. package/x/features/speech/transcribe/parts/prep-audio.d.ts +1 -1
  191. package/x/features/speech/transcribe/worker.bundle.min.js +703 -703
  192. package/x/features/speech/transcribe/worker.bundle.min.js.map +4 -4
  193. package/x/index.d.ts +1 -0
  194. package/x/index.html +349 -30
  195. package/x/index.html.js +103 -19
  196. package/x/index.html.js.map +1 -1
  197. package/x/index.js +1 -0
  198. package/x/index.js.map +1 -1
  199. package/x/tests.bundle.js +8 -0
  200. package/x/tests.bundle.js.map +1 -0
  201. package/x/tests.bundle.min.js +2464 -0
  202. package/x/tests.bundle.min.js.map +7 -0
  203. package/x/tests.html +316 -0
  204. package/x/tests.html.d.ts +2 -0
  205. package/x/tests.html.js +22 -0
  206. package/x/tests.html.js.map +1 -0
  207. package/x/timeline/index.d.ts +3 -0
  208. package/x/timeline/index.js +3 -0
  209. package/x/timeline/index.js.map +1 -1
  210. package/x/timeline/parts/basics.d.ts +1 -1
  211. package/x/timeline/parts/filmstrip.d.ts +4 -3
  212. package/x/timeline/parts/filmstrip.js +29 -10
  213. package/x/timeline/parts/filmstrip.js.map +1 -1
  214. package/x/timeline/parts/item.d.ts +51 -8
  215. package/x/timeline/parts/item.js +7 -3
  216. package/x/timeline/parts/item.js.map +1 -1
  217. package/x/timeline/parts/media.d.ts +5 -0
  218. package/x/timeline/parts/media.js +27 -1
  219. package/x/timeline/parts/media.js.map +1 -1
  220. package/x/timeline/parts/resource-pool.d.ts +3 -0
  221. package/x/timeline/parts/resource-pool.js +7 -4
  222. package/x/timeline/parts/resource-pool.js.map +1 -1
  223. package/x/timeline/parts/resource.d.ts +2 -0
  224. package/x/timeline/parts/waveform.d.ts +2 -1
  225. package/x/timeline/parts/waveform.js +2 -4
  226. package/x/timeline/parts/waveform.js.map +1 -1
  227. package/x/timeline/renderers/export/parts/audio-gain.d.ts +1 -0
  228. package/x/timeline/renderers/export/parts/audio-gain.js +13 -0
  229. package/x/timeline/renderers/export/parts/audio-gain.js.map +1 -0
  230. package/x/timeline/renderers/export/parts/audio-mix.d.ts +21 -0
  231. package/x/timeline/renderers/export/parts/audio-mix.js +89 -0
  232. package/x/timeline/renderers/export/parts/audio-mix.js.map +1 -0
  233. package/x/timeline/renderers/export/parts/cursor.d.ts +19 -0
  234. package/x/timeline/renderers/export/parts/cursor.js +80 -0
  235. package/x/timeline/renderers/export/parts/cursor.js.map +1 -0
  236. package/x/timeline/renderers/export/parts/produce-audio.d.ts +6 -0
  237. package/x/timeline/renderers/export/parts/produce-audio.js +41 -0
  238. package/x/timeline/renderers/export/parts/produce-audio.js.map +1 -0
  239. package/x/timeline/renderers/export/parts/produce-video.d.ts +10 -0
  240. package/x/timeline/renderers/export/parts/produce-video.js +27 -0
  241. package/x/timeline/renderers/export/parts/produce-video.js.map +1 -0
  242. package/x/timeline/renderers/export/parts/resamplers.d.ts +12 -0
  243. package/x/timeline/renderers/export/parts/resamplers.js +29 -0
  244. package/x/timeline/renderers/export/parts/resamplers.js.map +1 -0
  245. package/x/timeline/renderers/export/produce.d.ts +13 -0
  246. package/x/timeline/renderers/export/produce.js +15 -0
  247. package/x/timeline/renderers/export/produce.js.map +1 -0
  248. package/x/timeline/renderers/parts/handy.d.ts +30 -0
  249. package/x/timeline/renderers/parts/handy.js +219 -0
  250. package/x/timeline/renderers/parts/handy.js.map +1 -0
  251. package/x/timeline/renderers/parts/samplers/audio/parts/find.d.ts +6 -0
  252. package/x/timeline/renderers/parts/samplers/audio/parts/find.js +15 -0
  253. package/x/timeline/renderers/parts/samplers/audio/parts/find.js.map +1 -0
  254. package/x/timeline/renderers/parts/samplers/audio/parts/init.d.ts +5 -0
  255. package/x/timeline/renderers/parts/samplers/audio/parts/init.js +40 -0
  256. package/x/timeline/renderers/parts/samplers/audio/parts/init.js.map +1 -0
  257. package/x/timeline/renderers/parts/samplers/audio/parts/sink.d.ts +8 -0
  258. package/x/timeline/renderers/parts/samplers/audio/parts/sink.js +24 -0
  259. package/x/timeline/renderers/parts/samplers/audio/parts/sink.js.map +1 -0
  260. package/x/timeline/renderers/parts/samplers/audio/parts/types.d.ts +14 -0
  261. package/x/timeline/renderers/parts/samplers/audio/parts/types.js.map +1 -0
  262. package/x/timeline/renderers/parts/samplers/audio/sampler.d.ts +11 -0
  263. package/x/timeline/renderers/parts/samplers/audio/sampler.js +22 -0
  264. package/x/timeline/renderers/parts/samplers/audio/sampler.js.map +1 -0
  265. package/x/timeline/renderers/parts/samplers/visual/parts/defaults.d.ts +5 -0
  266. package/x/timeline/renderers/parts/samplers/visual/parts/defaults.js +10 -0
  267. package/x/timeline/renderers/parts/samplers/visual/parts/defaults.js.map +1 -0
  268. package/x/timeline/renderers/parts/samplers/visual/parts/sample.d.ts +5 -0
  269. package/x/timeline/renderers/parts/samplers/visual/parts/sample.js +38 -0
  270. package/x/timeline/renderers/parts/samplers/visual/parts/sample.js.map +1 -0
  271. package/x/timeline/renderers/parts/samplers/visual/parts/sequence.d.ts +5 -0
  272. package/x/timeline/renderers/parts/samplers/visual/parts/sequence.js +75 -0
  273. package/x/timeline/renderers/parts/samplers/visual/parts/sequence.js.map +1 -0
  274. package/x/timeline/renderers/parts/samplers/visual/parts/sink.d.ts +8 -0
  275. package/x/timeline/renderers/parts/samplers/visual/parts/sink.js +24 -0
  276. package/x/timeline/renderers/parts/samplers/visual/parts/sink.js.map +1 -0
  277. package/x/timeline/renderers/parts/samplers/visual/parts/transition.d.ts +3 -0
  278. package/x/timeline/renderers/parts/samplers/visual/parts/transition.js +18 -0
  279. package/x/timeline/renderers/parts/samplers/visual/parts/transition.js.map +1 -0
  280. package/x/timeline/renderers/parts/samplers/visual/parts/types.d.ts +8 -0
  281. package/x/timeline/renderers/parts/samplers/visual/parts/types.js +2 -0
  282. package/x/timeline/renderers/parts/samplers/visual/parts/types.js.map +1 -0
  283. package/x/timeline/renderers/parts/samplers/visual/sampler.d.ts +7 -0
  284. package/x/timeline/renderers/parts/samplers/visual/sampler.js +17 -0
  285. package/x/timeline/renderers/parts/samplers/visual/sampler.js.map +1 -0
  286. package/x/timeline/renderers/parts/schedulers.d.ts +17 -0
  287. package/x/timeline/renderers/parts/schedulers.js +64 -0
  288. package/x/timeline/renderers/parts/schedulers.js.map +1 -0
  289. package/x/timeline/renderers/player/parts/playback.d.ts +31 -0
  290. package/x/timeline/renderers/player/parts/playback.js +91 -0
  291. package/x/timeline/renderers/player/parts/playback.js.map +1 -0
  292. package/x/timeline/renderers/player/player.d.ts +23 -0
  293. package/x/timeline/renderers/player/player.js +50 -0
  294. package/x/timeline/renderers/player/player.js.map +1 -0
  295. package/x/timeline/renderers/renderers.test.d.ts +32 -0
  296. package/x/timeline/renderers/renderers.test.js +306 -0
  297. package/x/timeline/renderers/renderers.test.js.map +1 -0
  298. package/x/timeline/sugar/helpers.d.ts +30 -0
  299. package/x/timeline/sugar/helpers.js +46 -0
  300. package/x/timeline/sugar/helpers.js.map +1 -0
  301. package/x/timeline/sugar/o.d.ts +31 -4
  302. package/x/timeline/sugar/o.js +144 -38
  303. package/x/timeline/sugar/o.js.map +1 -1
  304. package/x/timeline/sugar/omni.d.ts +11 -2
  305. package/x/timeline/sugar/omni.js +30 -9
  306. package/x/timeline/sugar/omni.js.map +1 -1
  307. package/x/timeline/sugar/omni.test.d.ts +27 -0
  308. package/x/timeline/sugar/omni.test.js +128 -0
  309. package/x/timeline/sugar/omni.test.js.map +1 -0
  310. package/x/timeline/types.d.ts +24 -0
  311. package/x/timeline/types.js +2 -0
  312. package/x/timeline/types.js.map +1 -0
  313. package/x/timeline/utils/checksum.d.ts +3 -2
  314. package/x/timeline/utils/checksum.js.map +1 -1
  315. package/x/timeline/utils/datafile.d.ts +5 -3
  316. package/x/timeline/utils/datafile.js +18 -5
  317. package/x/timeline/utils/datafile.js.map +1 -1
  318. package/x/timeline/utils/dummy-data.d.ts +1 -2
  319. package/x/timeline/utils/dummy-data.js +4 -2
  320. package/x/timeline/utils/dummy-data.js.map +1 -1
  321. package/x/timeline/utils/matrix.d.ts +8 -0
  322. package/x/timeline/utils/matrix.js +26 -0
  323. package/x/timeline/utils/matrix.js.map +1 -0
  324. package/x/units/fps.d.ts +6 -0
  325. package/x/units/fps.js +2 -0
  326. package/x/units/fps.js.map +1 -0
  327. package/x/units/ms.d.ts +6 -0
  328. package/x/units/ms.js +2 -0
  329. package/x/units/ms.js.map +1 -0
  330. package/x/units/seconds.d.ts +6 -0
  331. package/x/units/seconds.js +2 -0
  332. package/x/units/seconds.js.map +1 -0
  333. package/x/webworkerAll-VVIU3M54.js +2 -0
  334. package/x/webworkerAll-VVIU3M54.js.map +7 -0
  335. package/s/tests.test.ts +0 -8
  336. package/s/timeline/sugar/omni-test.ts +0 -38
  337. package/s/tools/common/loader.ts +0 -26
  338. package/s/tools/common/transformer-pipeline.ts +0 -26
  339. package/s/tools/speech-recognition/common/model.ts +0 -26
  340. package/s/tools/speech-recognition/whisper/fns/host.ts +0 -25
  341. package/s/tools/speech-recognition/whisper/fns/schematic.ts +0 -23
  342. package/s/tools/speech-recognition/whisper/fns/work.ts +0 -91
  343. package/s/tools/speech-recognition/whisper/parts/types.ts +0 -38
  344. package/s/tools/speech-recognition/whisper/parts/worker.bundle.ts +0 -7
  345. package/s/tools/speech-recognition/whisper/tool.ts +0 -70
  346. package/x/tests.test.js +0 -6
  347. package/x/tests.test.js.map +0 -1
  348. package/x/timeline/sugar/omni-test.d.ts +0 -1
  349. package/x/timeline/sugar/omni-test.js +0 -22
  350. package/x/timeline/sugar/omni-test.js.map +0 -1
  351. package/x/tools/common/loader.d.ts +0 -19
  352. package/x/tools/common/loader.js +0 -18
  353. package/x/tools/common/loader.js.map +0 -1
  354. package/x/tools/common/transformer-pipeline.d.ts +0 -8
  355. package/x/tools/common/transformer-pipeline.js +0 -24
  356. package/x/tools/common/transformer-pipeline.js.map +0 -1
  357. package/x/tools/speech-recognition/common/model.d.ts +0 -14
  358. package/x/tools/speech-recognition/common/model.js +0 -16
  359. package/x/tools/speech-recognition/common/model.js.map +0 -1
  360. package/x/tools/speech-recognition/whisper/fns/host.d.ts +0 -13
  361. package/x/tools/speech-recognition/whisper/fns/host.js +0 -19
  362. package/x/tools/speech-recognition/whisper/fns/host.js.map +0 -1
  363. package/x/tools/speech-recognition/whisper/fns/schematic.d.ts +0 -19
  364. package/x/tools/speech-recognition/whisper/fns/schematic.js +0 -2
  365. package/x/tools/speech-recognition/whisper/fns/schematic.js.map +0 -1
  366. package/x/tools/speech-recognition/whisper/fns/work.d.ts +0 -12
  367. package/x/tools/speech-recognition/whisper/fns/work.js +0 -74
  368. package/x/tools/speech-recognition/whisper/fns/work.js.map +0 -1
  369. package/x/tools/speech-recognition/whisper/parts/types.d.ts +0 -31
  370. package/x/tools/speech-recognition/whisper/parts/types.js.map +0 -1
  371. package/x/tools/speech-recognition/whisper/parts/worker.bundle.d.ts +0 -1
  372. package/x/tools/speech-recognition/whisper/parts/worker.bundle.js +0 -4
  373. package/x/tools/speech-recognition/whisper/parts/worker.bundle.js.map +0 -1
  374. package/x/tools/speech-recognition/whisper/parts/worker.bundle.min.js +0 -8
  375. package/x/tools/speech-recognition/whisper/parts/worker.bundle.min.js.map +0 -7
  376. package/x/tools/speech-recognition/whisper/tool.d.ts +0 -12
  377. package/x/tools/speech-recognition/whisper/tool.js +0 -63
  378. package/x/tools/speech-recognition/whisper/tool.js.map +0 -1
  379. /package/x/{tests.test.d.ts → tests.bundle.d.ts} +0 -0
  380. /package/x/{tools/speech-recognition/whisper → timeline/renderers/parts/samplers/audio}/parts/types.js +0 -0
package/README.md CHANGED
@@ -1,120 +1,183 @@
1
1
 
2
2
  # 🚧 Work In Progress
3
3
 
4
- > **Note:** Omni Tools is under development. Expect breaking changes, evolving APIs, and experimental features.
4
+ > **Note:** Omnitool is under development. Expect breaking changes, evolving APIs, and experimental features.
5
5
 
6
6
  ---
7
7
 
8
- # 🎬 Omnitool
8
+ ## What this library is
9
9
 
10
- > Code-first video editing toolkit behind [Omniclip](https://omniclip.app) — build timelines, render videos, and automate workflows.
10
+ - API for building and rendering timelines in the browser
11
+ - Uses WebCodecs, Web Workers, and the File System Access API for export
12
+ - usage is currently JavaScript/TypeScript only, cli soon
11
13
 
12
- ---
13
-
14
- ## 🧱 Modular by Design
14
+ ## 🚀 Install
15
15
 
16
- Omni Tools is a collection of composable utilities for working with Omniclip timelines — via code, JSON, or CLI.
16
+ ```bash
17
+ npm i @omnimedia/omnitool
18
+ ```
17
19
 
18
- - Define timelines in JSON or TypeScript
19
- - ✅ Automate rendering with CLI tools
20
- - ✅ Ideal for scripting, CI/CD, and AI-generated workflows
20
+ ## 📦 Quick Start
21
21
 
22
- ---
22
+ #### Declaring the timeline
23
23
 
24
- ## 🚀 Quick Start
24
+ ```ts
25
+ import {Driver, Omni, Datafile} from "@omnimedia/omnitool"
26
+
27
+ const driver = await Driver.setup()
28
+ const omni = new Omni(driver)
29
+
30
+ const {clip} = await omni.load({
31
+ clip: Datafile.make(file) // file is a File or Blob
32
+ })
33
+
34
+ const timeline = omni.timeline(o => {
35
+ const caption = o.text("Hello world", {
36
+ duration: 1500,
37
+ styles: {fill: "white", fontSize: 48}
38
+ })
39
+ const xfade = o.transition.crossfade(500)
40
+
41
+ return o.sequence(
42
+ o.stack(
43
+ o.video(clip, {start: 0, duration: 3000}),
44
+ caption
45
+ ),
46
+ o.gap(400),
47
+ xfade,
48
+ o.video(clip, {start: 5000, duration: 2500}),
49
+ o.audio(clip, {start: 5000, duration: 2500})
50
+ )
51
+ })
52
+ ```
25
53
 
26
- ### Install
54
+ Declarative helper style (no explicit `o` in timeline declarations):
27
55
 
28
- ```bash
29
- npm i @omnimedia/omnitool
56
+ ```ts
57
+ import {
58
+ Driver, Omni, Datafile,
59
+ timeline, stack, video, audio, text, gap, transition
60
+ } from "@omnimedia/omnitool"
61
+
62
+ const driver = await Driver.setup()
63
+ const omni = new Omni(driver)
64
+ const {clip} = await omni.load({clip: Datafile.make(file)})
65
+
66
+ const timeline = timeline(
67
+ stack(
68
+ video(clip, {start: 0, duration: 3000}),
69
+ text("Hello world", {duration: 1500}),
70
+ ),
71
+ gap(400),
72
+ transition.crossfade(500),
73
+ video(clip, {start: 5000, duration: 2500}),
74
+ audio(clip, {start: 5000, duration: 2500})
75
+ )
30
76
  ```
31
77
 
32
- ---
78
+ ## 🧭 Spatial Transforms
79
+
80
+ ```ts
81
+ const timeline = omni.timeline(o => {
82
+ const move = o.spatial(o.transform({
83
+ position: [120, 40],
84
+ scale: [0.6, 0.6],
85
+ rotation: 0.2
86
+ }))
87
+
88
+ const title = o.text("Lower third", {
89
+ duration: 2000,
90
+ styles: {fill: "white", fontSize: 36}
91
+ })
92
+ o.set(title.id, {spatialId: move.id})
93
+
94
+ return o.stack(
95
+ o.video(clip, {duration: 4000}),
96
+ title
97
+ )
98
+ })
99
+ ```
33
100
 
34
- ## 📦 Example (Programmatic Timeline)
101
+ Worker URL notes:
102
+ - `Driver.setup()` defaults to `/node_modules/@omnimedia/omnitool/x/driver/driver.worker.bundle.min.js`.
103
+ - If you serve the worker from a different location, pass `workerUrl`:
35
104
 
36
105
  ```ts
37
- import { subtitle, crossfade, sequence, stack, video } from "@omni/tools"
38
-
39
- const watermark = subtitle("omniclip")
40
- const xfade = crossfade(500)
41
-
42
- const timeline = sequence(
43
- video("opening-credits.mp4"),
44
- xfade,
45
- stack(
46
- video("skateboarding.mp4"),
47
- watermark
48
- ),
49
- xfade,
50
- stack(
51
- video("biking.mp4"),
52
- watermark
53
- )
106
+ const workerUrl = new URL(
107
+ "/path/to/driver.worker.bundle.min.js",
108
+ window.location.href
54
109
  )
55
-
110
+ const driver = await Driver.setup({workerUrl})
56
111
  ```
57
112
 
58
- ---
113
+ ## ▶️ Playback
114
+
115
+ ```ts
116
+ const player = await omni.playback(timeline)
117
+
118
+ document.body.appendChild(player.canvas)
119
+ player.play()
120
+ ```
59
121
 
60
- ## 🧩 Timeline Format (Omni Timeline Format)
122
+ Notes:
123
+ - Call `player.update(timeline)` if you update the timeline.
61
124
 
62
- Every timeline is defined as a graph:
125
+ ## 📤 Export
126
+
127
+ ```ts
128
+ await omni.render(timeline, framerate)
129
+ ```
130
+
131
+ ## 🧩 Timeline Format (TimelineFile)
132
+
133
+ All durations and timestamps are in milliseconds.
63
134
 
64
135
  ```json
65
136
  {
66
- "format": "omni-timeline@1",
67
- "root": "root-1",
68
- "items": [
69
- ["root-1", ["sequence", { "children": ["video-1", "stack-1"] }]],
70
- ["video-1", ["video", { ... }]],
71
- ["stack-1", ["stack", { "children": ["text-1", "audio-1"] }]],
72
- ["text-1", ["text", { ... }]],
73
- ["audio-1", ["audio", { ... }]]
74
- ]
137
+ "format": "timeline",
138
+ "info": "https://omniclip.app/",
139
+ "version": 0,
140
+ "rootId": 123,
141
+ "items": [
142
+ {"id": 123, "kind": 0, "childrenIds": [456, 789]},
143
+ {"id": 456, "kind": 2, "mediaHash": "...", "start": 0, "duration": 3000},
144
+ {"id": 789, "kind": 4, "content": "Hello", "duration": 1500}
145
+ ]
75
146
  }
76
147
  ```
77
148
 
78
- Each item is a `[id, item]` pair. Items can reference others by ID, forming a directed graph of reusable, composable blocks.
149
+ Timeline items:
150
+ - 0 `Sequence`
151
+ - 1 `Stack`
152
+ - 2 `Video`
153
+ - 3 `Audio`
154
+ - 4 `Text`
155
+ - 5 `Gap`
156
+ - 6 `Spatial`
157
+ - 7 `Transition`
158
+ - 8 `TextStyle`
79
159
 
80
- ---
81
-
82
- ## 🖥 CLI Usage
160
+ ## 🗺️ Roadmap
161
+ - CLI commands:
83
162
 
84
163
  ```bash
85
- # Build a timeline (manually or via AI)
164
+ # build a reusable template from a timeline
86
165
  omnitool build-template promo.json
87
-
88
- # Validate structure
166
+ # validate a timeline file
89
167
  omnitool validate promo.json
90
-
91
- # Render video
168
+ # export a timeline to a video file
92
169
  omnitool export promo.json --output final.mp4
93
-
94
- # Batch render
170
+ # batch export multiple timelines
95
171
  omnitool batch-export ./projects/* --output-dir ./exports
172
+ # headless timeline viewer
173
+ omnitool preview promo.json
174
+ # auto-fit timeline elements
175
+ omnitool optimize promo.json
176
+ # prompt-to-timeline generation
177
+ omnitool ai "make a 15s promo for tea"
96
178
  ```
97
179
 
98
- ---
99
-
100
- ## Use Cases
101
-
102
- - Render videos from scripts, templates, or AI
103
- - Build and test timelines without opening the UI
104
- - Generate video pipelines from code or prompts
105
-
106
- ---
107
-
108
- ## 📘 More to come
109
-
110
- - `omnitool preview` – headless timeline viewer
111
- - `omnitool optimize` – auto-fit timeline elements
112
- - `omnitool ai` – native prompt-to-timeline generation
113
-
114
- ---
115
-
116
- ## 🧠 Learn More
117
-
118
- Omni Tools powers AI agents, programmatic editing, and upcoming new version of omniclip video editor.
180
+ - smooth seeking
181
+ - keyframes
182
+ - server-side, not just browsers
119
183
 
120
- → [Visit Omniclip](https://omniclip.app)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@omnimedia/omnitool",
3
- "version": "1.1.0-5",
3
+ "version": "1.1.0-51",
4
4
  "description": "open source video processing tools",
5
5
  "license": "MIT",
6
6
  "author": "Przemysław Gałęzki",
@@ -19,30 +19,32 @@
19
19
  "_ln-s": "ln -s \"$(realpath s)\" x/s",
20
20
  "_ln-assets": "ln -s \"$(realpath assets)\" x/assets",
21
21
  "_scute": "scute -v",
22
- "test": "node x/tests.test.js",
22
+ "test": "echo \"node tests disabled for now\"",
23
23
  "test-debug": "node inspect x/tests.test.js"
24
24
  },
25
25
  "devDependencies": {
26
- "@e280/science": "^0.0.6",
27
- "@e280/scute": "^0.0.0-7",
28
- "@types/node": "^24.2.0",
26
+ "@e280/science": "^0.1.4",
27
+ "@e280/scute": "^0.1.2",
28
+ "@types/node": "^25.0.3",
29
+ "@types/wicg-file-system-access": "^2023.10.7",
29
30
  "http-server": "^14.1.1",
30
31
  "npm-run-all": "^4.1.5",
31
- "typescript": "^5.9.2"
32
+ "typescript": "^5.9.3"
32
33
  },
33
34
  "dependencies": {
34
- "@benev/slate": "^0.3.9",
35
- "@e280/comrade": "^0.0.0-23",
36
- "@e280/renraku": "^0.5.0-29",
37
- "@e280/stz": "^0.0.0-34",
38
- "@huggingface/transformers": "^3.7.1",
35
+ "@e280/comrade": "^0.1.0",
36
+ "@e280/renraku": "^0.5.3",
37
+ "@e280/sly": "^0.2.5",
38
+ "@e280/strata": "^0.2.5",
39
+ "@e280/stz": "^0.2.15",
40
+ "@huggingface/transformers": "^3.8.1",
39
41
  "comrade": "^0.0.3",
40
42
  "gl-transitions": "^1.43.0",
41
- "mediabunny": "^1.4.4",
42
- "mp4-muxer": "^5.2.1",
43
- "pixi.js": "^8.10.1",
44
- "wavesurfer.js": "^7.10.0",
45
- "web-demuxer": "^2.3.8"
43
+ "gsap": "^3.14.2",
44
+ "lit": "^3.3.2",
45
+ "mediabunny": "^1.27.3",
46
+ "pixi.js": "^8.14.3",
47
+ "wavesurfer.js": "^7.12.1"
46
48
  },
47
49
  "homepage": "https://github.com/omni-media/omnitool#readme",
48
50
  "repository": {
package/s/context.ts CHANGED
@@ -1,7 +0,0 @@
1
- import {Driver} from "./driver/driver.js"
2
-
3
- const workerUrl = new URL("../driver/driver.worker.bundle.min.js", import.meta.url)
4
-
5
- export const context = {
6
- driver: Driver.setup({workerUrl})
7
- }
@@ -1,21 +1,22 @@
1
1
 
2
- import {context} from "../context.js"
2
+ import {Driver} from "../driver/driver.js"
3
+ import type {Omni, TimelineFile} from "../timeline/index.js"
4
+ import {playbackTest} from "./routines/playback-test.js"
3
5
  import {waveformTest} from "./routines/waveform-test.js"
6
+ import {TimelineSchemaTest } from "./routines/timeline-setup.js"
4
7
  import {filmstripTest} from "./routines/filmstrip-test.js"
5
- import {transcriberTest} from "./routines/transcriber-test.js"
6
8
  import {setupTranscodeTest} from "./routines/transcode-test.js"
7
9
 
8
- const driver = await context.driver
9
- const results = document.querySelector(".results")!
10
+ const driver = await Driver.setup({workerUrl: new URL("../driver/driver.worker.bundle.min.js", import.meta.url)})
10
11
 
11
- const fetchButton = document.querySelector(".fetch")
12
- const importButton = document.querySelector(".import") as HTMLButtonElement
12
+ const transcodeCard = document.querySelector("[data-demo='transcode']") as HTMLElement
13
+ const filmstripCard = document.querySelector("[data-demo='filmstrip']") as HTMLElement
14
+ const waveformCard = document.querySelector("[data-demo='waveform']") as HTMLElement
15
+ const playbackCard = document.querySelector("[data-demo='playback']") as HTMLElement
16
+ const exportCard = document.querySelector("[data-demo='export']") as HTMLElement
17
+ const exportButton = exportCard.querySelector("[data-action='export']") as HTMLButtonElement
13
18
 
14
- fetchButton?.addEventListener("click", startDemoFetch)
15
- importButton?.addEventListener("click", startDemoImport)
16
-
17
- waveformTest()
18
- const transcriber = await transcriberTest(driver)
19
+ let exportState: {timeline: TimelineFile; omni: Omni} | null = null
19
20
 
20
21
  // hello world test
21
22
  {
@@ -24,45 +25,103 @@ const transcriber = await transcriberTest(driver)
24
25
  else console.error("❌ FAIL driver call didn't work")
25
26
  }
26
27
 
27
- // transcoding tests
28
- async function startDemoImport()
29
- {
30
- const [fileHandle] = await window.showOpenFilePicker()
31
- const file = await fileHandle.getFile()
32
- const transcode = setupTranscodeTest(driver, file)
33
- await filmstripTest(file)
34
- run(transcode, fileHandle.name)
35
- await transcriber.transcribe(file)
28
+ const setProgress = (card: HTMLElement, state: "idle" | "running" | "done") => {
29
+ const progress = card.querySelector(".progress") as HTMLProgressElement
30
+ const status = card.querySelector(".status") as HTMLSpanElement
31
+
32
+ if (state === "running") {
33
+ progress.removeAttribute("value")
34
+ status.textContent = "running"
35
+ } else if (state === "done") {
36
+ progress.value = 1
37
+ status.textContent = "done"
38
+ } else {
39
+ progress.value = 0
40
+ status.textContent = "idle"
41
+ }
36
42
  }
37
43
 
38
- async function startDemoFetch()
39
- {
44
+ const bindDemo = (
45
+ card: HTMLElement,
46
+ run: (file: File, card: HTMLElement) => Promise<void>
47
+ ) => {
48
+ const input = card.querySelector("input[type='file']") as HTMLInputElement
49
+ const button = card.querySelector("[data-action='run']") as HTMLButtonElement
40
50
 
41
- // which videos to run tests on
42
- const videos = [
43
- "/assets/temp/gl.mp4",
44
- ]
51
+ button.disabled = true
52
+ input.addEventListener("input", () => {
53
+ button.disabled = !input.files?.length
54
+ })
45
55
 
46
- // running each test in sequence
47
- for (const url of videos) {
48
- const transcode = setupTranscodeTest(driver, "/assets/temp/gl.mp4")
49
- run(transcode, url)
50
- }
56
+ button.addEventListener("click", async () => {
57
+ const file = input.files?.[0]
58
+ if (!file)
59
+ return
60
+
61
+ button.disabled = true
62
+ setProgress(card, "running")
63
+ try {
64
+ await run(file, card)
65
+ setProgress(card, "done")
66
+ } finally {
67
+ button.disabled = false
68
+ }
69
+ })
51
70
  }
52
71
 
53
- async function run(transcode: ReturnType<typeof setupTranscodeTest>, label: string) {
54
- // create result div
55
- const div = document.createElement("div")
56
- results.append(div)
72
+ bindDemo(transcodeCard, async (file, card) => {
73
+ const preview = card.querySelector(".demo-preview") as HTMLDivElement
74
+ const transcode = setupTranscodeTest(driver, file)
75
+ preview.replaceChildren(transcode.canvas)
76
+ await transcode.run()
77
+ })
57
78
 
58
- // add video label
59
- const p = document.createElement("p")
60
- p.textContent = label
61
- div.append(p)
79
+ bindDemo(filmstripCard, async (file, card) => {
80
+ await filmstripTest(file, card)
81
+ })
62
82
 
63
- // add the canvas to dom
64
- div.append(transcode.canvas)
83
+ bindDemo(waveformCard, async (file, card) => {
84
+ await waveformTest(driver, file, card)
85
+ })
65
86
 
66
- // run the test
67
- await transcode.run()
87
+ {
88
+ const input = playbackCard.querySelector("input[type='file']") as HTMLInputElement
89
+ input.addEventListener("input", async () => {
90
+ const file = input.files?.[0]
91
+ if (!file)
92
+ return
93
+
94
+ const {timeline, omni} = await TimelineSchemaTest(driver, file)
95
+ await playbackTest(timeline, omni, playbackCard)
96
+ })
97
+ }
98
+
99
+ {
100
+ const input = exportCard.querySelector("input[type='file']") as HTMLInputElement
101
+ input.addEventListener("input", async () => {
102
+ const file = input.files?.[0]
103
+ if (!file)
104
+ return
105
+
106
+ setProgress(exportCard, "running")
107
+ const {timeline, omni} = await TimelineSchemaTest(driver, file)
108
+ exportState = {timeline, omni}
109
+ exportButton.disabled = false
110
+
111
+ const preview = exportCard.querySelector(".demo-preview") as HTMLDivElement
112
+ const player = await omni.playback(timeline)
113
+ await player.seek(0)
114
+ preview.replaceChildren(player.canvas)
115
+ setProgress(exportCard, "done")
116
+ })
68
117
  }
118
+
119
+ exportButton.addEventListener("click", async () => {
120
+ if (!exportState)
121
+ return
122
+
123
+ setProgress(exportCard, "running")
124
+ await exportState.omni.render(exportState.timeline)
125
+ setProgress(exportCard, "done")
126
+ })
127
+