@aura3d/engine 4.0.8 → 4.1.1

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 (329) hide show
  1. package/dist/audio/index.d.ts +1 -0
  2. package/dist/audio/index.d.ts.map +1 -1
  3. package/dist/audio/index.js +1 -0
  4. package/dist/audio/index.js.map +1 -1
  5. package/dist/audio/synth/SampleSlices.d.ts +88 -0
  6. package/dist/audio/synth/SampleSlices.d.ts.map +1 -0
  7. package/dist/audio/synth/SampleSlices.js +185 -0
  8. package/dist/audio/synth/SampleSlices.js.map +1 -0
  9. package/dist/audio/synth/SynthCueBank.d.ts +102 -0
  10. package/dist/audio/synth/SynthCueBank.d.ts.map +1 -0
  11. package/dist/audio/synth/SynthCueBank.js +323 -0
  12. package/dist/audio/synth/SynthCueBank.js.map +1 -0
  13. package/dist/audio/synth/SynthLoops.d.ts +77 -0
  14. package/dist/audio/synth/SynthLoops.d.ts.map +1 -0
  15. package/dist/audio/synth/SynthLoops.js +147 -0
  16. package/dist/audio/synth/SynthLoops.js.map +1 -0
  17. package/dist/audio/synth/index.d.ts +9 -0
  18. package/dist/audio/synth/index.d.ts.map +1 -0
  19. package/dist/audio/synth/index.js +5 -0
  20. package/dist/audio/synth/index.js.map +1 -0
  21. package/dist/audio/synth/notes.d.ts +18 -0
  22. package/dist/audio/synth/notes.d.ts.map +1 -0
  23. package/dist/audio/synth/notes.js +35 -0
  24. package/dist/audio/synth/notes.js.map +1 -0
  25. package/dist/audio/synth/types.d.ts +84 -0
  26. package/dist/audio/synth/types.d.ts.map +1 -0
  27. package/dist/audio/synth/types.js +2 -0
  28. package/dist/audio/synth/types.js.map +1 -0
  29. package/dist/aura3d-cli/cli-help.d.ts.map +1 -1
  30. package/dist/aura3d-cli/cli-help.js +6 -0
  31. package/dist/aura3d-cli/cli-help.js.map +1 -1
  32. package/dist/aura3d-cli/cli.js +33 -0
  33. package/dist/aura3d-cli/cli.js.map +1 -1
  34. package/dist/aura3d-cli/commands/assets/gltfToolkit.d.ts +25 -0
  35. package/dist/aura3d-cli/commands/assets/gltfToolkit.d.ts.map +1 -0
  36. package/dist/aura3d-cli/commands/assets/gltfToolkit.js +59 -0
  37. package/dist/aura3d-cli/commands/assets/gltfToolkit.js.map +1 -0
  38. package/dist/aura3d-cli/commands/assets/importMeshy.d.ts +50 -0
  39. package/dist/aura3d-cli/commands/assets/importMeshy.d.ts.map +1 -0
  40. package/dist/aura3d-cli/commands/assets/importMeshy.js +112 -0
  41. package/dist/aura3d-cli/commands/assets/importMeshy.js.map +1 -0
  42. package/dist/aura3d-cli/commands/assets/index.d.ts +6 -0
  43. package/dist/aura3d-cli/commands/assets/index.d.ts.map +1 -0
  44. package/dist/aura3d-cli/commands/assets/index.js +54 -0
  45. package/dist/aura3d-cli/commands/assets/index.js.map +1 -0
  46. package/dist/aura3d-cli/commands/assets/mergeClips.d.ts +44 -0
  47. package/dist/aura3d-cli/commands/assets/mergeClips.d.ts.map +1 -0
  48. package/dist/aura3d-cli/commands/assets/mergeClips.js +103 -0
  49. package/dist/aura3d-cli/commands/assets/mergeClips.js.map +1 -0
  50. package/dist/aura3d-cli/commands/assets/optimize.d.ts +54 -0
  51. package/dist/aura3d-cli/commands/assets/optimize.d.ts.map +1 -0
  52. package/dist/aura3d-cli/commands/assets/optimize.js +76 -0
  53. package/dist/aura3d-cli/commands/assets/optimize.js.map +1 -0
  54. package/dist/aura3d-cli/commands/assets/optimizeVerb.d.ts +9 -0
  55. package/dist/aura3d-cli/commands/assets/optimizeVerb.d.ts.map +1 -0
  56. package/dist/aura3d-cli/commands/assets/optimizeVerb.js +40 -0
  57. package/dist/aura3d-cli/commands/assets/optimizeVerb.js.map +1 -0
  58. package/dist/aura3d-cli/commands/meshyLedger.d.ts +103 -0
  59. package/dist/aura3d-cli/commands/meshyLedger.d.ts.map +1 -0
  60. package/dist/aura3d-cli/commands/meshyLedger.js +308 -0
  61. package/dist/aura3d-cli/commands/meshyLedger.js.map +1 -0
  62. package/dist/aura3d-cli/commands/prd05/index.d.ts.map +1 -1
  63. package/dist/aura3d-cli/commands/prd05/index.js +8 -2
  64. package/dist/aura3d-cli/commands/prd05/index.js.map +1 -1
  65. package/dist/aura3d-cli/commands/registry.d.ts +1 -0
  66. package/dist/aura3d-cli/commands/registry.d.ts.map +1 -1
  67. package/dist/aura3d-cli/commands/registry.js +1 -0
  68. package/dist/aura3d-cli/commands/registry.js.map +1 -1
  69. package/dist/create-aura3d/index.js +1 -1
  70. package/dist/debug/index.d.ts +2 -0
  71. package/dist/debug/index.d.ts.map +1 -1
  72. package/dist/debug/index.js +1 -0
  73. package/dist/debug/index.js.map +1 -1
  74. package/dist/debug/safety/blackFrame.d.ts +119 -0
  75. package/dist/debug/safety/blackFrame.d.ts.map +1 -0
  76. package/dist/debug/safety/blackFrame.js +326 -0
  77. package/dist/debug/safety/blackFrame.js.map +1 -0
  78. package/dist/debug/safety/diagnosticsPanel.d.ts +70 -0
  79. package/dist/debug/safety/diagnosticsPanel.d.ts.map +1 -0
  80. package/dist/debug/safety/diagnosticsPanel.js +123 -0
  81. package/dist/debug/safety/diagnosticsPanel.js.map +1 -0
  82. package/dist/debug/safety/guard.d.ts +51 -0
  83. package/dist/debug/safety/guard.d.ts.map +1 -0
  84. package/dist/debug/safety/guard.js +64 -0
  85. package/dist/debug/safety/guard.js.map +1 -0
  86. package/dist/debug/safety/index.d.ts +50 -0
  87. package/dist/debug/safety/index.d.ts.map +1 -0
  88. package/dist/debug/safety/index.js +71 -0
  89. package/dist/debug/safety/index.js.map +1 -0
  90. package/dist/debug/safety/switches.d.ts +27 -0
  91. package/dist/debug/safety/switches.d.ts.map +1 -0
  92. package/dist/debug/safety/switches.js +23 -0
  93. package/dist/debug/safety/switches.js.map +1 -0
  94. package/dist/engine/agent-api/app/createAuraApp.d.ts.map +1 -1
  95. package/dist/engine/agent-api/app/createAuraApp.js +6 -0
  96. package/dist/engine/agent-api/app/createAuraApp.js.map +1 -1
  97. package/dist/engine/agent-api/app/frameLoop.d.ts +1 -1
  98. package/dist/engine/agent-api/app/frameLoop.d.ts.map +1 -1
  99. package/dist/engine/agent-api/app/frameLoop.js +8 -1
  100. package/dist/engine/agent-api/app/frameLoop.js.map +1 -1
  101. package/dist/engine/agent-api/app/runtimeNodes.d.ts.map +1 -1
  102. package/dist/engine/agent-api/app/runtimeNodes.js +15 -0
  103. package/dist/engine/agent-api/app/runtimeNodes.js.map +1 -1
  104. package/dist/engine/agent-api/assets/productionModels.d.ts +58 -0
  105. package/dist/engine/agent-api/assets/productionModels.d.ts.map +1 -0
  106. package/dist/engine/agent-api/assets/productionModels.js +103 -0
  107. package/dist/engine/agent-api/assets/productionModels.js.map +1 -0
  108. package/dist/engine/agent-api/compiler/customMaterial.d.ts +12 -0
  109. package/dist/engine/agent-api/compiler/customMaterial.d.ts.map +1 -1
  110. package/dist/engine/agent-api/compiler/customMaterial.js +23 -17
  111. package/dist/engine/agent-api/compiler/customMaterial.js.map +1 -1
  112. package/dist/engine/agent-api/compiler/errors.d.ts +1 -1
  113. package/dist/engine/agent-api/compiler/errors.d.ts.map +1 -1
  114. package/dist/engine/agent-api/compiler/errors.js.map +1 -1
  115. package/dist/engine/agent-api/compiler/lines.d.ts.map +1 -1
  116. package/dist/engine/agent-api/compiler/lines.js +10 -1
  117. package/dist/engine/agent-api/compiler/lines.js.map +1 -1
  118. package/dist/engine/agent-api/compiler/renderInput.d.ts.map +1 -1
  119. package/dist/engine/agent-api/compiler/renderInput.js +8 -0
  120. package/dist/engine/agent-api/compiler/renderInput.js.map +1 -1
  121. package/dist/engine/agent-api/diagnostics.d.ts +5 -0
  122. package/dist/engine/agent-api/diagnostics.d.ts.map +1 -1
  123. package/dist/engine/agent-api/diagnostics.js +15 -1
  124. package/dist/engine/agent-api/diagnostics.js.map +1 -1
  125. package/dist/engine/agent-api/game-kits/ballFlight.d.ts +145 -0
  126. package/dist/engine/agent-api/game-kits/ballFlight.d.ts.map +1 -0
  127. package/dist/engine/agent-api/game-kits/ballFlight.js +308 -0
  128. package/dist/engine/agent-api/game-kits/ballFlight.js.map +1 -0
  129. package/dist/engine/agent-api/game-kits/index.d.ts +9 -5
  130. package/dist/engine/agent-api/game-kits/index.d.ts.map +1 -1
  131. package/dist/engine/agent-api/game-kits/index.js +1 -0
  132. package/dist/engine/agent-api/game-kits/index.js.map +1 -1
  133. package/dist/engine/agent-api/game-kits/racketAthleteRig.d.ts +107 -0
  134. package/dist/engine/agent-api/game-kits/racketAthleteRig.d.ts.map +1 -0
  135. package/dist/engine/agent-api/game-kits/racketAthleteRig.js +178 -0
  136. package/dist/engine/agent-api/game-kits/racketAthleteRig.js.map +1 -0
  137. package/dist/engine/agent-api/game-kits/racketGeometry.d.ts +8 -0
  138. package/dist/engine/agent-api/game-kits/racketGeometry.d.ts.map +1 -0
  139. package/dist/engine/agent-api/game-kits/racketGeometry.js +73 -0
  140. package/dist/engine/agent-api/game-kits/racketGeometry.js.map +1 -0
  141. package/dist/engine/agent-api/game-kits/racketScoring.d.ts +53 -0
  142. package/dist/engine/agent-api/game-kits/racketScoring.d.ts.map +1 -0
  143. package/dist/engine/agent-api/game-kits/racketScoring.js +69 -0
  144. package/dist/engine/agent-api/game-kits/racketScoring.js.map +1 -0
  145. package/dist/engine/agent-api/game-kits/racketSports.d.ts +20 -6
  146. package/dist/engine/agent-api/game-kits/racketSports.d.ts.map +1 -1
  147. package/dist/engine/agent-api/game-kits/racketSports.js +15 -74
  148. package/dist/engine/agent-api/game-kits/racketSports.js.map +1 -1
  149. package/dist/engine/agent-api/index.d.ts +7 -0
  150. package/dist/engine/agent-api/index.d.ts.map +1 -1
  151. package/dist/engine/agent-api/index.js +5 -0
  152. package/dist/engine/agent-api/index.js.map +1 -1
  153. package/dist/engine/agent-api/nodes/batched.d.ts.map +1 -1
  154. package/dist/engine/agent-api/nodes/batched.js +63 -3
  155. package/dist/engine/agent-api/nodes/batched.js.map +1 -1
  156. package/dist/engine/agent-api/nodes/batchedState.d.ts +5 -0
  157. package/dist/engine/agent-api/nodes/batchedState.d.ts.map +1 -1
  158. package/dist/engine/agent-api/nodes/batchedState.js +10 -0
  159. package/dist/engine/agent-api/nodes/batchedState.js.map +1 -1
  160. package/dist/engine/agent-api/nodes/instances.js +1 -2
  161. package/dist/engine/agent-api/nodes/instances.js.map +1 -1
  162. package/dist/engine/agent-api/nodes/lines.d.ts.map +1 -1
  163. package/dist/engine/agent-api/nodes/lines.js +2 -1
  164. package/dist/engine/agent-api/nodes/lines.js.map +1 -1
  165. package/dist/engine/agent-api/nodes/mergeStatic.d.ts +26 -0
  166. package/dist/engine/agent-api/nodes/mergeStatic.d.ts.map +1 -0
  167. package/dist/engine/agent-api/nodes/mergeStatic.js +126 -0
  168. package/dist/engine/agent-api/nodes/mergeStatic.js.map +1 -0
  169. package/dist/engine/agent-api/nodes/scatter.d.ts +116 -0
  170. package/dist/engine/agent-api/nodes/scatter.d.ts.map +1 -0
  171. package/dist/engine/agent-api/nodes/scatter.js +211 -0
  172. package/dist/engine/agent-api/nodes/scatter.js.map +1 -0
  173. package/dist/engine/agent-api/nodes/scene.d.ts +9 -1
  174. package/dist/engine/agent-api/nodes/scene.d.ts.map +1 -1
  175. package/dist/engine/agent-api/nodes/scene.js +28 -2
  176. package/dist/engine/agent-api/nodes/scene.js.map +1 -1
  177. package/dist/engine/agent-api/nodes/types.d.ts +8 -0
  178. package/dist/engine/agent-api/nodes/types.d.ts.map +1 -1
  179. package/dist/engine/contracts/stubs/game.d.ts +0 -8
  180. package/dist/engine/contracts/stubs/game.d.ts.map +1 -1
  181. package/dist/engine/contracts/stubs/game.js +6 -0
  182. package/dist/engine/contracts/stubs/game.js.map +1 -1
  183. package/dist/engine/deprecated/advanced-runtime.js +2 -2
  184. package/dist/engine/deprecated/apps.js +2 -2
  185. package/dist/engine/deprecated/assets-browser.js +2 -2
  186. package/dist/engine/deprecated/contracts.js +2 -2
  187. package/dist/engine/deprecated/media-node.js +2 -2
  188. package/dist/engine/deprecated/production-runtime.js +2 -2
  189. package/dist/engine/deprecated/rendering-production-runtime.js +2 -2
  190. package/dist/engine/deprecated/rendering-webgpu.js +2 -2
  191. package/dist/engine/deprecated/rendering.js +2 -2
  192. package/dist/engine/deprecated/workflows-production.js +2 -2
  193. package/dist/engine/index.d.ts +1 -0
  194. package/dist/engine/index.d.ts.map +1 -1
  195. package/dist/engine/index.js +1 -0
  196. package/dist/engine/index.js.map +1 -1
  197. package/dist/engine/instances-model/InstancedModel.d.ts.map +1 -1
  198. package/dist/engine/instances-model/InstancedModel.js +2 -5
  199. package/dist/engine/instances-model/InstancedModel.js.map +1 -1
  200. package/dist/engine/production-runtime/TypedGLBActor.d.ts +6 -0
  201. package/dist/engine/production-runtime/TypedGLBActor.d.ts.map +1 -1
  202. package/dist/engine/production-runtime/TypedGLBActor.js +8 -1
  203. package/dist/engine/production-runtime/TypedGLBActor.js.map +1 -1
  204. package/dist/engine/production-runtime/actor/ModelTextureShare.d.ts +38 -0
  205. package/dist/engine/production-runtime/actor/ModelTextureShare.d.ts.map +1 -0
  206. package/dist/engine/production-runtime/actor/ModelTextureShare.js +65 -0
  207. package/dist/engine/production-runtime/actor/ModelTextureShare.js.map +1 -0
  208. package/dist/engine/public/index.d.ts +71 -67
  209. package/dist/engine/public/index.d.ts.map +1 -1
  210. package/dist/engine/public/index.js +59 -54
  211. package/dist/engine/public/index.js.map +1 -1
  212. package/dist/engine/qa/countedRng.d.ts +16 -0
  213. package/dist/engine/qa/countedRng.d.ts.map +1 -0
  214. package/dist/engine/qa/countedRng.js +40 -0
  215. package/dist/engine/qa/countedRng.js.map +1 -0
  216. package/dist/engine/qa/fixedStepLoop.d.ts +43 -0
  217. package/dist/engine/qa/fixedStepLoop.d.ts.map +1 -0
  218. package/dist/engine/qa/fixedStepLoop.js +83 -0
  219. package/dist/engine/qa/fixedStepLoop.js.map +1 -0
  220. package/dist/engine/qa/hooks.d.ts +80 -0
  221. package/dist/engine/qa/hooks.d.ts.map +1 -0
  222. package/dist/engine/qa/hooks.js +95 -0
  223. package/dist/engine/qa/hooks.js.map +1 -0
  224. package/dist/engine/qa/index.d.ts +10 -0
  225. package/dist/engine/qa/index.d.ts.map +1 -0
  226. package/dist/engine/qa/index.js +6 -0
  227. package/dist/engine/qa/index.js.map +1 -0
  228. package/dist/engine/qa/params.d.ts +38 -0
  229. package/dist/engine/qa/params.d.ts.map +1 -0
  230. package/dist/engine/qa/params.js +35 -0
  231. package/dist/engine/qa/params.js.map +1 -0
  232. package/dist/game/capture/captureFromUrl.d.ts +1 -1
  233. package/dist/game/capture/captureFromUrl.d.ts.map +1 -1
  234. package/dist/game/capture/index.d.ts +1 -1
  235. package/dist/game/capture/index.d.ts.map +1 -1
  236. package/dist/game/components.d.ts +1 -1
  237. package/dist/game/components.d.ts.map +1 -1
  238. package/dist/game/createGame.d.ts +1 -1
  239. package/dist/game/createGame.d.ts.map +1 -1
  240. package/dist/game/createGame.js +1 -1
  241. package/dist/game/createGame.js.map +1 -1
  242. package/dist/game/evidence/beacon.d.ts +1 -1
  243. package/dist/game/evidence/beacon.d.ts.map +1 -1
  244. package/dist/game/flagDefault.d.ts +8 -0
  245. package/dist/game/flagDefault.d.ts.map +1 -0
  246. package/dist/game/flagDefault.js +28 -0
  247. package/dist/game/flagDefault.js.map +1 -0
  248. package/dist/game/index.d.ts +4 -2
  249. package/dist/game/index.d.ts.map +1 -1
  250. package/dist/game/index.js +10 -3
  251. package/dist/game/index.js.map +1 -1
  252. package/dist/game/input/bindingStore.d.ts +87 -0
  253. package/dist/game/input/bindingStore.d.ts.map +1 -0
  254. package/dist/game/input/bindingStore.js +164 -0
  255. package/dist/game/input/bindingStore.js.map +1 -0
  256. package/dist/game/session/GameSession.d.ts +2 -2
  257. package/dist/game/session/GameSession.d.ts.map +1 -1
  258. package/dist/game/session/GameSession.js +1 -1
  259. package/dist/game/session/GameSession.js.map +1 -1
  260. package/dist/rendering/ForwardPass.d.ts +5 -0
  261. package/dist/rendering/ForwardPass.d.ts.map +1 -1
  262. package/dist/rendering/ForwardPass.js +75 -2
  263. package/dist/rendering/ForwardPass.js.map +1 -1
  264. package/dist/rendering/ShaderFailures.d.ts +77 -0
  265. package/dist/rendering/ShaderFailures.d.ts.map +1 -0
  266. package/dist/rendering/ShaderFailures.js +141 -0
  267. package/dist/rendering/ShaderFailures.js.map +1 -0
  268. package/dist/rendering/ShaderLibrary.js +5 -5
  269. package/dist/rendering/ShaderLibraryCore.js +1 -1
  270. package/dist/rendering/WebGL2Device.js +1 -1
  271. package/dist/rendering/WebGL2Device.js.map +1 -1
  272. package/dist/rendering/WebGPUDevice.js +1 -1
  273. package/dist/rendering/index.d.ts +2 -0
  274. package/dist/rendering/index.d.ts.map +1 -1
  275. package/dist/rendering/index.js +2 -0
  276. package/dist/rendering/index.js.map +1 -1
  277. package/dist/rendering/output/ToneMappingOperators.glsl.d.ts +1 -1
  278. package/dist/rendering/output/ToneMappingOperators.glsl.d.ts.map +1 -1
  279. package/dist/rendering/output/ToneMappingOperators.glsl.js +2 -0
  280. package/dist/rendering/output/ToneMappingOperators.glsl.js.map +1 -1
  281. package/dist/rendering/post/v2Stages.d.ts.map +1 -1
  282. package/dist/rendering/post/v2Stages.js +4 -0
  283. package/dist/rendering/post/v2Stages.js.map +1 -1
  284. package/dist/rendering/program/chunks/shadow_forward.glsl.d.ts +2 -2
  285. package/dist/rendering/program/chunks/shadow_forward.glsl.d.ts.map +1 -1
  286. package/dist/rendering/program/chunks/shadow_forward.glsl.js +1 -1
  287. package/dist/rendering/shaders/chunks/author/colorspace.glsl.d.ts +8 -0
  288. package/dist/rendering/shaders/chunks/author/colorspace.glsl.d.ts.map +1 -0
  289. package/dist/rendering/shaders/chunks/author/colorspace.glsl.js +20 -0
  290. package/dist/rendering/shaders/chunks/author/colorspace.glsl.js.map +1 -0
  291. package/dist/rendering/shaders/chunks/author/fog.glsl.d.ts +3 -0
  292. package/dist/rendering/shaders/chunks/author/fog.glsl.d.ts.map +1 -0
  293. package/dist/rendering/shaders/chunks/author/fog.glsl.js +18 -0
  294. package/dist/rendering/shaders/chunks/author/fog.glsl.js.map +1 -0
  295. package/dist/rendering/shaders/chunks/author/index.d.ts +16 -0
  296. package/dist/rendering/shaders/chunks/author/index.d.ts.map +1 -0
  297. package/dist/rendering/shaders/chunks/author/index.js +77 -0
  298. package/dist/rendering/shaders/chunks/author/index.js.map +1 -0
  299. package/dist/rendering/shaders/chunks/author/math.glsl.d.ts +3 -0
  300. package/dist/rendering/shaders/chunks/author/math.glsl.d.ts.map +1 -0
  301. package/dist/rendering/shaders/chunks/author/math.glsl.js +43 -0
  302. package/dist/rendering/shaders/chunks/author/math.glsl.js.map +1 -0
  303. package/dist/rendering/shaders/chunks/author/noise.glsl.d.ts +3 -0
  304. package/dist/rendering/shaders/chunks/author/noise.glsl.d.ts.map +1 -0
  305. package/dist/rendering/shaders/chunks/author/noise.glsl.js +94 -0
  306. package/dist/rendering/shaders/chunks/author/noise.glsl.js.map +1 -0
  307. package/dist/rendering/shaders/chunks/author/sky.glsl.d.ts +3 -0
  308. package/dist/rendering/shaders/chunks/author/sky.glsl.d.ts.map +1 -0
  309. package/dist/rendering/shaders/chunks/author/sky.glsl.js +28 -0
  310. package/dist/rendering/shaders/chunks/author/sky.glsl.js.map +1 -0
  311. package/dist/rendering/shaders/chunks/author/toon.glsl.d.ts +3 -0
  312. package/dist/rendering/shaders/chunks/author/toon.glsl.d.ts.map +1 -0
  313. package/dist/rendering/shaders/chunks/author/toon.glsl.js +21 -0
  314. package/dist/rendering/shaders/chunks/author/toon.glsl.js.map +1 -0
  315. package/dist/rendering/shaders/chunks/author/triplanar.glsl.d.ts +3 -0
  316. package/dist/rendering/shaders/chunks/author/triplanar.glsl.d.ts.map +1 -0
  317. package/dist/rendering/shaders/chunks/author/triplanar.glsl.js +14 -0
  318. package/dist/rendering/shaders/chunks/author/triplanar.glsl.js.map +1 -0
  319. package/dist/rendering/webgl2/LegacyPost.d.ts.map +1 -1
  320. package/dist/rendering/webgl2/LegacyPost.js +3 -2
  321. package/dist/rendering/webgl2/LegacyPost.js.map +1 -1
  322. package/package.json +29 -26
  323. package/templates/cinematic-scene/package.json +2 -2
  324. package/templates/mini-game/package.json +2 -2
  325. package/templates/product-viewer/package.json +2 -2
  326. package/templates/production-asset-inspector/package.json +1 -1
  327. package/templates/production-material-studio/package.json +1 -1
  328. package/templates/production-product-configurator/package.json +1 -1
  329. package/templates/production-product-viewer/package.json +1 -1
@@ -47,4 +47,5 @@ export { VoicePool } from "./game-sound/Voice.js";
47
47
  export type { VoiceCueSpec, VoiceRecord, VoicePriority } from "./game-sound/Voice.js";
48
48
  export { syncListener } from "./game-sound/listenerSync.js";
49
49
  export type { ListenerLike } from "./game-sound/listenerSync.js";
50
+ export * from "./synth/index.js";
50
51
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../packages/audio/src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../packages/audio/src/index.ts"],"names":[],"mappings":"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"}
@@ -29,4 +29,5 @@ export { probeFormat, formatExtension } from "./game-sound/formatProbe.js";
29
29
  export { measureLoudness, gainForTarget, MASTERING_TARGETS } from "./game-sound/loudness.js";
30
30
  export { VoicePool } from "./game-sound/Voice.js";
31
31
  export { syncListener } from "./game-sound/listenerSync.js";
32
+ export * from "./synth/index.js";
32
33
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/audio/src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAclF,OAAO,EAAE,8BAA8B,EAAE,8BAA8B,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAepJ,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,6BAA6B,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAYjK,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAG5D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAErE,OAAO,EAAE,UAAU,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AAE/F,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,eAAe,EACf,0BAA0B,EAC1B,mBAAmB,EACnB,yBAAyB,EACzB,gBAAgB,EACjB,MAAM,qBAAqB,CAAC;AAU7B,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAUxF,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,+EAA+E;AAC/E,2EAA2E;AAC3E,OAAO,EAAE,qBAAqB,IAAI,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAG3F,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjG,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1F,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/audio/src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAclF,OAAO,EAAE,8BAA8B,EAAE,8BAA8B,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAepJ,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,6BAA6B,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAYjK,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAG5D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAErE,OAAO,EAAE,UAAU,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AAE/F,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,eAAe,EACf,0BAA0B,EAC1B,mBAAmB,EACnB,yBAAyB,EACzB,gBAAgB,EACjB,MAAM,qBAAqB,CAAC;AAU7B,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAUxF,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,+EAA+E;AAC/E,2EAA2E;AAC3E,OAAO,EAAE,qBAAqB,IAAI,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAG3F,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjG,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1F,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD,cAAc,SAAS,CAAC"}
@@ -0,0 +1,88 @@
1
+ import type { SynthCueBank } from "./SynthCueBank.js";
2
+ import type { SynthBus, SynthContext } from "./types.js";
3
+ /** One sprite sheet holding several separately recorded takes of the same sound. */
4
+ export interface SampleSpriteSpec {
5
+ /** Where the sheet lives. `preload()` fetches it; `prepare()` decodes it once the bank is unlocked. */
6
+ readonly url?: string;
7
+ /** Start offset, in seconds, of each take inside the sheet. */
8
+ readonly offsets: readonly number[];
9
+ /** Length of every take, in seconds. */
10
+ readonly duration: number;
11
+ /** Procedural buffer played whole (no slicing) until the sheet decodes, or if it never does. */
12
+ readonly fallback?: (context: SynthContext) => AudioBuffer;
13
+ }
14
+ export interface SampleSlicePlayParams {
15
+ /** Linear gain on this play. Default 1. */
16
+ readonly gain?: number;
17
+ /** Stereo pan in -1..1. Omit for no panner. */
18
+ readonly pan?: number;
19
+ /** Playback rate multiplier. Default 1. */
20
+ readonly rate?: number;
21
+ /** Low-pass cutoff in Hz. Omit for no filter. */
22
+ readonly lowpass?: number;
23
+ /** Low-pass resonance. Default 0.5. */
24
+ readonly q?: number;
25
+ /** Which bus to play on. Default `sfx`. */
26
+ readonly bus?: SynthBus;
27
+ /** Force a take (tests). Skips the no-repeat pick and does not change the remembered take. */
28
+ readonly take?: number;
29
+ }
30
+ export interface SampleSlicesOptions<K extends string = string> {
31
+ readonly sprites: Readonly<Record<K, SampleSpriteSpec>>;
32
+ /** Uniform draw in [0, 1) used to pick the next take. Default: a seeded LCG (never `Math.random`). */
33
+ readonly random?: () => number;
34
+ /** Fetch used by `preload()`. Default `globalThis.fetch`. */
35
+ readonly fetch?: (url: string) => Promise<{
36
+ readonly ok: boolean;
37
+ arrayBuffer(): Promise<ArrayBuffer>;
38
+ }>;
39
+ }
40
+ /**
41
+ * Plays slices of recorded sprite sheets on a `SynthCueBank`'s buses.
42
+ *
43
+ * Several takes of one sound are recorded back to back in a sheet. Each play picks a take that is never the same as
44
+ * the previous one, plays only that slice, and runs it through an optional low-pass, gain and stereo panner. The
45
+ * sheet is fetched early, decoded after the bank unlocks, and until then (or if it never loads) a procedural
46
+ * fallback buffer stands in. The sound content and the way a game maps contacts to gain, pan and filter stay in
47
+ * the game.
48
+ */
49
+ export declare class SampleSlices<K extends string = string> {
50
+ private readonly bank;
51
+ private readonly sprites;
52
+ private readonly random;
53
+ private readonly fetchImpl;
54
+ private readonly downloads;
55
+ private readonly buffers;
56
+ private readonly fallbacks;
57
+ private readonly previous;
58
+ private readonly voices;
59
+ constructor(bank: SynthCueBank, options: SampleSlicesOptions<K>);
60
+ /** Start downloading every sheet. Safe to call before the context exists and repeatedly. A failed download is remembered as absent. */
61
+ preload(): Promise<void>;
62
+ /**
63
+ * Build the fallback buffers and decode the downloaded sheets. Call after `bank.unlock()`. Resolves when decoding
64
+ * is finished; plays before that use the fallback.
65
+ */
66
+ prepare(): Promise<void>;
67
+ /**
68
+ * Build the procedural fallback buffers now. Needs the bank's graph to exist (call right after `bank.unlock()` starts:
69
+ * the graph is created synchronously). `prepare()` calls it too; calling it earlier lets the very first play sound.
70
+ */
71
+ buildFallbacks(): void;
72
+ /** Supply a decoded sheet directly (tests, offline rendering, assets decoded elsewhere). */
73
+ setBuffer(name: K, buffer: AudioBuffer): void;
74
+ /** True once the sheet for `name` is decoded. */
75
+ has(name: K): boolean;
76
+ /** The take played last for `name`, or -1. */
77
+ lastTake(name: K): number;
78
+ /**
79
+ * Play one slice. Returns the take index played (-1 for the whole fallback buffer), or `null` when nothing sounded
80
+ * (bank locked, muted, not running, or no buffer yet and no fallback).
81
+ */
82
+ play(name: K, params?: SampleSlicePlayParams): number | null;
83
+ /** Stop every slice that is still sounding. */
84
+ stopAll(): void;
85
+ }
86
+ /** Convenience factory: `createSampleSlices(bank, { sprites })`. */
87
+ export declare function createSampleSlices<K extends string>(bank: SynthCueBank, options: SampleSlicesOptions<K>): SampleSlices<K>;
88
+ //# sourceMappingURL=SampleSlices.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SampleSlices.d.ts","sourceRoot":"","sources":["../../../../../packages/audio/src/synth/SampleSlices.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,185 @@
1
+ const defaultRandom = () => {
2
+ let state = 0x1badf00d;
3
+ return () => {
4
+ state = (Math.imul(state, 1664525) + 1013904223) >>> 0;
5
+ return state / 0x100000000;
6
+ };
7
+ };
8
+ /**
9
+ * Plays slices of recorded sprite sheets on a `SynthCueBank`'s buses.
10
+ *
11
+ * Several takes of one sound are recorded back to back in a sheet. Each play picks a take that is never the same as
12
+ * the previous one, plays only that slice, and runs it through an optional low-pass, gain and stereo panner. The
13
+ * sheet is fetched early, decoded after the bank unlocks, and until then (or if it never loads) a procedural
14
+ * fallback buffer stands in. The sound content and the way a game maps contacts to gain, pan and filter stay in
15
+ * the game.
16
+ */
17
+ export class SampleSlices {
18
+ bank;
19
+ sprites;
20
+ random;
21
+ fetchImpl;
22
+ downloads = new Map();
23
+ buffers = new Map();
24
+ fallbacks = new Map();
25
+ previous = new Map();
26
+ voices = new Set();
27
+ constructor(bank, options) {
28
+ this.bank = bank;
29
+ this.sprites = options.sprites;
30
+ this.random = options.random ?? defaultRandom();
31
+ this.fetchImpl = options.fetch ?? (typeof globalThis.fetch === "function" ? globalThis.fetch.bind(globalThis) : undefined);
32
+ }
33
+ /** Start downloading every sheet. Safe to call before the context exists and repeatedly. A failed download is remembered as absent. */
34
+ preload() {
35
+ const pending = [];
36
+ for (const [name, sprite] of Object.entries(this.sprites)) {
37
+ if (!sprite.url || this.downloads.has(name))
38
+ continue;
39
+ const fetchImpl = this.fetchImpl;
40
+ const download = fetchImpl
41
+ ? fetchImpl(sprite.url)
42
+ .then((response) => {
43
+ if (!response.ok)
44
+ throw new Error("Audio unavailable");
45
+ return response.arrayBuffer();
46
+ })
47
+ .catch(() => null)
48
+ : Promise.resolve(null);
49
+ this.downloads.set(name, download);
50
+ pending.push(download);
51
+ }
52
+ return Promise.all(pending).then(() => undefined);
53
+ }
54
+ /**
55
+ * Build the fallback buffers and decode the downloaded sheets. Call after `bank.unlock()`. Resolves when decoding
56
+ * is finished; plays before that use the fallback.
57
+ */
58
+ async prepare() {
59
+ const ctx = this.bank.context;
60
+ if (!ctx)
61
+ return;
62
+ this.preload();
63
+ this.buildFallbacks();
64
+ const decoder = ctx;
65
+ await Promise.all(Object.keys(this.sprites).map(async (name) => {
66
+ try {
67
+ const bytes = await this.downloads.get(name);
68
+ if (!bytes || typeof decoder.decodeAudioData !== "function")
69
+ return;
70
+ const buffer = await decoder.decodeAudioData(bytes);
71
+ if (buffer)
72
+ this.buffers.set(name, buffer);
73
+ }
74
+ catch {
75
+ // A sheet that will not decode keeps using its fallback.
76
+ }
77
+ }));
78
+ }
79
+ /**
80
+ * Build the procedural fallback buffers now. Needs the bank's graph to exist (call right after `bank.unlock()` starts:
81
+ * the graph is created synchronously). `prepare()` calls it too; calling it earlier lets the very first play sound.
82
+ */
83
+ buildFallbacks() {
84
+ const ctx = this.bank.context;
85
+ if (!ctx)
86
+ return;
87
+ for (const [name, sprite] of Object.entries(this.sprites)) {
88
+ if (sprite.fallback && !this.fallbacks.has(name))
89
+ this.fallbacks.set(name, sprite.fallback(ctx));
90
+ }
91
+ }
92
+ /** Supply a decoded sheet directly (tests, offline rendering, assets decoded elsewhere). */
93
+ setBuffer(name, buffer) {
94
+ this.buffers.set(name, buffer);
95
+ }
96
+ /** True once the sheet for `name` is decoded. */
97
+ has(name) {
98
+ return this.buffers.has(name);
99
+ }
100
+ /** The take played last for `name`, or -1. */
101
+ lastTake(name) {
102
+ return this.previous.get(name) ?? -1;
103
+ }
104
+ /**
105
+ * Play one slice. Returns the take index played (-1 for the whole fallback buffer), or `null` when nothing sounded
106
+ * (bank locked, muted, not running, or no buffer yet and no fallback).
107
+ */
108
+ play(name, params = {}) {
109
+ const sprite = this.sprites[name];
110
+ const ctx = this.bank.context;
111
+ const bus = params.bus === "music" ? this.bank.musicDestination : this.bank.sfxDestination;
112
+ if (!sprite || !ctx || !bus || this.bank.muted || !this.bank.running)
113
+ return null;
114
+ const decoded = this.buffers.get(name);
115
+ const buffer = decoded ?? this.fallbacks.get(name);
116
+ if (!buffer)
117
+ return null;
118
+ const source = ctx.createBufferSource();
119
+ source.buffer = buffer;
120
+ source.playbackRate.value = params.rate ?? 1;
121
+ const nodes = [];
122
+ let tail = source;
123
+ if (params.lowpass !== undefined) {
124
+ const filter = ctx.createBiquadFilter();
125
+ filter.type = "lowpass";
126
+ filter.Q.value = params.q ?? 0.5;
127
+ filter.frequency.value = params.lowpass;
128
+ tail = tail.connect(filter);
129
+ nodes.push(filter);
130
+ }
131
+ const gain = ctx.createGain();
132
+ gain.gain.value = params.gain ?? 1;
133
+ tail = tail.connect(gain);
134
+ nodes.push(gain);
135
+ const withPanner = params.pan !== undefined && typeof ctx.createStereoPanner === "function";
136
+ if (withPanner) {
137
+ const pan = ctx.createStereoPanner();
138
+ pan.pan.value = params.pan;
139
+ tail = tail.connect(pan);
140
+ nodes.push(pan);
141
+ }
142
+ tail.connect(bus);
143
+ const voice = { source, nodes };
144
+ this.voices.add(voice);
145
+ source.onended = () => {
146
+ this.voices.delete(voice);
147
+ source.disconnect();
148
+ for (const node of nodes)
149
+ node.disconnect();
150
+ };
151
+ if (decoded && sprite.offsets.length > 0) {
152
+ const takes = sprite.offsets.length;
153
+ let index;
154
+ if (params.take !== undefined) {
155
+ index = ((params.take % takes) + takes) % takes;
156
+ }
157
+ else {
158
+ // Never repeat the previous take: step 1..takes-1 forward from it.
159
+ const previous = this.previous.get(name) ?? -1;
160
+ index = (previous + 1 + Math.floor(this.random() * Math.max(1, takes - 1))) % takes;
161
+ this.previous.set(name, index);
162
+ }
163
+ source.start(ctx.currentTime, sprite.offsets[index], sprite.duration);
164
+ return index;
165
+ }
166
+ source.start(ctx.currentTime);
167
+ return -1;
168
+ }
169
+ /** Stop every slice that is still sounding. */
170
+ stopAll() {
171
+ for (const voice of this.voices) {
172
+ try {
173
+ voice.source.stop();
174
+ }
175
+ catch {
176
+ // Already ended.
177
+ }
178
+ }
179
+ }
180
+ }
181
+ /** Convenience factory: `createSampleSlices(bank, { sprites })`. */
182
+ export function createSampleSlices(bank, options) {
183
+ return new SampleSlices(bank, options);
184
+ }
185
+ //# sourceMappingURL=SampleSlices.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SampleSlices.js","sourceRoot":"","sources":["../../../../../packages/audio/src/synth/SampleSlices.ts"],"names":[],"mappings":"AAiDA,MAAM,aAAa,GAAG,GAAmB,EAAE;IACzC,IAAI,KAAK,GAAG,UAAU,CAAC;IACvB,OAAO,GAAG,EAAE;QACV,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QACvD,OAAO,KAAK,GAAG,WAAW,CAAC;IAC7B,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,OAAO,YAAY;IAWJ;IAVF,OAAO,CAA6C;IACpD,MAAM,CAAe;IACrB,SAAS,CAAkC;IAC3C,SAAS,GAAG,IAAI,GAAG,EAAuC,CAAC;IAC3D,OAAO,GAAG,IAAI,GAAG,EAAuB,CAAC;IACzC,SAAS,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC3C,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;IACrC,MAAM,GAAG,IAAI,GAAG,EAAS,CAAC;IAE3C,YACmB,IAAkB,EACnC,OAA+B;QADd,SAAI,GAAJ,IAAI,CAAc;QAGnC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,aAAa,EAAE,CAAC;QAChD,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,UAAU,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC,CAAE,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAqC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAClK,CAAC;IAED,uIAAuI;IACvI,OAAO;QACL,MAAM,OAAO,GAAuB,EAAE,CAAC;QACvC,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1D,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,SAAS;YACtD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YACjC,MAAM,QAAQ,GAAG,SAAS;gBACxB,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC;qBAClB,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;oBACjB,IAAI,CAAC,QAAQ,CAAC,EAAE;wBAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;oBACvD,OAAO,QAAQ,CAAC,WAAW,EAAE,CAAC;gBAChC,CAAC,CAAC;qBACD,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;gBACtB,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC1B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YACnC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC;QACD,OAAO,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,OAAO;QACX,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;QAC9B,IAAI,CAAC,GAAG;YAAE,OAAO;QACjB,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,MAAM,OAAO,GAAG,GAAkC,CAAC;QACnD,MAAM,OAAO,CAAC,GAAG,CACf,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YAC3C,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC7C,IAAI,CAAC,KAAK,IAAI,OAAO,OAAO,CAAC,eAAe,KAAK,UAAU;oBAAE,OAAO;gBACpE,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;gBACpD,IAAI,MAAM;oBAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC7C,CAAC;YAAC,MAAM,CAAC;gBACP,yDAAyD;YAC3D,CAAC;QACH,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,cAAc;QACZ,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;QAC9B,IAAI,CAAC,GAAG;YAAE,OAAO;QACjB,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1D,IAAI,MAAM,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;QACnG,CAAC;IACH,CAAC;IAED,4FAA4F;IAC5F,SAAS,CAAC,IAAO,EAAE,MAAmB;QACpC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACjC,CAAC;IAED,iDAAiD;IACjD,GAAG,CAAC,IAAO;QACT,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,8CAA8C;IAC9C,QAAQ,CAAC,IAAO;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACvC,CAAC;IAED;;;OAGG;IACH,IAAI,CAAC,IAAO,EAAE,SAAgC,EAAE;QAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;QAC9B,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;QAC3F,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAClF,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,MAAM,GAAG,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QACzB,MAAM,MAAM,GAAG,GAAG,CAAC,kBAAkB,EAAE,CAAC;QACxC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;QACvB,MAAM,CAAC,YAAY,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC;QAC7C,MAAM,KAAK,GAAgB,EAAE,CAAC;QAC9B,IAAI,IAAI,GAAc,MAAM,CAAC;QAC7B,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,GAAG,CAAC,kBAAkB,EAAE,CAAC;YACxC,MAAM,CAAC,IAAI,GAAG,SAAS,CAAC;YACxB,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,IAAI,GAAG,CAAC;YACjC,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC;YACxC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC5B,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrB,CAAC;QACD,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC;QACnC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC1B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,KAAK,SAAS,IAAI,OAAQ,GAAmD,CAAC,kBAAkB,KAAK,UAAU,CAAC;QAC7I,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,GAAG,GAAI,GAA6D,CAAC,kBAAkB,EAAE,CAAC;YAChG,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC,GAAa,CAAC;YACrC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACzB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClB,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAClB,MAAM,KAAK,GAAU,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QACvC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACvB,MAAM,CAAC,OAAO,GAAG,GAAG,EAAE;YACpB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC1B,MAAM,CAAC,UAAU,EAAE,CAAC;YACpB,KAAK,MAAM,IAAI,IAAI,KAAK;gBAAE,IAAI,CAAC,UAAU,EAAE,CAAC;QAC9C,CAAC,CAAC;QACF,IAAI,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzC,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;YACpC,IAAI,KAAa,CAAC;YAClB,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC9B,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC;YAClD,CAAC;iBAAM,CAAC;gBACN,mEAAmE;gBACnE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC/C,KAAK,GAAG,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;gBACpF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACjC,CAAC;YACD,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;YAChF,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC9B,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;IAED,+CAA+C;IAC/C,OAAO;QACL,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChC,IAAI,CAAC;gBACH,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACtB,CAAC;YAAC,MAAM,CAAC;gBACP,iBAAiB;YACnB,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAED,oEAAoE;AACpE,MAAM,UAAU,kBAAkB,CAAmB,IAAkB,EAAE,OAA+B;IACtG,OAAO,IAAI,YAAY,CAAI,IAAI,EAAE,OAAO,CAAC,CAAC;AAC5C,CAAC"}
@@ -0,0 +1,102 @@
1
+ import { AudioContextManager } from "../AudioContextManager.js";
2
+ import type { CuePlayParams, CueSpec, SynthContext, SynthVoice } from "./types.js";
3
+ export interface SynthCueBankOptions<K extends string = string> {
4
+ readonly cues: Readonly<Record<K, CueSpec>>;
5
+ /** The single `AudioContextManager` that owns the page's context. Default: a new manager (the kit never constructs a context itself). */
6
+ readonly manager?: AudioContextManager;
7
+ /** Inject a context directly (tests, offline rendering). */
8
+ readonly context?: SynthContext;
9
+ /** Master level when not muted. Default 0.9. */
10
+ readonly masterGain?: number;
11
+ readonly sfxGain?: number;
12
+ /** Music bus level before `setMusicLevel` is called. Default 0.0001 (silent). */
13
+ readonly musicGain?: number;
14
+ readonly muted?: boolean;
15
+ /** `KeyboardEvent.code` that toggles mute when `install()` is used. `false` disables. Default `"KeyM"`. */
16
+ readonly muteKey?: string | false;
17
+ /** Layers that may sound at once. Cues with `priority > 0` may use 1.5x. Default 24. */
18
+ readonly maxVoices?: number;
19
+ /** Noise generator seed (an LCG: `Math.random` is never used). */
20
+ readonly noiseSeed?: number;
21
+ /** Millisecond clock for cooldowns. Default `performance.now`/`Date.now`. */
22
+ readonly now?: () => number;
23
+ }
24
+ export interface InstallOptions {
25
+ /** Events that count as the first user gesture. Default pointerdown, keydown, touchstart. */
26
+ readonly unlockEvents?: readonly string[];
27
+ /** Called after every mute toggle made by the key binding. */
28
+ readonly onMuteChange?: (muted: boolean) => void;
29
+ }
30
+ interface EventTargetLike {
31
+ addEventListener(type: string, listener: (event: any) => void, options?: unknown): void;
32
+ removeEventListener(type: string, listener: (event: any) => void, options?: unknown): void;
33
+ }
34
+ /**
35
+ * A bank of procedurally synthesised sound cues on top of the page's one `AudioContextManager`.
36
+ *
37
+ * Nothing is sampled and no asset is loaded: a cue is a list of oscillator and filtered-noise layers with exponential
38
+ * envelopes and pitch glides. The bank adds what every game ended up hand-rolling: unlock on the first user gesture,
39
+ * a master mute (with a key binding), SFX and music buses, a voice budget with priorities, per-cue cooldown and
40
+ * concurrency limits, and music ducking.
41
+ */
42
+ export declare class SynthCueBank<K extends string = string> {
43
+ readonly manager: AudioContextManager;
44
+ private readonly injected;
45
+ private readonly cues;
46
+ private readonly masterLevel;
47
+ private readonly maxVoices;
48
+ private readonly muteKey;
49
+ private readonly now;
50
+ private readonly noise;
51
+ private ctx;
52
+ private master;
53
+ private sfxBus;
54
+ private musicBus;
55
+ private noiseBuffer;
56
+ private musicLevel;
57
+ private mutedValue;
58
+ private readonly sfxLevel;
59
+ private readonly voiceEnds;
60
+ private readonly cueEnds;
61
+ private readonly lastPlayed;
62
+ private readonly disposers;
63
+ constructor(options: SynthCueBankOptions<K>);
64
+ get muted(): boolean;
65
+ /** True once the context exists and is running. */
66
+ get running(): boolean;
67
+ /** The audio graph's context after `unlock()`, else null. */
68
+ get context(): SynthContext | null;
69
+ /** The music bus: connect a sequencer or loop here (the helpers in this kit do it for you). */
70
+ get musicDestination(): GainNode | null;
71
+ get sfxDestination(): GainNode | null;
72
+ /** Create the graph and resume the context. Call from a user gesture; safe to call repeatedly. */
73
+ unlock(): Promise<boolean>;
74
+ /**
75
+ * Wire the first-gesture unlock and the mute key onto `target` (default `globalThis`). Returns a function that
76
+ * removes every listener. Repeated mute key presses (`event.repeat`), modified presses and presses inside form
77
+ * fields are ignored.
78
+ */
79
+ install(target?: EventTargetLike, options?: InstallOptions): () => void;
80
+ setMuted(muted: boolean): void;
81
+ toggleMute(): boolean;
82
+ /** Music bus level (0..1) with a smooth transition. Remembered across `duck()`. */
83
+ setMusicLevel(level: number, timeConstant?: number): void;
84
+ /** Dip the music bus by `amount` (0..1) for `ms`, then recover. */
85
+ duck(amount?: number, ms?: number): void;
86
+ /** Trigger a cue. Returns true when it actually sounded (false when locked, muted, cooling down or over budget). */
87
+ play(name: K, params?: CuePlayParams): boolean;
88
+ /** Schedule one oscillator voice at an absolute time (used by sequencers). */
89
+ voice(voice: SynthVoice): void;
90
+ dispose(): void;
91
+ /** Lazily built looping noise buffer shared by noise layers and `createToneLoop`. */
92
+ getNoiseBuffer(): AudioBuffer | null;
93
+ private busNode;
94
+ private prune;
95
+ private tone;
96
+ private noiseHit;
97
+ private chain;
98
+ }
99
+ /** Convenience factory: `createCueBank({ cues })`. */
100
+ export declare function createCueBank<K extends string>(options: SynthCueBankOptions<K>): SynthCueBank<K>;
101
+ export {};
102
+ //# sourceMappingURL=SynthCueBank.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SynthCueBank.d.ts","sourceRoot":"","sources":["../../../../../packages/audio/src/synth/SynthCueBank.ts"],"names":[],"mappings":"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"}