@adatechnology/game-audio 0.3.6 → 0.5.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 (1054) hide show
  1. package/README.md +20 -0
  2. package/assets/sfx/CREDITOS.md +1046 -0
  3. package/assets/sfx/ambiente/ambience_city_day_01.ogg +0 -0
  4. package/assets/sfx/ambiente/ambience_city_day_02.ogg +0 -0
  5. package/assets/sfx/ambiente/ambience_construction_01.ogg +0 -0
  6. package/assets/sfx/ambiente/ambience_night_01.ogg +0 -0
  7. package/assets/sfx/ambiente/ambience_room_tone_01.ogg +0 -0
  8. package/assets/sfx/ambiente/ambience_room_tone_02.ogg +0 -0
  9. package/assets/sfx/ambiente/ambience_rural_day_01.ogg +0 -0
  10. package/assets/sfx/ambiente/ambience_rural_day_02.ogg +0 -0
  11. package/assets/sfx/ambiente/rain_loop_01.ogg +0 -0
  12. package/assets/sfx/ambiente/water_river_loop_01.ogg +0 -0
  13. package/assets/sfx/ambiente/water_river_loop_02.ogg +0 -0
  14. package/assets/sfx/ambiente/water_river_loop_03.ogg +0 -0
  15. package/assets/sfx/ambiente/water_splash_01.ogg +0 -0
  16. package/assets/sfx/ambiente/water_splash_02.ogg +0 -0
  17. package/assets/sfx/ambiente/water_splash_03.ogg +0 -0
  18. package/assets/sfx/ambiente/water_splash_04.ogg +0 -0
  19. package/assets/sfx/ambiente/water_splash_05.ogg +0 -0
  20. package/assets/sfx/ambiente/water_splash_06.ogg +0 -0
  21. package/assets/sfx/ambiente/water_splash_07.ogg +0 -0
  22. package/assets/sfx/ambiente/water_splash_08.ogg +0 -0
  23. package/assets/sfx/ambiente/water_splash_09.ogg +0 -0
  24. package/assets/sfx/ambiente/water_splash_10.ogg +0 -0
  25. package/assets/sfx/ambiente/water_splash_11.ogg +0 -0
  26. package/assets/sfx/ambiente/water_splash_12.ogg +0 -0
  27. package/assets/sfx/ambiente/water_splash_13.ogg +0 -0
  28. package/assets/sfx/ambiente/water_splash_14.ogg +0 -0
  29. package/assets/sfx/ambiente/water_splash_15.ogg +0 -0
  30. package/assets/sfx/armas/bolt_lift_medium_01.ogg +0 -0
  31. package/assets/sfx/armas/bolt_lift_medium_02.ogg +0 -0
  32. package/assets/sfx/armas/bolt_lift_medium_03.ogg +0 -0
  33. package/assets/sfx/armas/bolt_lift_medium_04.ogg +0 -0
  34. package/assets/sfx/armas/bolt_lift_medium_05.ogg +0 -0
  35. package/assets/sfx/armas/bolt_lock_medium_01.ogg +0 -0
  36. package/assets/sfx/armas/bolt_lock_medium_02.ogg +0 -0
  37. package/assets/sfx/armas/bolt_lock_medium_03.ogg +0 -0
  38. package/assets/sfx/armas/bolt_lock_medium_04.ogg +0 -0
  39. package/assets/sfx/armas/bolt_lock_medium_05.ogg +0 -0
  40. package/assets/sfx/armas/bolt_pull_heavy_01.ogg +0 -0
  41. package/assets/sfx/armas/bolt_pull_medium_01.ogg +0 -0
  42. package/assets/sfx/armas/bolt_pull_medium_02.ogg +0 -0
  43. package/assets/sfx/armas/bolt_pull_medium_03.ogg +0 -0
  44. package/assets/sfx/armas/bolt_pull_medium_04.ogg +0 -0
  45. package/assets/sfx/armas/bolt_pull_medium_05.ogg +0 -0
  46. package/assets/sfx/armas/bolt_pull_medium_06.ogg +0 -0
  47. package/assets/sfx/armas/bolt_push_heavy_01.ogg +0 -0
  48. package/assets/sfx/armas/bolt_push_medium_01.ogg +0 -0
  49. package/assets/sfx/armas/bolt_push_medium_02.ogg +0 -0
  50. package/assets/sfx/armas/bolt_push_medium_03.ogg +0 -0
  51. package/assets/sfx/armas/bolt_push_medium_04.ogg +0 -0
  52. package/assets/sfx/armas/bolt_push_medium_05.ogg +0 -0
  53. package/assets/sfx/armas/bolt_push_medium_06.ogg +0 -0
  54. package/assets/sfx/armas/casing_drop_concreto_01.ogg +0 -0
  55. package/assets/sfx/armas/casing_drop_concreto_02.ogg +0 -0
  56. package/assets/sfx/armas/casing_drop_concreto_03.ogg +0 -0
  57. package/assets/sfx/armas/casing_drop_metal_01.ogg +0 -0
  58. package/assets/sfx/armas/casing_drop_metal_02.ogg +0 -0
  59. package/assets/sfx/armas/casing_drop_metal_03.ogg +0 -0
  60. package/assets/sfx/armas/casing_drop_terra_01.ogg +0 -0
  61. package/assets/sfx/armas/casing_drop_terra_02.ogg +0 -0
  62. package/assets/sfx/armas/casing_drop_terra_03.ogg +0 -0
  63. package/assets/sfx/armas/charging_handle_pull_light_01.ogg +0 -0
  64. package/assets/sfx/armas/charging_handle_pull_light_02.ogg +0 -0
  65. package/assets/sfx/armas/charging_handle_pull_light_03.ogg +0 -0
  66. package/assets/sfx/armas/charging_handle_pull_light_04.ogg +0 -0
  67. package/assets/sfx/armas/charging_handle_pull_medium_01.ogg +0 -0
  68. package/assets/sfx/armas/charging_handle_pull_medium_02.ogg +0 -0
  69. package/assets/sfx/armas/charging_handle_pull_medium_03.ogg +0 -0
  70. package/assets/sfx/armas/charging_handle_pull_medium_04.ogg +0 -0
  71. package/assets/sfx/armas/charging_handle_pull_medium_05.ogg +0 -0
  72. package/assets/sfx/armas/charging_handle_release_medium_01.ogg +0 -0
  73. package/assets/sfx/armas/charging_handle_release_medium_02.ogg +0 -0
  74. package/assets/sfx/armas/charging_handle_release_medium_03.ogg +0 -0
  75. package/assets/sfx/armas/charging_handle_release_medium_04.ogg +0 -0
  76. package/assets/sfx/armas/charging_handle_release_medium_05.ogg +0 -0
  77. package/assets/sfx/armas/cylinder_close_light_01.ogg +0 -0
  78. package/assets/sfx/armas/cylinder_close_light_02.ogg +0 -0
  79. package/assets/sfx/armas/cylinder_close_light_03.ogg +0 -0
  80. package/assets/sfx/armas/cylinder_close_light_04.ogg +0 -0
  81. package/assets/sfx/armas/cylinder_close_light_05.ogg +0 -0
  82. package/assets/sfx/armas/cylinder_eject_light_01.ogg +0 -0
  83. package/assets/sfx/armas/cylinder_eject_light_02.ogg +0 -0
  84. package/assets/sfx/armas/cylinder_eject_light_03.ogg +0 -0
  85. package/assets/sfx/armas/cylinder_open_light_01.ogg +0 -0
  86. package/assets/sfx/armas/cylinder_open_light_02.ogg +0 -0
  87. package/assets/sfx/armas/cylinder_open_light_03.ogg +0 -0
  88. package/assets/sfx/armas/cylinder_open_light_04.ogg +0 -0
  89. package/assets/sfx/armas/cylinder_open_light_05.ogg +0 -0
  90. package/assets/sfx/armas/lever_close_medium_01.ogg +0 -0
  91. package/assets/sfx/armas/lever_close_medium_02.ogg +0 -0
  92. package/assets/sfx/armas/lever_open_medium_01.ogg +0 -0
  93. package/assets/sfx/armas/lever_open_medium_02.ogg +0 -0
  94. package/assets/sfx/armas/mag_out_heavy_01.ogg +0 -0
  95. package/assets/sfx/armas/mag_out_heavy_02.ogg +0 -0
  96. package/assets/sfx/armas/mag_out_light_01.ogg +0 -0
  97. package/assets/sfx/armas/mag_out_light_02.ogg +0 -0
  98. package/assets/sfx/armas/mag_out_light_03.ogg +0 -0
  99. package/assets/sfx/armas/mag_out_light_04.ogg +0 -0
  100. package/assets/sfx/armas/mag_out_medium_01.ogg +0 -0
  101. package/assets/sfx/armas/mag_out_medium_02.ogg +0 -0
  102. package/assets/sfx/armas/mag_out_medium_03.ogg +0 -0
  103. package/assets/sfx/armas/mag_seat_heavy_01.ogg +0 -0
  104. package/assets/sfx/armas/mag_seat_heavy_02.ogg +0 -0
  105. package/assets/sfx/armas/mag_seat_light_01.ogg +0 -0
  106. package/assets/sfx/armas/mag_seat_light_02.ogg +0 -0
  107. package/assets/sfx/armas/mag_seat_light_03.ogg +0 -0
  108. package/assets/sfx/armas/mag_seat_light_04.ogg +0 -0
  109. package/assets/sfx/armas/mag_seat_light_05.ogg +0 -0
  110. package/assets/sfx/armas/mag_seat_light_06.ogg +0 -0
  111. package/assets/sfx/armas/mag_seat_medium_01.ogg +0 -0
  112. package/assets/sfx/armas/mag_seat_medium_02.ogg +0 -0
  113. package/assets/sfx/armas/mag_seat_medium_03.ogg +0 -0
  114. package/assets/sfx/armas/pistol_22lr_close_01.ogg +0 -0
  115. package/assets/sfx/armas/pistol_22lr_close_02.ogg +0 -0
  116. package/assets/sfx/armas/pistol_22lr_far_01.ogg +0 -0
  117. package/assets/sfx/armas/pistol_22lr_far_02.ogg +0 -0
  118. package/assets/sfx/armas/pistol_22lr_far_03.ogg +0 -0
  119. package/assets/sfx/armas/pistol_22lr_far_04.ogg +0 -0
  120. package/assets/sfx/armas/pistol_45_close_01.ogg +0 -0
  121. package/assets/sfx/armas/pistol_45_close_02.ogg +0 -0
  122. package/assets/sfx/armas/pistol_45_close_03.ogg +0 -0
  123. package/assets/sfx/armas/pistol_45_close_04.ogg +0 -0
  124. package/assets/sfx/armas/pistol_45_close_05.ogg +0 -0
  125. package/assets/sfx/armas/pistol_45_far_01.ogg +0 -0
  126. package/assets/sfx/armas/pistol_45_far_02.ogg +0 -0
  127. package/assets/sfx/armas/pistol_45_far_03.ogg +0 -0
  128. package/assets/sfx/armas/pistol_45_far_04.ogg +0 -0
  129. package/assets/sfx/armas/pistol_9mm_close_01.ogg +0 -0
  130. package/assets/sfx/armas/pistol_9mm_close_02.ogg +0 -0
  131. package/assets/sfx/armas/pistol_9mm_close_03.ogg +0 -0
  132. package/assets/sfx/armas/pistol_9mm_close_04.ogg +0 -0
  133. package/assets/sfx/armas/pistol_9mm_close_05.ogg +0 -0
  134. package/assets/sfx/armas/pistol_9mm_close_06.ogg +0 -0
  135. package/assets/sfx/armas/pistol_9mm_far_01.ogg +0 -0
  136. package/assets/sfx/armas/pistol_9mm_far_02.ogg +0 -0
  137. package/assets/sfx/armas/pistol_9mm_far_03.ogg +0 -0
  138. package/assets/sfx/armas/pistol_9mm_far_04.ogg +0 -0
  139. package/assets/sfx/armas/pump_back_heavy_01.ogg +0 -0
  140. package/assets/sfx/armas/pump_back_heavy_02.ogg +0 -0
  141. package/assets/sfx/armas/pump_back_heavy_03.ogg +0 -0
  142. package/assets/sfx/armas/pump_back_heavy_04.ogg +0 -0
  143. package/assets/sfx/armas/pump_back_heavy_05.ogg +0 -0
  144. package/assets/sfx/armas/pump_forward_heavy_01.ogg +0 -0
  145. package/assets/sfx/armas/pump_forward_heavy_02.ogg +0 -0
  146. package/assets/sfx/armas/pump_forward_heavy_03.ogg +0 -0
  147. package/assets/sfx/armas/revolver_38_357_close_01.ogg +0 -0
  148. package/assets/sfx/armas/revolver_38_357_close_02.ogg +0 -0
  149. package/assets/sfx/armas/revolver_38_357_close_03.ogg +0 -0
  150. package/assets/sfx/armas/revolver_38_357_close_04.ogg +0 -0
  151. package/assets/sfx/armas/revolver_38_357_far_01.ogg +0 -0
  152. package/assets/sfx/armas/revolver_38_357_far_02.ogg +0 -0
  153. package/assets/sfx/armas/revolver_38_357_far_03.ogg +0 -0
  154. package/assets/sfx/armas/revolver_38_357_far_04.ogg +0 -0
  155. package/assets/sfx/armas/rifle_308_3006_close_01.ogg +0 -0
  156. package/assets/sfx/armas/rifle_308_3006_close_02.ogg +0 -0
  157. package/assets/sfx/armas/rifle_308_3006_close_03.ogg +0 -0
  158. package/assets/sfx/armas/rifle_308_3006_close_04.ogg +0 -0
  159. package/assets/sfx/armas/rifle_308_3006_close_05.ogg +0 -0
  160. package/assets/sfx/armas/rifle_308_3006_close_06.ogg +0 -0
  161. package/assets/sfx/armas/rifle_308_3006_far_01.ogg +0 -0
  162. package/assets/sfx/armas/rifle_308_3006_far_02.ogg +0 -0
  163. package/assets/sfx/armas/rifle_308_3006_far_03.ogg +0 -0
  164. package/assets/sfx/armas/rifle_308_3006_far_04.ogg +0 -0
  165. package/assets/sfx/armas/rifle_308_3006_far_05.ogg +0 -0
  166. package/assets/sfx/armas/rifle_308_3006_far_06.ogg +0 -0
  167. package/assets/sfx/armas/rifle_5_56_close_01.ogg +0 -0
  168. package/assets/sfx/armas/rifle_5_56_close_02.ogg +0 -0
  169. package/assets/sfx/armas/rifle_5_56_close_03.ogg +0 -0
  170. package/assets/sfx/armas/rifle_5_56_close_04.ogg +0 -0
  171. package/assets/sfx/armas/rifle_5_56_close_05.ogg +0 -0
  172. package/assets/sfx/armas/rifle_5_56_far_01.ogg +0 -0
  173. package/assets/sfx/armas/rifle_5_56_far_02.ogg +0 -0
  174. package/assets/sfx/armas/rifle_5_56_far_03.ogg +0 -0
  175. package/assets/sfx/armas/rifle_5_56_far_04.ogg +0 -0
  176. package/assets/sfx/armas/rifle_7_62x39_close_01.ogg +0 -0
  177. package/assets/sfx/armas/rifle_7_62x39_close_02.ogg +0 -0
  178. package/assets/sfx/armas/rifle_7_62x39_close_03.ogg +0 -0
  179. package/assets/sfx/armas/rifle_7_62x39_close_04.ogg +0 -0
  180. package/assets/sfx/armas/rifle_7_62x39_close_05.ogg +0 -0
  181. package/assets/sfx/armas/rifle_7_62x39_close_06.ogg +0 -0
  182. package/assets/sfx/armas/rifle_7_62x39_close_07.ogg +0 -0
  183. package/assets/sfx/armas/rifle_7_62x39_close_08.ogg +0 -0
  184. package/assets/sfx/armas/rifle_7_62x39_close_09.ogg +0 -0
  185. package/assets/sfx/armas/rifle_7_62x39_close_10.ogg +0 -0
  186. package/assets/sfx/armas/rifle_7_62x39_close_11.ogg +0 -0
  187. package/assets/sfx/armas/rifle_7_62x39_close_12.ogg +0 -0
  188. package/assets/sfx/armas/rifle_7_62x39_far_01.ogg +0 -0
  189. package/assets/sfx/armas/rifle_7_62x39_far_02.ogg +0 -0
  190. package/assets/sfx/armas/rifle_7_62x39_far_03.ogg +0 -0
  191. package/assets/sfx/armas/shell_insert_heavy_01.ogg +0 -0
  192. package/assets/sfx/armas/shell_insert_heavy_02.ogg +0 -0
  193. package/assets/sfx/armas/shell_insert_heavy_03.ogg +0 -0
  194. package/assets/sfx/armas/shell_insert_heavy_04.ogg +0 -0
  195. package/assets/sfx/armas/shell_insert_heavy_05.ogg +0 -0
  196. package/assets/sfx/armas/shell_insert_heavy_06.ogg +0 -0
  197. package/assets/sfx/armas/shell_insert_heavy_07.ogg +0 -0
  198. package/assets/sfx/armas/shell_insert_heavy_08.ogg +0 -0
  199. package/assets/sfx/armas/shell_insert_heavy_09.ogg +0 -0
  200. package/assets/sfx/armas/shotgun_12_close_01.ogg +0 -0
  201. package/assets/sfx/armas/shotgun_12_close_02.ogg +0 -0
  202. package/assets/sfx/armas/shotgun_12_close_03.ogg +0 -0
  203. package/assets/sfx/armas/shotgun_12_close_04.ogg +0 -0
  204. package/assets/sfx/armas/shotgun_12_close_05.ogg +0 -0
  205. package/assets/sfx/armas/shotgun_12_close_06.ogg +0 -0
  206. package/assets/sfx/armas/shotgun_12_far_01.ogg +0 -0
  207. package/assets/sfx/armas/shotgun_12_far_02.ogg +0 -0
  208. package/assets/sfx/armas/shotgun_12_far_03.ogg +0 -0
  209. package/assets/sfx/armas/shotgun_12_far_04.ogg +0 -0
  210. package/assets/sfx/armas/shotgun_12_far_05.ogg +0 -0
  211. package/assets/sfx/armas/shotgun_12_far_06.ogg +0 -0
  212. package/assets/sfx/armas/slide_release_light_01.ogg +0 -0
  213. package/assets/sfx/armas/slide_release_light_02.ogg +0 -0
  214. package/assets/sfx/armas/slide_release_light_03.ogg +0 -0
  215. package/assets/sfx/armas/slide_release_light_04.ogg +0 -0
  216. package/assets/sfx/armas/slide_release_light_05.ogg +0 -0
  217. package/assets/sfx/armas/slide_release_light_06.ogg +0 -0
  218. package/assets/sfx/armas/slide_release_medium_01.ogg +0 -0
  219. package/assets/sfx/armas/slide_release_medium_02.ogg +0 -0
  220. package/assets/sfx/armas/slide_release_medium_03.ogg +0 -0
  221. package/assets/sfx/armas/slide_release_medium_04.ogg +0 -0
  222. package/assets/sfx/armas/sniper_338_300wm_close_01.ogg +0 -0
  223. package/assets/sfx/armas/sniper_338_300wm_close_02.ogg +0 -0
  224. package/assets/sfx/armas/sniper_338_300wm_close_03.ogg +0 -0
  225. package/assets/sfx/armas/sniper_338_300wm_close_04.ogg +0 -0
  226. package/assets/sfx/armas/sniper_338_300wm_close_05.ogg +0 -0
  227. package/assets/sfx/armas/sniper_338_300wm_close_06.ogg +0 -0
  228. package/assets/sfx/armas/sniper_338_300wm_close_07.ogg +0 -0
  229. package/assets/sfx/armas/sniper_338_300wm_far_01.ogg +0 -0
  230. package/assets/sfx/armas/sniper_338_300wm_far_02.ogg +0 -0
  231. package/assets/sfx/armas/sniper_338_300wm_far_03.ogg +0 -0
  232. package/assets/sfx/armas/sniper_338_300wm_far_04.ogg +0 -0
  233. package/assets/sfx/armas/sniper_338_300wm_far_05.ogg +0 -0
  234. package/assets/sfx/armas/sniper_338_300wm_far_06.ogg +0 -0
  235. package/assets/sfx/armas/speedloader_light_01.ogg +0 -0
  236. package/assets/sfx/armas/speedloader_light_02.ogg +0 -0
  237. package/assets/sfx/armas/speedloader_light_03.ogg +0 -0
  238. package/assets/sfx/armas/speedloader_light_04.ogg +0 -0
  239. package/assets/sfx/armas/speedloader_light_05.ogg +0 -0
  240. package/assets/sfx/armas/speedloader_light_06.ogg +0 -0
  241. package/assets/sfx/armas/speedloader_light_07.ogg +0 -0
  242. package/assets/sfx/armas/speedloader_light_08.ogg +0 -0
  243. package/assets/sfx/armas/suppressed_pistol_close_01.ogg +0 -0
  244. package/assets/sfx/armas/suppressed_pistol_close_02.ogg +0 -0
  245. package/assets/sfx/armas/suppressed_pistol_close_03.ogg +0 -0
  246. package/assets/sfx/armas/suppressed_pistol_close_04.ogg +0 -0
  247. package/assets/sfx/armas/suppressed_pistol_close_05.ogg +0 -0
  248. package/assets/sfx/armas/suppressed_pistol_far_01.ogg +0 -0
  249. package/assets/sfx/armas/suppressed_pistol_far_02.ogg +0 -0
  250. package/assets/sfx/armas/suppressed_pistol_far_03.ogg +0 -0
  251. package/assets/sfx/armas/suppressed_pistol_far_04.ogg +0 -0
  252. package/assets/sfx/armas/suppressed_pistol_far_05.ogg +0 -0
  253. package/assets/sfx/armas/suppressed_rifle_close_01.ogg +0 -0
  254. package/assets/sfx/armas/suppressed_rifle_close_02.ogg +0 -0
  255. package/assets/sfx/armas/suppressed_rifle_close_03.ogg +0 -0
  256. package/assets/sfx/armas/suppressed_rifle_close_04.ogg +0 -0
  257. package/assets/sfx/armas/suppressed_rifle_far_01.ogg +0 -0
  258. package/assets/sfx/armas/suppressed_rifle_far_02.ogg +0 -0
  259. package/assets/sfx/armas/suppressed_rifle_far_03.ogg +0 -0
  260. package/assets/sfx/armas/suppressed_rifle_far_04.ogg +0 -0
  261. package/assets/sfx/explosoes-fogo/debris_rain_mixed_01.ogg +0 -0
  262. package/assets/sfx/explosoes-fogo/debris_rain_mixed_02.ogg +0 -0
  263. package/assets/sfx/explosoes-fogo/debris_rain_mixed_03.ogg +0 -0
  264. package/assets/sfx/explosoes-fogo/debris_rain_mixed_04.ogg +0 -0
  265. package/assets/sfx/explosoes-fogo/debris_rain_mixed_05.ogg +0 -0
  266. package/assets/sfx/explosoes-fogo/debris_rain_mixed_06.ogg +0 -0
  267. package/assets/sfx/explosoes-fogo/debris_rain_mixed_07.ogg +0 -0
  268. package/assets/sfx/explosoes-fogo/debris_rain_stone_01.ogg +0 -0
  269. package/assets/sfx/explosoes-fogo/debris_rain_stone_02.ogg +0 -0
  270. package/assets/sfx/explosoes-fogo/debris_rain_stone_03.ogg +0 -0
  271. package/assets/sfx/explosoes-fogo/debris_rain_stone_04.ogg +0 -0
  272. package/assets/sfx/explosoes-fogo/debris_rain_stone_05.ogg +0 -0
  273. package/assets/sfx/explosoes-fogo/debris_rain_stone_06.ogg +0 -0
  274. package/assets/sfx/explosoes-fogo/debris_rain_stone_07.ogg +0 -0
  275. package/assets/sfx/explosoes-fogo/debris_rain_stone_08.ogg +0 -0
  276. package/assets/sfx/explosoes-fogo/debris_rain_stone_09.ogg +0 -0
  277. package/assets/sfx/explosoes-fogo/explosion_big_01.ogg +0 -0
  278. package/assets/sfx/explosoes-fogo/explosion_big_02.ogg +0 -0
  279. package/assets/sfx/explosoes-fogo/explosion_big_03.ogg +0 -0
  280. package/assets/sfx/explosoes-fogo/explosion_big_04.ogg +0 -0
  281. package/assets/sfx/explosoes-fogo/explosion_big_05.ogg +0 -0
  282. package/assets/sfx/explosoes-fogo/explosion_car_01.ogg +0 -0
  283. package/assets/sfx/explosoes-fogo/explosion_car_02.ogg +0 -0
  284. package/assets/sfx/explosoes-fogo/explosion_car_03.ogg +0 -0
  285. package/assets/sfx/explosoes-fogo/explosion_car_04.ogg +0 -0
  286. package/assets/sfx/explosoes-fogo/explosion_far_close_01.ogg +0 -0
  287. package/assets/sfx/explosoes-fogo/explosion_far_close_02.ogg +0 -0
  288. package/assets/sfx/explosoes-fogo/explosion_far_close_03.ogg +0 -0
  289. package/assets/sfx/explosoes-fogo/explosion_far_close_04.ogg +0 -0
  290. package/assets/sfx/explosoes-fogo/explosion_flashbang_01.ogg +0 -0
  291. package/assets/sfx/explosoes-fogo/explosion_flashbang_02.ogg +0 -0
  292. package/assets/sfx/explosoes-fogo/explosion_grenade_01.ogg +0 -0
  293. package/assets/sfx/explosoes-fogo/explosion_grenade_02.ogg +0 -0
  294. package/assets/sfx/explosoes-fogo/explosion_grenade_03.ogg +0 -0
  295. package/assets/sfx/explosoes-fogo/explosion_grenade_04.ogg +0 -0
  296. package/assets/sfx/explosoes-fogo/explosion_grenade_05.ogg +0 -0
  297. package/assets/sfx/explosoes-fogo/explosion_grenade_06.ogg +0 -0
  298. package/assets/sfx/explosoes-fogo/explosion_small_bang_01.ogg +0 -0
  299. package/assets/sfx/explosoes-fogo/explosion_small_bang_02.ogg +0 -0
  300. package/assets/sfx/explosoes-fogo/explosion_small_bang_03.ogg +0 -0
  301. package/assets/sfx/explosoes-fogo/explosion_small_bang_04.ogg +0 -0
  302. package/assets/sfx/explosoes-fogo/explosion_small_bang_05.ogg +0 -0
  303. package/assets/sfx/explosoes-fogo/explosion_small_bang_06.ogg +0 -0
  304. package/assets/sfx/explosoes-fogo/explosion_small_bang_07.ogg +0 -0
  305. package/assets/sfx/explosoes-fogo/explosion_small_bang_08.ogg +0 -0
  306. package/assets/sfx/explosoes-fogo/explosion_small_bang_09.ogg +0 -0
  307. package/assets/sfx/explosoes-fogo/explosion_small_bang_10.ogg +0 -0
  308. package/assets/sfx/explosoes-fogo/fire_crackle_01.ogg +0 -0
  309. package/assets/sfx/explosoes-fogo/fire_crackle_02.ogg +0 -0
  310. package/assets/sfx/explosoes-fogo/fire_crackle_03.ogg +0 -0
  311. package/assets/sfx/explosoes-fogo/fire_crackle_05.ogg +0 -0
  312. package/assets/sfx/explosoes-fogo/fire_crackle_07.ogg +0 -0
  313. package/assets/sfx/explosoes-fogo/fire_extinguish_01.ogg +0 -0
  314. package/assets/sfx/explosoes-fogo/fire_extinguish_02.ogg +0 -0
  315. package/assets/sfx/explosoes-fogo/fire_ignite_01.ogg +0 -0
  316. package/assets/sfx/explosoes-fogo/fire_ignite_02.ogg +0 -0
  317. package/assets/sfx/explosoes-fogo/fire_ignite_03.ogg +0 -0
  318. package/assets/sfx/explosoes-fogo/fire_ignite_04.ogg +0 -0
  319. package/assets/sfx/explosoes-fogo/fire_loop_01.ogg +0 -0
  320. package/assets/sfx/explosoes-fogo/fire_loop_03.ogg +0 -0
  321. package/assets/sfx/explosoes-fogo/fire_loop_04.ogg +0 -0
  322. package/assets/sfx/explosoes-fogo/fire_loop_small_01.ogg +0 -0
  323. package/assets/sfx/explosoes-fogo/fire_pop_01.ogg +0 -0
  324. package/assets/sfx/explosoes-fogo/fire_pop_02.ogg +0 -0
  325. package/assets/sfx/explosoes-fogo/fire_pop_03.ogg +0 -0
  326. package/assets/sfx/explosoes-fogo/flamethrower_loop_01.ogg +0 -0
  327. package/assets/sfx/explosoes-fogo/gas_leak_01.ogg +0 -0
  328. package/assets/sfx/explosoes-fogo/molotov_break_ignite_01.ogg +0 -0
  329. package/assets/sfx/explosoes-fogo/molotov_break_ignite_02.ogg +0 -0
  330. package/assets/sfx/impactos/ceramic_hit_close_01.ogg +0 -0
  331. package/assets/sfx/impactos/concrete_block_drag_close_01.ogg +0 -0
  332. package/assets/sfx/impactos/concrete_block_drag_close_02.ogg +0 -0
  333. package/assets/sfx/impactos/concrete_block_drag_close_03.ogg +0 -0
  334. package/assets/sfx/impactos/concrete_block_drag_close_04.ogg +0 -0
  335. package/assets/sfx/impactos/concrete_block_drag_close_05.ogg +0 -0
  336. package/assets/sfx/impactos/concrete_block_drag_close_06.ogg +0 -0
  337. package/assets/sfx/impactos/concrete_block_drag_close_07.ogg +0 -0
  338. package/assets/sfx/impactos/crack_close_01.ogg +0 -0
  339. package/assets/sfx/impactos/crack_close_02.ogg +0 -0
  340. package/assets/sfx/impactos/crack_close_03.ogg +0 -0
  341. package/assets/sfx/impactos/crack_close_04.ogg +0 -0
  342. package/assets/sfx/impactos/crack_close_05.ogg +0 -0
  343. package/assets/sfx/impactos/crack_close_06.ogg +0 -0
  344. package/assets/sfx/impactos/crack_close_07.ogg +0 -0
  345. package/assets/sfx/impactos/crack_close_08.ogg +0 -0
  346. package/assets/sfx/impactos/crack_close_09.ogg +0 -0
  347. package/assets/sfx/impactos/crack_close_10.ogg +0 -0
  348. package/assets/sfx/impactos/crumble_close_01.ogg +0 -0
  349. package/assets/sfx/impactos/crumble_close_02.ogg +0 -0
  350. package/assets/sfx/impactos/crumble_close_03.ogg +0 -0
  351. package/assets/sfx/impactos/crumble_close_04.ogg +0 -0
  352. package/assets/sfx/impactos/crumble_close_05.ogg +0 -0
  353. package/assets/sfx/impactos/flesh_fruit_splat_close_01.ogg +0 -0
  354. package/assets/sfx/impactos/flesh_fruit_splat_close_02.ogg +0 -0
  355. package/assets/sfx/impactos/flesh_fruit_splat_close_03.ogg +0 -0
  356. package/assets/sfx/impactos/furniture_push_wood_close_01.ogg +0 -0
  357. package/assets/sfx/impactos/glass_blunt_heavy_close_01.ogg +0 -0
  358. package/assets/sfx/impactos/glass_blunt_heavy_close_02.ogg +0 -0
  359. package/assets/sfx/impactos/glass_blunt_heavy_close_03.ogg +0 -0
  360. package/assets/sfx/impactos/glass_blunt_heavy_close_04.ogg +0 -0
  361. package/assets/sfx/impactos/glass_blunt_heavy_close_05.ogg +0 -0
  362. package/assets/sfx/impactos/glass_blunt_light_close_01.ogg +0 -0
  363. package/assets/sfx/impactos/glass_blunt_light_close_02.ogg +0 -0
  364. package/assets/sfx/impactos/glass_blunt_light_close_03.ogg +0 -0
  365. package/assets/sfx/impactos/glass_blunt_light_close_04.ogg +0 -0
  366. package/assets/sfx/impactos/glass_blunt_light_close_05.ogg +0 -0
  367. package/assets/sfx/impactos/glass_blunt_medium_close_01.ogg +0 -0
  368. package/assets/sfx/impactos/glass_blunt_medium_close_02.ogg +0 -0
  369. package/assets/sfx/impactos/glass_blunt_medium_close_03.ogg +0 -0
  370. package/assets/sfx/impactos/glass_blunt_medium_close_04.ogg +0 -0
  371. package/assets/sfx/impactos/glass_blunt_medium_close_05.ogg +0 -0
  372. package/assets/sfx/impactos/glass_bottle_break_close_01.ogg +0 -0
  373. package/assets/sfx/impactos/glass_debris_fall_close_01.ogg +0 -0
  374. package/assets/sfx/impactos/glass_debris_fall_close_02.ogg +0 -0
  375. package/assets/sfx/impactos/glass_debris_fall_close_03.ogg +0 -0
  376. package/assets/sfx/impactos/glass_debris_fall_close_04.ogg +0 -0
  377. package/assets/sfx/impactos/glass_shatter_close_01.ogg +0 -0
  378. package/assets/sfx/impactos/glass_shatter_close_02.ogg +0 -0
  379. package/assets/sfx/impactos/glass_shatter_close_03.ogg +0 -0
  380. package/assets/sfx/impactos/glass_shatter_close_04.ogg +0 -0
  381. package/assets/sfx/impactos/glass_shatter_close_05.ogg +0 -0
  382. package/assets/sfx/impactos/glass_shatter_close_06.ogg +0 -0
  383. package/assets/sfx/impactos/glass_shatter_close_07.ogg +0 -0
  384. package/assets/sfx/impactos/glass_shatter_close_08.ogg +0 -0
  385. package/assets/sfx/impactos/glass_shatter_close_09.ogg +0 -0
  386. package/assets/sfx/impactos/gravel_hit_close_21.ogg +0 -0
  387. package/assets/sfx/impactos/gravel_hit_close_22.ogg +0 -0
  388. package/assets/sfx/impactos/gravel_hit_close_23.ogg +0 -0
  389. package/assets/sfx/impactos/gravel_hit_close_24.ogg +0 -0
  390. package/assets/sfx/impactos/gravel_hit_close_25.ogg +0 -0
  391. package/assets/sfx/impactos/gravel_hit_close_26.ogg +0 -0
  392. package/assets/sfx/impactos/gravel_hit_close_27.ogg +0 -0
  393. package/assets/sfx/impactos/gravel_hit_close_28.ogg +0 -0
  394. package/assets/sfx/impactos/gravel_hit_close_29.ogg +0 -0
  395. package/assets/sfx/impactos/impact_generic_light_close_01.ogg +0 -0
  396. package/assets/sfx/impactos/impact_generic_light_close_02.ogg +0 -0
  397. package/assets/sfx/impactos/impact_generic_light_close_03.ogg +0 -0
  398. package/assets/sfx/impactos/impact_generic_light_close_04.ogg +0 -0
  399. package/assets/sfx/impactos/impact_generic_light_close_05.ogg +0 -0
  400. package/assets/sfx/impactos/masonry_blunt_close_01.ogg +0 -0
  401. package/assets/sfx/impactos/masonry_blunt_close_02.ogg +0 -0
  402. package/assets/sfx/impactos/masonry_blunt_close_03.ogg +0 -0
  403. package/assets/sfx/impactos/masonry_blunt_close_04.ogg +0 -0
  404. package/assets/sfx/impactos/masonry_blunt_close_05.ogg +0 -0
  405. package/assets/sfx/impactos/masonry_blunt_close_06.ogg +0 -0
  406. package/assets/sfx/impactos/masonry_blunt_close_07.ogg +0 -0
  407. package/assets/sfx/impactos/masonry_bullet_close_01.ogg +0 -0
  408. package/assets/sfx/impactos/masonry_bullet_close_02.ogg +0 -0
  409. package/assets/sfx/impactos/masonry_bullet_close_03.ogg +0 -0
  410. package/assets/sfx/impactos/masonry_bullet_close_04.ogg +0 -0
  411. package/assets/sfx/impactos/masonry_bullet_close_05.ogg +0 -0
  412. package/assets/sfx/impactos/masonry_bullet_close_21.ogg +0 -0
  413. package/assets/sfx/impactos/masonry_bullet_close_22.ogg +0 -0
  414. package/assets/sfx/impactos/masonry_bullet_close_23.ogg +0 -0
  415. package/assets/sfx/impactos/masonry_bullet_close_24.ogg +0 -0
  416. package/assets/sfx/impactos/masonry_bullet_close_25.ogg +0 -0
  417. package/assets/sfx/impactos/masonry_bullet_close_26.ogg +0 -0
  418. package/assets/sfx/impactos/masonry_bullet_close_27.ogg +0 -0
  419. package/assets/sfx/impactos/masonry_bullet_close_28.ogg +0 -0
  420. package/assets/sfx/impactos/metal_blunt_close_01.ogg +0 -0
  421. package/assets/sfx/impactos/metal_blunt_close_02.ogg +0 -0
  422. package/assets/sfx/impactos/metal_blunt_close_03.ogg +0 -0
  423. package/assets/sfx/impactos/metal_blunt_close_04.ogg +0 -0
  424. package/assets/sfx/impactos/metal_blunt_close_05.ogg +0 -0
  425. package/assets/sfx/impactos/metal_blunt_heavy_close_01.ogg +0 -0
  426. package/assets/sfx/impactos/metal_blunt_heavy_close_02.ogg +0 -0
  427. package/assets/sfx/impactos/metal_blunt_heavy_close_03.ogg +0 -0
  428. package/assets/sfx/impactos/metal_blunt_heavy_close_04.ogg +0 -0
  429. package/assets/sfx/impactos/metal_blunt_heavy_close_05.ogg +0 -0
  430. package/assets/sfx/impactos/metal_blunt_light_close_01.ogg +0 -0
  431. package/assets/sfx/impactos/metal_blunt_light_close_02.ogg +0 -0
  432. package/assets/sfx/impactos/metal_blunt_light_close_03.ogg +0 -0
  433. package/assets/sfx/impactos/metal_blunt_light_close_04.ogg +0 -0
  434. package/assets/sfx/impactos/metal_blunt_light_close_05.ogg +0 -0
  435. package/assets/sfx/impactos/metal_blunt_medium_close_01.ogg +0 -0
  436. package/assets/sfx/impactos/metal_blunt_medium_close_02.ogg +0 -0
  437. package/assets/sfx/impactos/metal_blunt_medium_close_03.ogg +0 -0
  438. package/assets/sfx/impactos/metal_blunt_medium_close_04.ogg +0 -0
  439. package/assets/sfx/impactos/metal_blunt_medium_close_05.ogg +0 -0
  440. package/assets/sfx/impactos/metal_bullet_close_01.ogg +0 -0
  441. package/assets/sfx/impactos/metal_bullet_close_02.ogg +0 -0
  442. package/assets/sfx/impactos/metal_bullet_close_03.ogg +0 -0
  443. package/assets/sfx/impactos/metal_bullet_close_04.ogg +0 -0
  444. package/assets/sfx/impactos/metal_bullet_close_05.ogg +0 -0
  445. package/assets/sfx/impactos/metal_bullet_close_06.ogg +0 -0
  446. package/assets/sfx/impactos/metal_bullet_close_21.ogg +0 -0
  447. package/assets/sfx/impactos/metal_bullet_close_22.ogg +0 -0
  448. package/assets/sfx/impactos/metal_bullet_close_23.ogg +0 -0
  449. package/assets/sfx/impactos/metal_bullet_close_24.ogg +0 -0
  450. package/assets/sfx/impactos/metal_bullet_close_25.ogg +0 -0
  451. package/assets/sfx/impactos/metal_bullet_close_26.ogg +0 -0
  452. package/assets/sfx/impactos/metal_bullet_close_27.ogg +0 -0
  453. package/assets/sfx/impactos/metal_bullet_close_28.ogg +0 -0
  454. package/assets/sfx/impactos/metal_bullet_close_29.ogg +0 -0
  455. package/assets/sfx/impactos/metal_bullet_close_30.ogg +0 -0
  456. package/assets/sfx/impactos/metal_bullet_close_31.ogg +0 -0
  457. package/assets/sfx/impactos/metal_bullet_close_32.ogg +0 -0
  458. package/assets/sfx/impactos/metal_bullet_close_33.ogg +0 -0
  459. package/assets/sfx/impactos/metal_bullet_close_34.ogg +0 -0
  460. package/assets/sfx/impactos/metal_fall_close_01.ogg +0 -0
  461. package/assets/sfx/impactos/metal_fall_close_02.ogg +0 -0
  462. package/assets/sfx/impactos/metal_fall_close_03.ogg +0 -0
  463. package/assets/sfx/impactos/metal_fall_close_04.ogg +0 -0
  464. package/assets/sfx/impactos/metal_fall_close_05.ogg +0 -0
  465. package/assets/sfx/impactos/metal_fall_close_06.ogg +0 -0
  466. package/assets/sfx/impactos/metal_fall_close_07.ogg +0 -0
  467. package/assets/sfx/impactos/metal_fall_close_08.ogg +0 -0
  468. package/assets/sfx/impactos/metal_fall_close_09.ogg +0 -0
  469. package/assets/sfx/impactos/metal_fall_close_10.ogg +0 -0
  470. package/assets/sfx/impactos/metal_thin_close_01.ogg +0 -0
  471. package/assets/sfx/impactos/metal_thin_close_02.ogg +0 -0
  472. package/assets/sfx/impactos/metal_thin_close_03.ogg +0 -0
  473. package/assets/sfx/impactos/metal_thin_close_04.ogg +0 -0
  474. package/assets/sfx/impactos/metal_thin_close_05.ogg +0 -0
  475. package/assets/sfx/impactos/metal_thin_close_06.ogg +0 -0
  476. package/assets/sfx/impactos/metal_thin_close_07.ogg +0 -0
  477. package/assets/sfx/impactos/metal_thin_close_08.ogg +0 -0
  478. package/assets/sfx/impactos/metal_thin_close_09.ogg +0 -0
  479. package/assets/sfx/impactos/metal_thin_close_10.ogg +0 -0
  480. package/assets/sfx/impactos/metal_thin_close_11.ogg +0 -0
  481. package/assets/sfx/impactos/metal_thin_close_12.ogg +0 -0
  482. package/assets/sfx/impactos/metal_thin_close_13.ogg +0 -0
  483. package/assets/sfx/impactos/metal_thin_close_14.ogg +0 -0
  484. package/assets/sfx/impactos/metal_thin_close_15.ogg +0 -0
  485. package/assets/sfx/impactos/metal_thin_close_16.ogg +0 -0
  486. package/assets/sfx/impactos/metal_thin_close_17.ogg +0 -0
  487. package/assets/sfx/impactos/metal_thin_close_18.ogg +0 -0
  488. package/assets/sfx/impactos/metal_thin_close_19.ogg +0 -0
  489. package/assets/sfx/impactos/metal_thin_close_20.ogg +0 -0
  490. package/assets/sfx/impactos/metal_thin_close_21.ogg +0 -0
  491. package/assets/sfx/impactos/metal_thin_close_22.ogg +0 -0
  492. package/assets/sfx/impactos/metal_thin_close_23.ogg +0 -0
  493. package/assets/sfx/impactos/metal_thin_close_24.ogg +0 -0
  494. package/assets/sfx/impactos/metal_thin_close_25.ogg +0 -0
  495. package/assets/sfx/impactos/metal_thin_close_26.ogg +0 -0
  496. package/assets/sfx/impactos/paper_tear_close_01.ogg +0 -0
  497. package/assets/sfx/impactos/paper_tear_close_02.ogg +0 -0
  498. package/assets/sfx/impactos/plastic_hit_close_01.ogg +0 -0
  499. package/assets/sfx/impactos/plastic_hit_close_02.ogg +0 -0
  500. package/assets/sfx/impactos/plastic_hit_close_03.ogg +0 -0
  501. package/assets/sfx/impactos/plastic_hit_close_04.ogg +0 -0
  502. package/assets/sfx/impactos/ricochet_metal_close_21.ogg +0 -0
  503. package/assets/sfx/impactos/ricochet_metal_close_22.ogg +0 -0
  504. package/assets/sfx/impactos/ricochet_metal_close_23.ogg +0 -0
  505. package/assets/sfx/impactos/ricochet_metal_close_24.ogg +0 -0
  506. package/assets/sfx/impactos/ricochet_metal_close_25.ogg +0 -0
  507. package/assets/sfx/impactos/ricochet_metal_close_26.ogg +0 -0
  508. package/assets/sfx/impactos/ricochet_metal_close_27.ogg +0 -0
  509. package/assets/sfx/impactos/ricochet_metal_close_28.ogg +0 -0
  510. package/assets/sfx/impactos/rubble_falling_close_01.ogg +0 -0
  511. package/assets/sfx/impactos/rubble_falling_close_02.ogg +0 -0
  512. package/assets/sfx/impactos/rubble_falling_close_03.ogg +0 -0
  513. package/assets/sfx/impactos/rubble_falling_close_04.ogg +0 -0
  514. package/assets/sfx/impactos/rubble_falling_close_05.ogg +0 -0
  515. package/assets/sfx/impactos/rubble_falling_close_06.ogg +0 -0
  516. package/assets/sfx/impactos/rubble_falling_close_07.ogg +0 -0
  517. package/assets/sfx/impactos/rubble_falling_close_08.ogg +0 -0
  518. package/assets/sfx/impactos/rubble_falling_close_09.ogg +0 -0
  519. package/assets/sfx/impactos/soft_bullet_close_01.ogg +0 -0
  520. package/assets/sfx/impactos/soft_bullet_close_02.ogg +0 -0
  521. package/assets/sfx/impactos/soft_bullet_close_03.ogg +0 -0
  522. package/assets/sfx/impactos/soft_bullet_close_04.ogg +0 -0
  523. package/assets/sfx/impactos/soft_bullet_close_05.ogg +0 -0
  524. package/assets/sfx/impactos/soft_bullet_close_06.ogg +0 -0
  525. package/assets/sfx/impactos/soft_bullet_close_07.ogg +0 -0
  526. package/assets/sfx/impactos/soft_bullet_close_08.ogg +0 -0
  527. package/assets/sfx/impactos/soft_bullet_close_09.ogg +0 -0
  528. package/assets/sfx/impactos/soft_bullet_close_10.ogg +0 -0
  529. package/assets/sfx/impactos/soil_bullet_close_21.ogg +0 -0
  530. package/assets/sfx/impactos/soil_bullet_close_22.ogg +0 -0
  531. package/assets/sfx/impactos/soil_bullet_close_23.ogg +0 -0
  532. package/assets/sfx/impactos/wood_blunt_heavy_close_01.ogg +0 -0
  533. package/assets/sfx/impactos/wood_blunt_heavy_close_02.ogg +0 -0
  534. package/assets/sfx/impactos/wood_blunt_heavy_close_03.ogg +0 -0
  535. package/assets/sfx/impactos/wood_blunt_heavy_close_04.ogg +0 -0
  536. package/assets/sfx/impactos/wood_blunt_heavy_close_05.ogg +0 -0
  537. package/assets/sfx/impactos/wood_blunt_light_close_01.ogg +0 -0
  538. package/assets/sfx/impactos/wood_blunt_light_close_02.ogg +0 -0
  539. package/assets/sfx/impactos/wood_blunt_light_close_03.ogg +0 -0
  540. package/assets/sfx/impactos/wood_blunt_light_close_04.ogg +0 -0
  541. package/assets/sfx/impactos/wood_blunt_light_close_05.ogg +0 -0
  542. package/assets/sfx/impactos/wood_blunt_medium_close_01.ogg +0 -0
  543. package/assets/sfx/impactos/wood_blunt_medium_close_02.ogg +0 -0
  544. package/assets/sfx/impactos/wood_blunt_medium_close_03.ogg +0 -0
  545. package/assets/sfx/impactos/wood_blunt_medium_close_04.ogg +0 -0
  546. package/assets/sfx/impactos/wood_blunt_medium_close_05.ogg +0 -0
  547. package/assets/sfx/impactos/wood_fall_close_01.ogg +0 -0
  548. package/assets/sfx/impactos/wood_fall_close_02.ogg +0 -0
  549. package/assets/sfx/impactos/wood_fall_close_03.ogg +0 -0
  550. package/assets/sfx/impactos/wood_fall_close_04.ogg +0 -0
  551. package/assets/sfx/impactos/wood_fall_close_05.ogg +0 -0
  552. package/assets/sfx/impactos/wood_fall_close_06.ogg +0 -0
  553. package/assets/sfx/impactos/wood_fall_close_07.ogg +0 -0
  554. package/assets/sfx/impactos/wood_fall_close_08.ogg +0 -0
  555. package/assets/sfx/impactos/wood_fall_close_09.ogg +0 -0
  556. package/assets/sfx/impactos/wood_hit_close_01.ogg +0 -0
  557. package/assets/sfx/impactos/wood_hit_close_02.ogg +0 -0
  558. package/assets/sfx/impactos/wood_hit_close_03.ogg +0 -0
  559. package/assets/sfx/impactos/wood_hit_close_04.ogg +0 -0
  560. package/assets/sfx/impactos/wood_hit_close_05.ogg +0 -0
  561. package/assets/sfx/impactos/wood_hit_close_06.ogg +0 -0
  562. package/assets/sfx/impactos/wood_hit_close_07.ogg +0 -0
  563. package/assets/sfx/impactos/wood_hit_close_08.ogg +0 -0
  564. package/assets/sfx/impactos/wood_hit_close_09.ogg +0 -0
  565. package/assets/sfx/impactos/wood_hit_close_10.ogg +0 -0
  566. package/assets/sfx/impactos/wood_hit_close_11.ogg +0 -0
  567. package/assets/sfx/impactos/wood_hit_close_12.ogg +0 -0
  568. package/assets/sfx/impactos/wood_hit_close_13.ogg +0 -0
  569. package/assets/sfx/impactos/wood_hit_close_14.ogg +0 -0
  570. package/assets/sfx/impactos/wood_hit_close_21.ogg +0 -0
  571. package/assets/sfx/impactos/wood_hit_close_22.ogg +0 -0
  572. package/assets/sfx/impactos/wood_hit_close_23.ogg +0 -0
  573. package/assets/sfx/impactos/wood_hit_close_24.ogg +0 -0
  574. package/assets/sfx/impactos/wood_hit_close_25.ogg +0 -0
  575. package/assets/sfx/impactos/wood_hit_close_26.ogg +0 -0
  576. package/assets/sfx/impactos/wood_hit_close_27.ogg +0 -0
  577. package/assets/sfx/itens-portas/backpack_open_shut_01.ogg +0 -0
  578. package/assets/sfx/itens-portas/backpack_open_shut_02.ogg +0 -0
  579. package/assets/sfx/itens-portas/backpack_open_shut_03.ogg +0 -0
  580. package/assets/sfx/itens-portas/backpack_open_shut_04.ogg +0 -0
  581. package/assets/sfx/itens-portas/backpack_open_shut_05.ogg +0 -0
  582. package/assets/sfx/itens-portas/backpack_open_shut_06.ogg +0 -0
  583. package/assets/sfx/itens-portas/book_open_shut_01.ogg +0 -0
  584. package/assets/sfx/itens-portas/book_open_shut_02.ogg +0 -0
  585. package/assets/sfx/itens-portas/book_open_shut_03.ogg +0 -0
  586. package/assets/sfx/itens-portas/book_open_shut_04.ogg +0 -0
  587. package/assets/sfx/itens-portas/book_open_shut_05.ogg +0 -0
  588. package/assets/sfx/itens-portas/book_open_shut_06.ogg +0 -0
  589. package/assets/sfx/itens-portas/book_open_shut_07.ogg +0 -0
  590. package/assets/sfx/itens-portas/book_open_shut_08.ogg +0 -0
  591. package/assets/sfx/itens-portas/book_open_shut_09.ogg +0 -0
  592. package/assets/sfx/itens-portas/book_open_shut_10.ogg +0 -0
  593. package/assets/sfx/itens-portas/book_open_shut_11.ogg +0 -0
  594. package/assets/sfx/itens-portas/door_creak_01.ogg +0 -0
  595. package/assets/sfx/itens-portas/door_creak_02.ogg +0 -0
  596. package/assets/sfx/itens-portas/door_creak_03.ogg +0 -0
  597. package/assets/sfx/itens-portas/door_creak_06.ogg +0 -0
  598. package/assets/sfx/itens-portas/door_creak_07.ogg +0 -0
  599. package/assets/sfx/itens-portas/door_glass_sliding_01.ogg +0 -0
  600. package/assets/sfx/itens-portas/door_glass_sliding_02.ogg +0 -0
  601. package/assets/sfx/itens-portas/door_glass_sliding_03.ogg +0 -0
  602. package/assets/sfx/itens-portas/door_glass_sliding_04.ogg +0 -0
  603. package/assets/sfx/itens-portas/door_knock_01.ogg +0 -0
  604. package/assets/sfx/itens-portas/door_lock_unlock_01.ogg +0 -0
  605. package/assets/sfx/itens-portas/door_lock_unlock_02.ogg +0 -0
  606. package/assets/sfx/itens-portas/door_lock_unlock_03.ogg +0 -0
  607. package/assets/sfx/itens-portas/door_lock_unlock_04.ogg +0 -0
  608. package/assets/sfx/itens-portas/door_lock_unlock_05.ogg +0 -0
  609. package/assets/sfx/itens-portas/door_lock_unlock_06.ogg +0 -0
  610. package/assets/sfx/itens-portas/door_lock_unlock_07.ogg +0 -0
  611. package/assets/sfx/itens-portas/door_lock_unlock_08.ogg +0 -0
  612. package/assets/sfx/itens-portas/door_lock_unlock_09.ogg +0 -0
  613. package/assets/sfx/itens-portas/door_lock_unlock_10.ogg +0 -0
  614. package/assets/sfx/itens-portas/door_lock_unlock_11.ogg +0 -0
  615. package/assets/sfx/itens-portas/door_locked_rattle_01.ogg +0 -0
  616. package/assets/sfx/itens-portas/door_locked_rattle_02.ogg +0 -0
  617. package/assets/sfx/itens-portas/door_locked_rattle_03.ogg +0 -0
  618. package/assets/sfx/itens-portas/door_metal_open_shut_01.ogg +0 -0
  619. package/assets/sfx/itens-portas/door_metal_open_shut_02.ogg +0 -0
  620. package/assets/sfx/itens-portas/door_metal_open_shut_03.ogg +0 -0
  621. package/assets/sfx/itens-portas/door_metal_open_shut_04.ogg +0 -0
  622. package/assets/sfx/itens-portas/door_metal_open_shut_05.ogg +0 -0
  623. package/assets/sfx/itens-portas/door_metal_open_shut_06.ogg +0 -0
  624. package/assets/sfx/itens-portas/door_metal_open_shut_07.ogg +0 -0
  625. package/assets/sfx/itens-portas/door_slam_wood_01.ogg +0 -0
  626. package/assets/sfx/itens-portas/door_slam_wood_02.ogg +0 -0
  627. package/assets/sfx/itens-portas/door_slam_wood_03.ogg +0 -0
  628. package/assets/sfx/itens-portas/door_slam_wood_04.ogg +0 -0
  629. package/assets/sfx/itens-portas/door_wood_open_01.ogg +0 -0
  630. package/assets/sfx/itens-portas/door_wood_open_02.ogg +0 -0
  631. package/assets/sfx/itens-portas/door_wood_open_03.ogg +0 -0
  632. package/assets/sfx/itens-portas/door_wood_open_04.ogg +0 -0
  633. package/assets/sfx/itens-portas/door_wood_shut_01.ogg +0 -0
  634. package/assets/sfx/itens-portas/door_wood_shut_02.ogg +0 -0
  635. package/assets/sfx/itens-portas/door_wood_shut_03.ogg +0 -0
  636. package/assets/sfx/itens-portas/door_wood_shut_04.ogg +0 -0
  637. package/assets/sfx/itens-portas/door_wood_shut_05.ogg +0 -0
  638. package/assets/sfx/itens-portas/door_wood_shut_06.ogg +0 -0
  639. package/assets/sfx/itens-portas/door_wood_shut_07.ogg +0 -0
  640. package/assets/sfx/itens-portas/door_wood_shut_08.ogg +0 -0
  641. package/assets/sfx/itens-portas/drawer_open_01.ogg +0 -0
  642. package/assets/sfx/itens-portas/drawer_open_02.ogg +0 -0
  643. package/assets/sfx/itens-portas/drawer_shut_01.ogg +0 -0
  644. package/assets/sfx/itens-portas/drawer_shut_02.ogg +0 -0
  645. package/assets/sfx/itens-portas/item_drop_bag_01.ogg +0 -0
  646. package/assets/sfx/itens-portas/item_drop_bag_02.ogg +0 -0
  647. package/assets/sfx/itens-portas/item_drop_glass_01.ogg +0 -0
  648. package/assets/sfx/itens-portas/item_drop_metal_01.ogg +0 -0
  649. package/assets/sfx/itens-portas/item_drop_metal_02.ogg +0 -0
  650. package/assets/sfx/itens-portas/item_drop_metal_03.ogg +0 -0
  651. package/assets/sfx/itens-portas/item_drop_metal_04.ogg +0 -0
  652. package/assets/sfx/itens-portas/item_drop_metal_05.ogg +0 -0
  653. package/assets/sfx/itens-portas/item_drop_paper_01.ogg +0 -0
  654. package/assets/sfx/itens-portas/item_pickup_coins_01.ogg +0 -0
  655. package/assets/sfx/itens-portas/item_pickup_coins_02.ogg +0 -0
  656. package/assets/sfx/itens-portas/item_pickup_generic_01.ogg +0 -0
  657. package/assets/sfx/itens-portas/item_pickup_generic_02.ogg +0 -0
  658. package/assets/sfx/itens-portas/item_pickup_generic_03.ogg +0 -0
  659. package/assets/sfx/itens-portas/item_pickup_generic_04.ogg +0 -0
  660. package/assets/sfx/itens-portas/item_pickup_leather_01.ogg +0 -0
  661. package/assets/sfx/itens-portas/item_pickup_leather_02.ogg +0 -0
  662. package/assets/sfx/itens-portas/item_pickup_leather_03.ogg +0 -0
  663. package/assets/sfx/itens-portas/item_pickup_leather_04.ogg +0 -0
  664. package/assets/sfx/itens-portas/item_pickup_leather_05.ogg +0 -0
  665. package/assets/sfx/itens-portas/item_setdown_01.ogg +0 -0
  666. package/assets/sfx/itens-portas/item_setdown_02.ogg +0 -0
  667. package/assets/sfx/itens-portas/keys_jingle_01.ogg +0 -0
  668. package/assets/sfx/itens-portas/keys_jingle_02.ogg +0 -0
  669. package/assets/sfx/itens-portas/keys_jingle_03.ogg +0 -0
  670. package/assets/sfx/itens-portas/keys_jingle_04.ogg +0 -0
  671. package/assets/sfx/itens-portas/keys_jingle_05.ogg +0 -0
  672. package/assets/sfx/itens-portas/keys_jingle_06.ogg +0 -0
  673. package/assets/sfx/itens-portas/keys_jingle_07.ogg +0 -0
  674. package/assets/sfx/itens-portas/lever_pull_01.ogg +0 -0
  675. package/assets/sfx/itens-portas/lever_pull_02.ogg +0 -0
  676. package/assets/sfx/itens-portas/lever_pull_03.ogg +0 -0
  677. package/assets/sfx/itens-portas/lever_pull_04.ogg +0 -0
  678. package/assets/sfx/itens-portas/lever_pull_05.ogg +0 -0
  679. package/assets/sfx/itens-portas/lever_pull_06.ogg +0 -0
  680. package/assets/sfx/itens-portas/metal_latch_01.ogg +0 -0
  681. package/assets/sfx/itens-portas/metal_latch_02.ogg +0 -0
  682. package/assets/sfx/itens-portas/plates_hit_01.ogg +0 -0
  683. package/assets/sfx/itens-portas/plates_hit_02.ogg +0 -0
  684. package/assets/sfx/itens-portas/plates_hit_03.ogg +0 -0
  685. package/assets/sfx/itens-portas/plates_hit_04.ogg +0 -0
  686. package/assets/sfx/itens-portas/plates_hit_05.ogg +0 -0
  687. package/assets/sfx/itens-portas/plates_hit_06.ogg +0 -0
  688. package/assets/sfx/itens-portas/plates_hit_07.ogg +0 -0
  689. package/assets/sfx/itens-portas/plates_hit_08.ogg +0 -0
  690. package/assets/sfx/itens-portas/plates_hit_09.ogg +0 -0
  691. package/assets/sfx/itens-portas/plates_hit_10.ogg +0 -0
  692. package/assets/sfx/itens-portas/plates_slide_01.ogg +0 -0
  693. package/assets/sfx/itens-portas/plates_slide_02.ogg +0 -0
  694. package/assets/sfx/itens-portas/plates_slide_03.ogg +0 -0
  695. package/assets/sfx/itens-portas/plates_slide_04.ogg +0 -0
  696. package/assets/sfx/itens-portas/saw_wood_01.ogg +0 -0
  697. package/assets/sfx/itens-portas/switch_click_01.ogg +0 -0
  698. package/assets/sfx/itens-portas/switch_click_02.ogg +0 -0
  699. package/assets/sfx/itens-portas/switch_click_03.ogg +0 -0
  700. package/assets/sfx/itens-portas/switch_click_04.ogg +0 -0
  701. package/assets/sfx/itens-portas/toilet_flush_01.ogg +0 -0
  702. package/assets/sfx/itens-portas/tools_handling_01.ogg +0 -0
  703. package/assets/sfx/itens-portas/tools_handling_02.ogg +0 -0
  704. package/assets/sfx/itens-portas/tools_handling_03.ogg +0 -0
  705. package/assets/sfx/itens-portas/tools_handling_04.ogg +0 -0
  706. package/assets/sfx/itens-portas/tools_handling_05.ogg +0 -0
  707. package/assets/sfx/itens-portas/tools_handling_06.ogg +0 -0
  708. package/assets/sfx/itens-portas/tools_handling_07.ogg +0 -0
  709. package/assets/sfx/itens-portas/tools_handling_08.ogg +0 -0
  710. package/assets/sfx/itens-portas/tools_handling_09.ogg +0 -0
  711. package/assets/sfx/itens-portas/tools_handling_10.ogg +0 -0
  712. package/assets/sfx/itens-portas/tools_handling_11.ogg +0 -0
  713. package/assets/sfx/itens-portas/tools_handling_12.ogg +0 -0
  714. package/assets/sfx/itens-portas/tools_handling_13.ogg +0 -0
  715. package/assets/sfx/itens-portas/tools_handling_14.ogg +0 -0
  716. package/assets/sfx/itens-portas/tools_handling_15.ogg +0 -0
  717. package/assets/sfx/itens-portas/tools_handling_16.ogg +0 -0
  718. package/assets/sfx/itens-portas/water_drip_01.ogg +0 -0
  719. package/assets/sfx/itens-portas/water_drip_02.ogg +0 -0
  720. package/assets/sfx/itens-portas/water_drip_03.ogg +0 -0
  721. package/assets/sfx/itens-portas/water_drip_04.ogg +0 -0
  722. package/assets/sfx/itens-portas/water_faucet_01.ogg +0 -0
  723. package/assets/sfx/itens-portas/water_faucet_02.ogg +0 -0
  724. package/assets/sfx/itens-portas/water_faucet_03.ogg +0 -0
  725. package/assets/sfx/itens-portas/water_faucet_04.ogg +0 -0
  726. package/assets/sfx/itens-portas/water_faucet_05.ogg +0 -0
  727. package/assets/sfx/itens-portas/water_faucet_06.ogg +0 -0
  728. package/assets/sfx/itens-portas/water_faucet_07.ogg +0 -0
  729. package/assets/sfx/itens-portas/water_faucet_08.ogg +0 -0
  730. package/assets/sfx/itens-portas/water_faucet_09.ogg +0 -0
  731. package/assets/sfx/itens-portas/water_faucet_10.ogg +0 -0
  732. package/assets/sfx/manifest.json +11959 -0
  733. package/assets/sfx/personagem/axe_chop_01.ogg +0 -0
  734. package/assets/sfx/personagem/axe_chop_02.ogg +0 -0
  735. package/assets/sfx/personagem/blunt_hit_metal_01.ogg +0 -0
  736. package/assets/sfx/personagem/blunt_hit_metal_02.ogg +0 -0
  737. package/assets/sfx/personagem/blunt_hit_metal_03.ogg +0 -0
  738. package/assets/sfx/personagem/blunt_hit_metal_04.ogg +0 -0
  739. package/assets/sfx/personagem/blunt_hit_metal_05.ogg +0 -0
  740. package/assets/sfx/personagem/body_fall_01.ogg +0 -0
  741. package/assets/sfx/personagem/body_fall_02.ogg +0 -0
  742. package/assets/sfx/personagem/body_fall_03.ogg +0 -0
  743. package/assets/sfx/personagem/body_fall_04.ogg +0 -0
  744. package/assets/sfx/personagem/body_fall_05.ogg +0 -0
  745. package/assets/sfx/personagem/cloth_rustle_01.ogg +0 -0
  746. package/assets/sfx/personagem/cloth_rustle_02.ogg +0 -0
  747. package/assets/sfx/personagem/cloth_rustle_03.ogg +0 -0
  748. package/assets/sfx/personagem/cloth_rustle_04.ogg +0 -0
  749. package/assets/sfx/personagem/cloth_rustle_05.ogg +0 -0
  750. package/assets/sfx/personagem/cloth_rustle_06.ogg +0 -0
  751. package/assets/sfx/personagem/cloth_rustle_07.ogg +0 -0
  752. package/assets/sfx/personagem/cloth_rustle_08.ogg +0 -0
  753. package/assets/sfx/personagem/cloth_rustle_09.ogg +0 -0
  754. package/assets/sfx/personagem/cloth_rustle_10.ogg +0 -0
  755. package/assets/sfx/personagem/cloth_rustle_11.ogg +0 -0
  756. package/assets/sfx/personagem/cloth_rustle_12.ogg +0 -0
  757. package/assets/sfx/personagem/cloth_rustle_13.ogg +0 -0
  758. package/assets/sfx/personagem/cloth_rustle_14.ogg +0 -0
  759. package/assets/sfx/personagem/drink_gulp_01.ogg +0 -0
  760. package/assets/sfx/personagem/drink_gulp_02.ogg +0 -0
  761. package/assets/sfx/personagem/drink_gulp_03.ogg +0 -0
  762. package/assets/sfx/personagem/footstep_carpet_alt_01.ogg +0 -0
  763. package/assets/sfx/personagem/footstep_carpet_alt_02.ogg +0 -0
  764. package/assets/sfx/personagem/footstep_carpet_alt_03.ogg +0 -0
  765. package/assets/sfx/personagem/footstep_carpet_alt_04.ogg +0 -0
  766. package/assets/sfx/personagem/footstep_carpet_alt_05.ogg +0 -0
  767. package/assets/sfx/personagem/footstep_concrete_alt_01.ogg +0 -0
  768. package/assets/sfx/personagem/footstep_concrete_alt_02.ogg +0 -0
  769. package/assets/sfx/personagem/footstep_concrete_alt_03.ogg +0 -0
  770. package/assets/sfx/personagem/footstep_concrete_alt_04.ogg +0 -0
  771. package/assets/sfx/personagem/footstep_concrete_alt_05.ogg +0 -0
  772. package/assets/sfx/personagem/footstep_concrete_run_01.ogg +0 -0
  773. package/assets/sfx/personagem/footstep_concrete_run_02.ogg +0 -0
  774. package/assets/sfx/personagem/footstep_concrete_run_03.ogg +0 -0
  775. package/assets/sfx/personagem/footstep_concrete_run_04.ogg +0 -0
  776. package/assets/sfx/personagem/footstep_concrete_run_05.ogg +0 -0
  777. package/assets/sfx/personagem/footstep_concrete_walk_01.ogg +0 -0
  778. package/assets/sfx/personagem/footstep_concrete_walk_02.ogg +0 -0
  779. package/assets/sfx/personagem/footstep_concrete_walk_03.ogg +0 -0
  780. package/assets/sfx/personagem/footstep_concrete_walk_04.ogg +0 -0
  781. package/assets/sfx/personagem/footstep_concrete_walk_05.ogg +0 -0
  782. package/assets/sfx/personagem/footstep_dirt_run_01.ogg +0 -0
  783. package/assets/sfx/personagem/footstep_dirt_run_02.ogg +0 -0
  784. package/assets/sfx/personagem/footstep_dirt_run_03.ogg +0 -0
  785. package/assets/sfx/personagem/footstep_dirt_run_04.ogg +0 -0
  786. package/assets/sfx/personagem/footstep_dirt_run_05.ogg +0 -0
  787. package/assets/sfx/personagem/footstep_dirt_walk_01.ogg +0 -0
  788. package/assets/sfx/personagem/footstep_dirt_walk_02.ogg +0 -0
  789. package/assets/sfx/personagem/footstep_dirt_walk_03.ogg +0 -0
  790. package/assets/sfx/personagem/footstep_dirt_walk_04.ogg +0 -0
  791. package/assets/sfx/personagem/footstep_dirt_walk_05.ogg +0 -0
  792. package/assets/sfx/personagem/footstep_generic_alt_01.ogg +0 -0
  793. package/assets/sfx/personagem/footstep_generic_alt_02.ogg +0 -0
  794. package/assets/sfx/personagem/footstep_generic_alt_03.ogg +0 -0
  795. package/assets/sfx/personagem/footstep_generic_alt_04.ogg +0 -0
  796. package/assets/sfx/personagem/footstep_generic_alt_05.ogg +0 -0
  797. package/assets/sfx/personagem/footstep_generic_alt_06.ogg +0 -0
  798. package/assets/sfx/personagem/footstep_generic_alt_07.ogg +0 -0
  799. package/assets/sfx/personagem/footstep_generic_alt_08.ogg +0 -0
  800. package/assets/sfx/personagem/footstep_generic_alt_09.ogg +0 -0
  801. package/assets/sfx/personagem/footstep_generic_alt_10.ogg +0 -0
  802. package/assets/sfx/personagem/footstep_grass_alt2_01.ogg +0 -0
  803. package/assets/sfx/personagem/footstep_grass_alt2_02.ogg +0 -0
  804. package/assets/sfx/personagem/footstep_grass_alt2_03.ogg +0 -0
  805. package/assets/sfx/personagem/footstep_grass_alt2_04.ogg +0 -0
  806. package/assets/sfx/personagem/footstep_grass_alt_01.ogg +0 -0
  807. package/assets/sfx/personagem/footstep_grass_alt_02.ogg +0 -0
  808. package/assets/sfx/personagem/footstep_grass_alt_03.ogg +0 -0
  809. package/assets/sfx/personagem/footstep_grass_alt_04.ogg +0 -0
  810. package/assets/sfx/personagem/footstep_grass_alt_05.ogg +0 -0
  811. package/assets/sfx/personagem/footstep_grass_run_01.ogg +0 -0
  812. package/assets/sfx/personagem/footstep_grass_run_02.ogg +0 -0
  813. package/assets/sfx/personagem/footstep_grass_run_03.ogg +0 -0
  814. package/assets/sfx/personagem/footstep_grass_run_04.ogg +0 -0
  815. package/assets/sfx/personagem/footstep_grass_run_05.ogg +0 -0
  816. package/assets/sfx/personagem/footstep_grass_walk_01.ogg +0 -0
  817. package/assets/sfx/personagem/footstep_grass_walk_02.ogg +0 -0
  818. package/assets/sfx/personagem/footstep_grass_walk_03.ogg +0 -0
  819. package/assets/sfx/personagem/footstep_grass_walk_04.ogg +0 -0
  820. package/assets/sfx/personagem/footstep_grass_walk_05.ogg +0 -0
  821. package/assets/sfx/personagem/footstep_hard_alt_01.ogg +0 -0
  822. package/assets/sfx/personagem/footstep_hard_alt_02.ogg +0 -0
  823. package/assets/sfx/personagem/footstep_hard_alt_03.ogg +0 -0
  824. package/assets/sfx/personagem/footstep_hard_alt_04.ogg +0 -0
  825. package/assets/sfx/personagem/footstep_hard_alt_05.ogg +0 -0
  826. package/assets/sfx/personagem/footstep_hard_alt_06.ogg +0 -0
  827. package/assets/sfx/personagem/footstep_hard_alt_07.ogg +0 -0
  828. package/assets/sfx/personagem/footstep_hard_alt_08.ogg +0 -0
  829. package/assets/sfx/personagem/footstep_hard_alt_09.ogg +0 -0
  830. package/assets/sfx/personagem/footstep_metal_run_01.ogg +0 -0
  831. package/assets/sfx/personagem/footstep_metal_run_02.ogg +0 -0
  832. package/assets/sfx/personagem/footstep_metal_run_03.ogg +0 -0
  833. package/assets/sfx/personagem/footstep_metal_run_04.ogg +0 -0
  834. package/assets/sfx/personagem/footstep_metal_run_05.ogg +0 -0
  835. package/assets/sfx/personagem/footstep_metal_walk_01.ogg +0 -0
  836. package/assets/sfx/personagem/footstep_metal_walk_02.ogg +0 -0
  837. package/assets/sfx/personagem/footstep_metal_walk_03.ogg +0 -0
  838. package/assets/sfx/personagem/footstep_metal_walk_04.ogg +0 -0
  839. package/assets/sfx/personagem/footstep_metal_walk_05.ogg +0 -0
  840. package/assets/sfx/personagem/footstep_snow_alt_01.ogg +0 -0
  841. package/assets/sfx/personagem/footstep_snow_alt_02.ogg +0 -0
  842. package/assets/sfx/personagem/footstep_snow_alt_03.ogg +0 -0
  843. package/assets/sfx/personagem/footstep_snow_alt_04.ogg +0 -0
  844. package/assets/sfx/personagem/footstep_snow_alt_05.ogg +0 -0
  845. package/assets/sfx/personagem/footstep_snow_run_01.ogg +0 -0
  846. package/assets/sfx/personagem/footstep_snow_run_02.ogg +0 -0
  847. package/assets/sfx/personagem/footstep_snow_run_03.ogg +0 -0
  848. package/assets/sfx/personagem/footstep_snow_run_04.ogg +0 -0
  849. package/assets/sfx/personagem/footstep_snow_run_05.ogg +0 -0
  850. package/assets/sfx/personagem/footstep_snow_walk_01.ogg +0 -0
  851. package/assets/sfx/personagem/footstep_snow_walk_02.ogg +0 -0
  852. package/assets/sfx/personagem/footstep_snow_walk_03.ogg +0 -0
  853. package/assets/sfx/personagem/footstep_snow_walk_04.ogg +0 -0
  854. package/assets/sfx/personagem/footstep_snow_walk_05.ogg +0 -0
  855. package/assets/sfx/personagem/footstep_wood_alt_01.ogg +0 -0
  856. package/assets/sfx/personagem/footstep_wood_alt_02.ogg +0 -0
  857. package/assets/sfx/personagem/footstep_wood_alt_03.ogg +0 -0
  858. package/assets/sfx/personagem/footstep_wood_alt_04.ogg +0 -0
  859. package/assets/sfx/personagem/footstep_wood_alt_05.ogg +0 -0
  860. package/assets/sfx/personagem/footstep_wood_run_01.ogg +0 -0
  861. package/assets/sfx/personagem/footstep_wood_run_02.ogg +0 -0
  862. package/assets/sfx/personagem/footstep_wood_run_03.ogg +0 -0
  863. package/assets/sfx/personagem/footstep_wood_run_04.ogg +0 -0
  864. package/assets/sfx/personagem/footstep_wood_run_05.ogg +0 -0
  865. package/assets/sfx/personagem/footstep_wood_walk_01.ogg +0 -0
  866. package/assets/sfx/personagem/footstep_wood_walk_02.ogg +0 -0
  867. package/assets/sfx/personagem/footstep_wood_walk_03.ogg +0 -0
  868. package/assets/sfx/personagem/footstep_wood_walk_04.ogg +0 -0
  869. package/assets/sfx/personagem/footstep_wood_walk_05.ogg +0 -0
  870. package/assets/sfx/personagem/frying_pan_hit_01.ogg +0 -0
  871. package/assets/sfx/personagem/frying_pan_hit_02.ogg +0 -0
  872. package/assets/sfx/personagem/frying_pan_hit_03.ogg +0 -0
  873. package/assets/sfx/personagem/grab_01.ogg +0 -0
  874. package/assets/sfx/personagem/kick_hit_01.ogg +0 -0
  875. package/assets/sfx/personagem/kick_hit_02.ogg +0 -0
  876. package/assets/sfx/personagem/kick_hit_03.ogg +0 -0
  877. package/assets/sfx/personagem/kick_hit_04.ogg +0 -0
  878. package/assets/sfx/personagem/kick_hit_05.ogg +0 -0
  879. package/assets/sfx/personagem/knife_draw_01.ogg +0 -0
  880. package/assets/sfx/personagem/knife_draw_02.ogg +0 -0
  881. package/assets/sfx/personagem/knife_draw_03.ogg +0 -0
  882. package/assets/sfx/personagem/knife_scrape_01.ogg +0 -0
  883. package/assets/sfx/personagem/knife_slash_01.ogg +0 -0
  884. package/assets/sfx/personagem/knife_slash_02.ogg +0 -0
  885. package/assets/sfx/personagem/land_concrete_01.ogg +0 -0
  886. package/assets/sfx/personagem/land_concrete_02.ogg +0 -0
  887. package/assets/sfx/personagem/land_dirt_01.ogg +0 -0
  888. package/assets/sfx/personagem/land_dirt_02.ogg +0 -0
  889. package/assets/sfx/personagem/land_grass_01.ogg +0 -0
  890. package/assets/sfx/personagem/land_grass_02.ogg +0 -0
  891. package/assets/sfx/personagem/land_metal_01.ogg +0 -0
  892. package/assets/sfx/personagem/land_metal_02.ogg +0 -0
  893. package/assets/sfx/personagem/land_snow_01.ogg +0 -0
  894. package/assets/sfx/personagem/land_snow_02.ogg +0 -0
  895. package/assets/sfx/personagem/land_wood_01.ogg +0 -0
  896. package/assets/sfx/personagem/land_wood_02.ogg +0 -0
  897. package/assets/sfx/personagem/player_breath_run_01.ogg +0 -0
  898. package/assets/sfx/personagem/player_breath_run_02.ogg +0 -0
  899. package/assets/sfx/personagem/player_breath_run_03.ogg +0 -0
  900. package/assets/sfx/personagem/player_breath_run_04.ogg +0 -0
  901. package/assets/sfx/personagem/player_breath_run_05.ogg +0 -0
  902. package/assets/sfx/personagem/player_death_female_01.ogg +0 -0
  903. package/assets/sfx/personagem/player_death_female_02.ogg +0 -0
  904. package/assets/sfx/personagem/player_death_female_03.ogg +0 -0
  905. package/assets/sfx/personagem/player_death_female_04.ogg +0 -0
  906. package/assets/sfx/personagem/player_death_female_05.ogg +0 -0
  907. package/assets/sfx/personagem/player_death_female_06.ogg +0 -0
  908. package/assets/sfx/personagem/player_death_female_07.ogg +0 -0
  909. package/assets/sfx/personagem/player_death_female_08.ogg +0 -0
  910. package/assets/sfx/personagem/player_death_male_01.ogg +0 -0
  911. package/assets/sfx/personagem/player_death_male_02.ogg +0 -0
  912. package/assets/sfx/personagem/player_death_male_03.ogg +0 -0
  913. package/assets/sfx/personagem/player_death_male_04.ogg +0 -0
  914. package/assets/sfx/personagem/player_death_male_05.ogg +0 -0
  915. package/assets/sfx/personagem/player_death_male_06.ogg +0 -0
  916. package/assets/sfx/personagem/player_death_male_07.ogg +0 -0
  917. package/assets/sfx/personagem/player_death_male_08.ogg +0 -0
  918. package/assets/sfx/personagem/player_effort_01.ogg +0 -0
  919. package/assets/sfx/personagem/player_effort_02.ogg +0 -0
  920. package/assets/sfx/personagem/player_effort_03.ogg +0 -0
  921. package/assets/sfx/personagem/player_effort_04.ogg +0 -0
  922. package/assets/sfx/personagem/player_hurt_female_01.ogg +0 -0
  923. package/assets/sfx/personagem/player_hurt_female_02.ogg +0 -0
  924. package/assets/sfx/personagem/player_hurt_female_03.ogg +0 -0
  925. package/assets/sfx/personagem/player_hurt_female_04.ogg +0 -0
  926. package/assets/sfx/personagem/player_hurt_female_05.ogg +0 -0
  927. package/assets/sfx/personagem/player_hurt_female_06.ogg +0 -0
  928. package/assets/sfx/personagem/player_hurt_male_01.ogg +0 -0
  929. package/assets/sfx/personagem/player_hurt_male_02.ogg +0 -0
  930. package/assets/sfx/personagem/player_hurt_male_03.ogg +0 -0
  931. package/assets/sfx/personagem/player_hurt_male_04.ogg +0 -0
  932. package/assets/sfx/personagem/player_hurt_male_05.ogg +0 -0
  933. package/assets/sfx/personagem/player_hurt_male_06.ogg +0 -0
  934. package/assets/sfx/personagem/punch_hit_alt_01.ogg +0 -0
  935. package/assets/sfx/personagem/punch_hit_alt_02.ogg +0 -0
  936. package/assets/sfx/personagem/punch_hit_alt_03.ogg +0 -0
  937. package/assets/sfx/personagem/punch_hit_alt_04.ogg +0 -0
  938. package/assets/sfx/personagem/punch_hit_alt_05.ogg +0 -0
  939. package/assets/sfx/personagem/punch_hit_alt_06.ogg +0 -0
  940. package/assets/sfx/personagem/punch_hit_alt_07.ogg +0 -0
  941. package/assets/sfx/personagem/punch_hit_alt_08.ogg +0 -0
  942. package/assets/sfx/personagem/punch_hit_alt_09.ogg +0 -0
  943. package/assets/sfx/personagem/punch_hit_alt_10.ogg +0 -0
  944. package/assets/sfx/personagem/punch_hit_body_01.ogg +0 -0
  945. package/assets/sfx/personagem/punch_hit_body_02.ogg +0 -0
  946. package/assets/sfx/personagem/punch_hit_body_03.ogg +0 -0
  947. package/assets/sfx/personagem/punch_hit_body_04.ogg +0 -0
  948. package/assets/sfx/personagem/punch_hit_body_05.ogg +0 -0
  949. package/assets/sfx/personagem/punch_hit_body_06.ogg +0 -0
  950. package/assets/sfx/personagem/punch_hit_face_01.ogg +0 -0
  951. package/assets/sfx/personagem/punch_hit_face_02.ogg +0 -0
  952. package/assets/sfx/personagem/punch_hit_face_03.ogg +0 -0
  953. package/assets/sfx/personagem/punch_hit_face_04.ogg +0 -0
  954. package/assets/sfx/personagem/punch_hit_face_05.ogg +0 -0
  955. package/assets/sfx/personagem/punch_swing_01.ogg +0 -0
  956. package/assets/sfx/personagem/punch_swing_02.ogg +0 -0
  957. package/assets/sfx/personagem/punch_swing_03.ogg +0 -0
  958. package/assets/sfx/personagem/punch_swing_04.ogg +0 -0
  959. package/assets/sfx/personagem/punch_swing_05.ogg +0 -0
  960. package/assets/sfx/personagem/punch_swing_06.ogg +0 -0
  961. package/assets/sfx/personagem/punch_swing_07.ogg +0 -0
  962. package/assets/sfx/personagem/punch_swing_08.ogg +0 -0
  963. package/assets/sfx/personagem/scream_01.ogg +0 -0
  964. package/assets/sfx/personagem/scream_02.ogg +0 -0
  965. package/assets/sfx/personagem/scream_03.ogg +0 -0
  966. package/assets/sfx/personagem/scream_04.ogg +0 -0
  967. package/assets/sfx/personagem/slap_01.ogg +0 -0
  968. package/assets/sfx/personagem/swing_whoosh_alt_01.ogg +0 -0
  969. package/assets/sfx/personagem/swing_whoosh_alt_02.ogg +0 -0
  970. package/assets/sfx/personagem/swing_whoosh_alt_03.ogg +0 -0
  971. package/assets/sfx/personagem/swing_whoosh_alt_04.ogg +0 -0
  972. package/assets/sfx/personagem/swing_whoosh_alt_05.ogg +0 -0
  973. package/assets/sfx/personagem/swing_whoosh_alt_06.ogg +0 -0
  974. package/assets/sfx/personagem/swing_whoosh_alt_07.ogg +0 -0
  975. package/assets/sfx/personagem/swing_whoosh_alt_08.ogg +0 -0
  976. package/assets/sfx/personagem/swing_whoosh_alt_09.ogg +0 -0
  977. package/assets/sfx/personagem/swing_whoosh_alt_10.ogg +0 -0
  978. package/assets/sfx/personagem/swing_whoosh_alt_11.ogg +0 -0
  979. package/assets/sfx/personagem/swing_whoosh_alt_12.ogg +0 -0
  980. package/assets/sfx/personagem/swing_whoosh_alt_13.ogg +0 -0
  981. package/assets/sfx/personagem/swing_whoosh_alt_14.ogg +0 -0
  982. package/assets/sfx/personagem/swing_whoosh_alt_15.ogg +0 -0
  983. package/assets/sfx/personagem/swing_whoosh_alt_16.ogg +0 -0
  984. package/assets/sfx/personagem/swing_whoosh_alt_17.ogg +0 -0
  985. package/assets/sfx/personagem/swing_whoosh_alt_18.ogg +0 -0
  986. package/assets/sfx/personagem/swing_whoosh_alt_19.ogg +0 -0
  987. package/assets/sfx/personagem/swing_whoosh_alt_20.ogg +0 -0
  988. package/assets/sfx/personagem/swing_whoosh_alt_21.ogg +0 -0
  989. package/assets/sfx/personagem/swing_whoosh_alt_22.ogg +0 -0
  990. package/assets/sfx/personagem/swing_whoosh_alt_23.ogg +0 -0
  991. package/assets/sfx/personagem/swing_whoosh_alt_24.ogg +0 -0
  992. package/assets/sfx/personagem/swing_whoosh_alt_25.ogg +0 -0
  993. package/assets/sfx/personagem/swing_whoosh_alt_26.ogg +0 -0
  994. package/assets/sfx/personagem/swing_whoosh_alt_27.ogg +0 -0
  995. package/assets/sfx/personagem/swing_whoosh_alt_28.ogg +0 -0
  996. package/assets/sfx/personagem/swing_whoosh_alt_29.ogg +0 -0
  997. package/assets/sfx/personagem/swing_whoosh_alt_30.ogg +0 -0
  998. package/assets/sfx/personagem/swing_whoosh_alt_31.ogg +0 -0
  999. package/assets/sfx/personagem/swing_whoosh_alt_32.ogg +0 -0
  1000. package/assets/sfx/personagem/swing_whoosh_alt_33.ogg +0 -0
  1001. package/assets/sfx/personagem/swing_whoosh_alt_34.ogg +0 -0
  1002. package/assets/sfx/personagem/swing_whoosh_alt_35.ogg +0 -0
  1003. package/assets/sfx/personagem/swing_whoosh_alt_36.ogg +0 -0
  1004. package/assets/sfx/personagem/swing_whoosh_alt_37.ogg +0 -0
  1005. package/assets/sfx/personagem/swing_whoosh_alt_38.ogg +0 -0
  1006. package/assets/sfx/personagem/swing_whoosh_alt_39.ogg +0 -0
  1007. package/assets/sfx/personagem/swing_whoosh_alt_40.ogg +0 -0
  1008. package/assets/sfx/personagem/swing_whoosh_alt_41.ogg +0 -0
  1009. package/assets/sfx/personagem/swing_whoosh_alt_42.ogg +0 -0
  1010. package/assets/sfx/personagem/swing_whoosh_alt_43.ogg +0 -0
  1011. package/assets/sfx/personagem/zombie_creature_01.ogg +0 -0
  1012. package/assets/sfx/personagem/zombie_creature_02.ogg +0 -0
  1013. package/assets/sfx/personagem/zombie_creature_03.ogg +0 -0
  1014. package/assets/sfx/personagem/zombie_death_01.ogg +0 -0
  1015. package/assets/sfx/personagem/zombie_death_02.ogg +0 -0
  1016. package/assets/sfx/personagem/zombie_death_03.ogg +0 -0
  1017. package/assets/sfx/personagem/zombie_death_04.ogg +0 -0
  1018. package/assets/sfx/personagem/zombie_death_05.ogg +0 -0
  1019. package/assets/sfx/personagem/zombie_death_06.ogg +0 -0
  1020. package/assets/sfx/personagem/zombie_death_07.ogg +0 -0
  1021. package/assets/sfx/personagem/zombie_death_08.ogg +0 -0
  1022. package/assets/sfx/personagem/zombie_groan_01.ogg +0 -0
  1023. package/assets/sfx/personagem/zombie_groan_02.ogg +0 -0
  1024. package/assets/sfx/personagem/zombie_groan_03.ogg +0 -0
  1025. package/assets/sfx/personagem/zombie_groan_04.ogg +0 -0
  1026. package/assets/sfx/personagem/zombie_groan_05.ogg +0 -0
  1027. package/assets/sfx/personagem/zombie_groan_06.ogg +0 -0
  1028. package/assets/sfx/personagem/zombie_groan_07.ogg +0 -0
  1029. package/assets/sfx/personagem/zombie_groan_08.ogg +0 -0
  1030. package/assets/sfx/personagem/zombie_groan_09.ogg +0 -0
  1031. package/assets/sfx/personagem/zombie_groan_10.ogg +0 -0
  1032. package/assets/sfx/personagem/zombie_groan_11.ogg +0 -0
  1033. package/assets/sfx/veiculos/car_door_open_01.ogg +0 -0
  1034. package/assets/sfx/veiculos/car_door_shut_01.ogg +0 -0
  1035. package/assets/sfx/veiculos/car_gear_shift_01.ogg +0 -0
  1036. package/assets/sfx/veiculos/car_trunk_shut_01.ogg +0 -0
  1037. package/assets/sfx/veiculos/car_window_01.ogg +0 -0
  1038. package/assets/sfx/veiculos/car_window_02.ogg +0 -0
  1039. package/assets/sfx/veiculos/engine_loop_car_high_01.ogg +0 -0
  1040. package/assets/sfx/veiculos/engine_loop_car_idle_01.ogg +0 -0
  1041. package/assets/sfx/veiculos/engine_start_run_stop_01.ogg +0 -0
  1042. package/assets/sfx/veiculos/engine_start_run_stop_02.ogg +0 -0
  1043. package/dist/chunk-7TLFY7VO.js +4170 -0
  1044. package/dist/chunk-7TLFY7VO.js.map +1 -0
  1045. package/dist/index.d.ts +228 -603
  1046. package/dist/index.global.js +2958 -463
  1047. package/dist/index.global.js.map +1 -1
  1048. package/dist/index.js +1088 -2044
  1049. package/dist/index.js.map +1 -1
  1050. package/dist/locale-BugSe8dA.d.ts +1071 -0
  1051. package/dist/testing.d.ts +82 -0
  1052. package/dist/testing.js +19 -0
  1053. package/dist/testing.js.map +1 -0
  1054. package/package.json +13 -6
package/dist/index.d.ts CHANGED
@@ -1,4 +1,6 @@
1
- import { Vec3, AudioSink, TestableModule } from '@adatechnology/game-contracts';
1
+ import { S as SampleSound, a as SampleLoader, B as BusId, b as SampleCrossover, F as Falloff, c as SoundBank, L as LoopRecipe, d as SoundRecipe, P as ParamRef, R as Range, e as Layer, f as SoundSet, g as SoundPlan, h as SamplePlan, A as AudioLoopHandle, i as LoopEntry, M as MixProfile, j as AudioEngine } from './locale-BugSe8dA.js';
2
+ export { k as ActionCheck, l as AudioBenchText, m as AudioChannel, n as AudioEngineOptions, o as AudioScenarioLike, p as AudioStats, q as AudioTestModule, r as AudioTestModuleOptions, s as Automation, t as BENCH_BANK, u as BUILD_ORDERS, v as BUS_IDS, w as BUS_PRIORITY, x as BuildOrder, y as BusSetting, C as CRITERIA, z as CRITERIA_TARGETS, D as CriterionId, E as CriterionResult, G as Curve, H as DEFAULT_CROSSOVER, I as DEFAULT_LISTENER, J as DEFAULT_MAX_VOICES, K as DEFAULT_MIX, N as DEFAULT_SAMPLE_CUTOFF_K, O as DEFAULT_SAMPLE_FALLOFF, Q as DEFAULT_SAMPLE_PITCH, T as DEFAULT_TAIL_GAIN, U as DeepPartial, V as DistanceMode, W as Envelope, X as EnvelopePoint, Y as FilterBank, Z as FilterSpec, _ as FormantVoiceSource, $ as LAYER_FLOOR, a0 as LayerSource, a1 as Listener, a2 as LoopOrder, a3 as LoopSet, a4 as MIX_PROFILES, a5 as MeasureOptions, a6 as Modulator, a7 as NoiseSource, a8 as OPEN_CUTOFF, a9 as OscSource, aa as PAN_LIMIT, ab as PAN_MIN_DISTANCE, ac as PlanInput, ad as PlannedAutomation, ae as PlannedEnvelopePoint, af as PlannedFilter, ag as PlannedLayer, ah as PlannedModulator, ai as PlannedSampleLayer, aj as PlannedSource, ak as PlayOptions, al as SAMPLE_ENVIRONMENTS, am as SFX_BLOWS, an as SFX_CATALOG, ao as SFX_CATEGORIES, ap as SFX_IMPACTS, aq as SFX_MATERIALS, ar as SampleEnvironment, as as SampleLayerRole, at as SampleLoadReport, au as SampleMemory, av as SampleOptions, aw as SamplePlanInput, ax as SampleRef, ay as SampleStatus, az as SampleStore, aA as SampleTail, aB as SampleTier, aC as SfxBlow, aD as SfxCategory, aE as SfxEntry, aF as SfxMaterial, aG as SfxPriority, aH as SfxState, aI as SoundRegistry, aJ as StartQueueOptions, aK as Time, aL as VOICE_GROUPS, aM as VoiceDecision, aN as VoiceGroup, aO as VoiceHandle, aP as VoiceManager, aQ as VoiceManagerOptions, aR as VoiceRefusal, aS as VoiceRequest, aT as VoiceStartEvent, aU as VoiceStats, aV as audioBenchTextOf, aW as busGain, aX as busPriority, aY as createAudioEngine, aZ as createAudioTestModule, a_ as createSampleStore, a$ as createSoundRegistry, b0 as createVoiceManager, b1 as crossGains, b2 as farMixAt, b3 as fetchLoader, b4 as impactSoundId, b5 as inlineLoader, b6 as limiterCurve, b7 as listenerDistance, b8 as measureCriteria, b9 as panFor, ba as pickTake, bb as planSample, bc as planSound, bd as recordOutput, be as resolveMix, bf as sampleCutoff, bg as sampleUrls, bh as sfxState, bi as tierFor } from './locale-BugSe8dA.js';
3
+ import { AudioSink } from '@adatechnology/game-contracts';
2
4
 
3
5
  /** Deterministic mulberry32 generator; floats in [0, 1). The same generator the golden tool seeds `Math.random` with, so a team routine and its recipe draw the same numbers. */
4
6
  declare function createRng(seed: number): () => number;
@@ -8,355 +10,159 @@ declare function streamFor(seed: number, name: string | number): () => number;
8
10
  /** `min + random × (max − min)`: the form every team routine uses (`95 + Math.random() * 40`). */
9
11
  declare function drawBetween(random: () => number, min: number, max: number): number;
10
12
 
13
+ declare const CALIBRATION_ID = "calibration_shot";
14
+ /** 16-bit PCM mono WAV bytes of the samples (clamped to ±1). */
15
+ declare function encodeWav(samples: Float32Array, sampleRate?: number): ArrayBuffer;
16
+ /** The calibration sound (weapons bus, every layer, fallback to the game's pistol noise class). */
17
+ declare const CALIBRATION_SOUND: SampleSound;
18
+ declare const CALIBRATION_LOOP_ID = "calibration_loop";
19
+ /** A steady hiss in three 0.6 s takes, crossed in 0.15 s: the loop the harness checks for seams (no dip, no gap where two takes meet). */
20
+ declare const CALIBRATION_LOOP_SOUND: SampleSound;
21
+ /** Whether a url is one of the calibration takes. */
22
+ declare const isCalibrationUrl: (url: string) => boolean;
23
+ /** Bytes of the calibration takes (made on demand, the same for the same name). Falls through to `next` for any other url. */
24
+ declare function calibrationLoader(next?: SampleLoader): SampleLoader;
25
+
11
26
  /**
12
- * Sound recipes are data. A recipe says which nodes a sound has and which numbers drive them; ranges are drawn when the sound is planned, in
13
- * the order the fields are written (see `planSound`), so a recipe ported from a team routine draws its random numbers in the routine's order.
14
- */
15
- declare const BUS_IDS: readonly ["weapons", "voices", "world", "ambience", "weather", "ui"];
16
- type BusId = (typeof BUS_IDS)[number];
17
- /** A named number: from `PlayOptions.params` or the recipe's `vars`, times `scale`, plus `add`. */
18
- type ParamRef = {
19
- readonly param: string;
20
- readonly scale?: number;
21
- readonly add?: number;
22
- };
23
- /** A number, a `[min, max]` drawn uniformly (`min + random × (max − min)`), or a named number. */
24
- type Range = number | readonly [min: number, max: number] | ParamRef;
25
- /** Seconds from the layer start: a range, the layer `'duration'`, or `'0.6d'` (0.6 × the layer duration). */
26
- type Time = Range | 'duration' | `${number}d`;
27
- type Curve = 'linear' | 'exp';
28
- /**
29
- * How an AudioParam moves:
30
- * - `{ set }` assigns `.value`;
31
- * - `{ set, to, curve, over }` assigns `.value`, then ramps to `to` at `over`;
32
- * - `{ from }` calls `setValueAtTime(from)` at the start; with `to`, `curve` and `over` it then ramps to `to` (`'from'` is the value drawn for `from`: the art scene ramps a tone back to its own start when it gives no end).
27
+ * Measurements of rendered sound (pure, on plain sample arrays), for the criteria C1–C9: when it starts, how loud and how bright it is, which side
28
+ * it is on, how long it rings and how many separate hits a burst has.
33
29
  */
34
- type Automation = {
35
- readonly set: Range;
36
- readonly to?: Range | 'from';
37
- readonly curve?: Curve;
38
- readonly over?: Time;
39
- } | {
40
- readonly from: Range;
41
- readonly to?: Range | 'from';
42
- readonly curve?: Curve;
43
- readonly over?: Time;
44
- };
30
+ type Channels = readonly Float32Array[];
31
+ /** Linear amplitude to dBFS (−Infinity for 0). */
32
+ declare const dbOf: (amplitude: number) => number;
33
+ /** The loudest sample of every channel between two sample indexes (linear). */
34
+ declare function peakOf(channels: Channels, start?: number, end?: number): number;
35
+ /** Index of the loudest sample (any channel) between two indexes. */
36
+ declare function peakIndex(channels: Channels, start?: number, end?: number): number;
37
+ /** First sample index at or after `start` whose amplitude (any channel) reaches `threshold`, or −1. */
38
+ declare function onsetIndex(channels: Channels, start?: number, threshold?: number): number;
39
+ /** RMS of all channels between two indexes, dBFS. */
40
+ declare function rmsDb(channels: Channels, start: number, end: number): number;
41
+ /** Spectral centroid (Hz) of `size` samples from `start` (channels summed, Hann window, plain DFT): the brightness of the sound. */
42
+ declare function centroidHz(channels: Channels, sampleRate: number, start: number, size?: number): number;
43
+ /** Energy balance from −1 (all left) to 1 (all right) between two indexes. */
44
+ declare function balanceOf(left: Float32Array, right: Float32Array, start: number, end: number): number;
45
+ /** Seconds from `start` to the last 10 ms window louder than `floorDb` (how long the sound rings, tail included). */
46
+ declare function ringSeconds(channels: Channels, sampleRate: number, start: number, floorDb?: number): number;
45
47
  /**
46
- * One gain point: time (seconds, or `'0.6d'`), value and how it is reached (`set` = `setValueAtTime`, or a ramp). The value is multiplied by the
47
- * layer level (volume, distance and layer gain) except when the fourth item is `'fixed'` (the floor a ramp falls to, such as 0.001).
48
+ * Separate hits in a burst: attacks of the 2 ms envelope, where it jumps to twice the mean of the 20 ms before it and reaches `threshold`, at least
49
+ * 30 ms apart (so a rapid fire over a long tail still counts every shot).
48
50
  */
49
- type EnvelopePoint = readonly [time: number | `${number}d`, value: number, curve: 'set' | Curve] | readonly [time: number | `${number}d`, value: number, curve: 'set' | Curve, fixed: 'fixed'];
50
- type Envelope = readonly EnvelopePoint[];
51
- type FilterSpec = {
52
- readonly type: BiquadFilterType;
53
- readonly frequency: Automation;
54
- readonly q?: Range;
55
- /** The BiquadFilter gain (shelf and peaking types). */
56
- readonly gain?: Range;
57
- /** A gain node after the filter, for a parallel bank where each band has its own level (the game's scream formants). */
58
- readonly level?: Range;
59
- };
60
- type FilterBank = {
61
- readonly mode: 'serial' | 'parallel';
62
- readonly bank: readonly FilterSpec[];
63
- };
64
- /** An LFO. `depth` is absolute, or a factor of the source start frequency. With `base`, gain modulation goes through its own gain stage (the game rotor). */
65
- type Modulator = {
66
- readonly target: 'gain' | 'frequency';
67
- /** Left out, the oscillator keeps its default (sine) and no type is set. */
68
- readonly wave?: OscillatorType;
69
- readonly rate: Range;
70
- readonly depth: Range | {
71
- readonly scaleOf: 'frequency';
72
- readonly factor: number;
73
- };
74
- readonly base?: number;
75
- };
51
+ declare function countHits(channels: Channels, sampleRate: number, threshold: number): number;
52
+ /** Peak of the last `seconds` of a file against its own peak, dB (≤ −40: it fades out, it does not end on a cut). */
53
+ declare function endDropDb(channels: Channels, sampleRate: number, seconds?: number): number;
54
+
76
55
  /**
77
- * Noise from the engine's seeded buffer. `offset` is where playback starts in it: `'random'` (random × `offsetScale`, default 1), `'fit'`
78
- * (random × (buffer length − duration)) or seconds. `loop` sets the source to loop (the art scene sets it on every noise source).
56
+ * The manifest the converter (`scripts/sfx-convert.mjs`) writes next to the converted files: every sound id with its takes per layer, the file
57
+ * facts the criteria check (rate, channels, peak, length) and where each file came from. `sampleBankFromManifest` turns it into a `SoundBank`
58
+ * of `SampleSound`s, with the bus and the numbers of each sound given by the caller.
79
59
  */
80
- type NoiseSource = {
81
- readonly kind: 'noise';
82
- readonly offset?: 'random' | 'fit' | number;
83
- readonly offsetScale?: number;
84
- readonly loop?: boolean;
85
- };
86
- type OscSource = {
87
- readonly kind: 'osc';
88
- readonly wave: OscillatorType;
89
- readonly frequency: Automation;
90
- };
91
- /** The art scene's `voice`: an oscillator with vibrato through formant bands, plus a band of breath noise, summed and boosted. */
92
- type FormantVoiceSource = {
93
- readonly kind: 'formant_voice';
94
- readonly wave: OscillatorType;
95
- readonly frequency: Automation;
96
- /** Vibrato rate, and depth as a factor of the start frequency. */
97
- readonly vibrato: {
98
- readonly rate: Range;
99
- readonly depth: number;
100
- };
101
- readonly formants: readonly {
102
- readonly frequency: Range;
103
- readonly q: number;
104
- }[];
105
- readonly breath: {
106
- readonly frequency: Range;
107
- readonly q: number;
108
- readonly gain: Range;
109
- };
110
- readonly mix: number;
111
- };
112
- type LayerSource = NoiseSource | OscSource | FormantVoiceSource;
113
- type Layer = {
114
- /** Start, seconds after the sound starts. */
115
- readonly at?: Range;
116
- /** Overrides the recipe duration for this layer. */
117
- readonly duration?: Range;
118
- /** Seconds the source keeps running after the duration (the `+ 0.05` of the team routines). Default: the recipe's, else 0.05. */
119
- readonly tail?: number;
120
- /** The layer played `count` times, `spacing` seconds apart (the game's animal calls). */
121
- readonly repeat?: {
122
- readonly count: number;
123
- readonly spacing: number;
60
+
61
+ /** Licences the SDK accepts (the files are redistributed on npm): public domain or attribution only. */
62
+ declare const SDK_LICENSES: readonly ["CC0", "CC-BY"];
63
+ type SdkLicense = (typeof SDK_LICENSES)[number];
64
+ type SfxFileEntry = {
65
+ /** Path from the manifest's folder: `armas/pistol_9mm_close_01.ogg`. */
66
+ readonly file: string;
67
+ readonly sampleRate: number;
68
+ readonly channels: number;
69
+ /** dBFS. */
70
+ readonly peak: number;
71
+ readonly seconds: number;
72
+ readonly source: string;
73
+ readonly author: string;
74
+ readonly license: SdkLicense;
75
+ };
76
+ /** The layers a file name can end in: `<id>_<layer>_<nn>` (`pistol_9mm_close_01`); a name without one is a `close` take. */
77
+ declare const SFX_LAYERS: readonly ["close", "far", "tail_in", "tail_out"];
78
+ type SfxLayer = (typeof SFX_LAYERS)[number];
79
+ type SfxManifestSound = {
80
+ readonly id: string;
81
+ readonly category: string;
82
+ readonly layers: Partial<Readonly<Record<SfxLayer, readonly SfxFileEntry[]>>>;
83
+ };
84
+ type SfxManifest = {
85
+ readonly version: 1;
86
+ readonly format: {
87
+ readonly codec: 'vorbis';
88
+ readonly sampleRate: number;
89
+ readonly channels: number;
90
+ readonly peakDb: number;
124
91
  };
125
- /** Layer level before distance. Default 1. */
126
- readonly gain?: Range;
127
- /** Send to the reverb, 0..1 or more (the art scene uses up to 1.2). */
128
- readonly wet?: number;
129
- readonly source: LayerSource;
130
- readonly filters?: FilterBank;
131
- readonly modulators?: readonly Modulator[];
132
- readonly envelope: Envelope;
133
- };
134
- /**
135
- * Distance falloff of a sound's level:
136
- * - `inverse_square`: `volume / (1 + d² × k)`; `cutoffK` also divides every lowpass cutoff by `1 + d × cutoffK` (the game's muffling);
137
- * - `linear`: `max(0, 1 − d / range)`, silent at or below `minGain`;
138
- * - `none`: no distance.
139
- * `scale` multiplies the level (the game's boom is 1.4 at the source), and below `minGain` the sound is not played.
140
- */
141
- type Falloff = {
142
- readonly model: 'inverse_square';
143
- readonly k: number;
144
- readonly minGain?: number;
145
- readonly cutoffK?: number;
146
- readonly scale?: number;
147
- } | {
148
- readonly model: 'linear';
149
- readonly range: number;
150
- readonly minGain?: number;
151
- readonly scale?: number;
152
- } | {
153
- readonly model: 'none';
92
+ readonly sounds: readonly SfxManifestSound[];
154
93
  };
155
- /**
156
- * The order the realizer creates and wires the nodes in. Each one is the order of the team routine it reproduces, so the trace of the SDK
157
- * matches the trace of the team code node for node:
158
- * - `layered` (default): the art scene's `sNoise`, `sTone` and `voice`; every layer has its own output stage (distance gain, pan, reverb send);
159
- * - `burst`: the game's `sfx` (jogo L62089);
160
- * - `scream`: the game's `grito` (L62128);
161
- * - `groan`: the game's `voz` (L62143);
162
- * - `boom`: the game's `boom` (L68278);
163
- * - `static`: the game's `chiado` (L69998);
164
- * - `chord`: the game's `buzina` (L70272);
165
- * - `calls`: the game's `bichoSom` (L66625);
166
- * - `siren`: the art scene's `siren` (L1369);
167
- * - `weapon`: the weapon audio of the kit (`weapons-three`): per layer a filtered noise burst or an oscillator, then its own gain, chained to the bus.
168
- * Every order but `layered` puts the level into the envelope and connects straight to the bus.
169
- */
170
- declare const BUILD_ORDERS: readonly ["layered", "burst", "scream", "groan", "boom", "static", "chord", "calls", "siren", "weapon"];
171
- type BuildOrder = (typeof BUILD_ORDERS)[number];
172
- type SoundRecipe = {
173
- readonly id: string;
94
+ /** The numbers of one sound that the files do not say (bus, curve, pitch...). */
95
+ type SampleDefaults = {
174
96
  readonly bus: BusId;
175
- readonly order?: BuildOrder;
176
- /** Named numbers drawn first, in the order written; layers read them with `{ param }`. */
177
- readonly vars?: Readonly<Record<string, Range>>;
178
- readonly duration?: Range;
179
- readonly tail?: number;
180
- readonly layers: readonly Layer[];
97
+ readonly gain?: number;
98
+ readonly pitch?: number;
99
+ readonly crossover?: SampleCrossover;
100
+ readonly tailGain?: number;
181
101
  readonly falloff?: Falloff;
182
- /** Stereo pan from the listener (the art scene's `panFor`). Only the `layered` order has an output stage to pan. */
183
- readonly pan?: boolean;
184
- /** Voice group for the limiter (`undead_voice`...). */
102
+ readonly cutoffK?: number;
185
103
  readonly group?: string;
186
- /** Limiter priority; default from the bus (weapons > voices > world > ambience). */
187
104
  readonly priority?: number;
188
- /**
189
- * The team routine creates nodes before it checks the level (the game's `bichoSom` creates its gain and filter first): a silent sound is kept as
190
- * a plan with `silent: true` so the realizer repeats those nodes. Off by default.
191
- */
192
- readonly keepSilent?: boolean;
193
- /** Where the numbers come from: `"jogo:L62128"`, `"cena:L1342"`, or `"sdk"` for values the kit chose. */
194
- readonly sources: readonly string[];
105
+ readonly fallback?: string;
195
106
  };
196
- /**
197
- * The order the loop realizer creates the nodes in:
198
- * - `game_loop`: the game's `loopSet` (L62109): gain and filter first, nodes created the first time the volume passes `startAbove`, gain from 0;
199
- * - `chain_loop`: the art scene's loops in `initAudio` (L1314–1316): source, filters, gain at its starting volume, created when the loop opens.
200
- */
201
- type LoopOrder = 'game_loop' | 'chain_loop';
202
- type LoopRecipe = {
107
+ type SampleBankOptions = {
203
108
  readonly id: string;
204
- readonly bus: BusId;
205
- readonly order?: LoopOrder;
206
- /** An oscillator loop may leave the frequency out: it starts at the default and `set({ frequency })` glides it (the game's motor). */
207
- readonly source: (NoiseSource & {
208
- readonly loop: true;
209
- }) | {
210
- readonly kind: 'osc';
211
- readonly wave: OscillatorType;
212
- readonly frequency?: Automation;
213
- readonly loop: true;
214
- };
215
- readonly filters?: FilterBank;
216
- readonly modulators?: readonly Modulator[];
217
- /** `setTargetAtTime` time constants (jogo L62125–62126: 0.15 for the volume, 0.08 for the frequency). */
218
- readonly smoothing?: {
219
- readonly volume: number;
220
- readonly frequency: number;
221
- };
222
- /** Nodes are created the first time the volume reaches this (jogo L62112: 0.002). */
223
- readonly startAbove?: number;
224
- /** Volume the gain starts at when the loop opens (`chain_loop`). */
225
- readonly volume?: number;
226
- readonly sources: readonly string[];
227
- };
228
- type SoundBank = {
109
+ /** Prefix of every url (where the manifest's folder is served: `/sfx/`). Default ''. */
110
+ readonly baseUrl?: string;
111
+ /** Numbers per sound id, or one function; a sound with neither is left out (it has no bus). */
112
+ readonly sounds?: Readonly<Record<string, SampleDefaults>>;
113
+ readonly defaults?: (sound: SfxManifestSound) => SampleDefaults | undefined;
114
+ };
115
+ /** The strength suffixes of a sound id (`kick_hit_heavy`): takes of the tiers of `kick_hit`, from these intensities. */
116
+ declare const SFX_TIERS: Readonly<Record<string, number>>;
117
+ /** Splits a file name (no extension) into its sound id, layer and take number. */
118
+ declare function parseSfxName(name: string): {
229
119
  readonly id: string;
230
- readonly sounds?: readonly SoundRecipe[];
231
- readonly loops?: readonly LoopRecipe[];
120
+ readonly layer: SfxLayer;
121
+ readonly take: number;
232
122
  };
233
-
234
- /** Where the ears are. `yaw` turns around y like a three.js camera: the right ear points at `(cos yaw, 0, −sin yaw)`. */
235
- type Listener = {
236
- readonly position: Vec3;
237
- readonly yaw: number;
123
+ /** The base id and tier of a sound id: `kick_hit_heavy` → `kick_hit`, `heavy`. */
124
+ declare function splitTier(id: string): {
125
+ readonly base: string;
126
+ readonly tier?: string;
238
127
  };
239
- type DistanceMode = 'xz' | '3d';
240
- declare const DEFAULT_LISTENER: Listener;
241
- /** The art scene clamps the pan to ±0.85 and never divides by less than 2 m (cena L1319). */
242
- declare const PAN_LIMIT = 0.85;
243
- declare const PAN_MIN_DISTANCE = 2;
244
- /** Distance from the listener: on the ground (`xz`, the teams' choice) or in 3D. */
245
- declare function listenerDistance(listener: Listener, position: Vec3, mode?: DistanceMode): number;
246
- /** The art scene's `panFor`: the side the sound is on, −0.85 (left) to 0.85 (right). No HRTF, for cost. */
247
- declare function panFor(listener: Listener, position: Vec3): number;
128
+ /** A bank of sample sounds from a manifest. */
129
+ declare function sampleBankFromManifest(manifest: SfxManifest, options: SampleBankOptions): SoundBank;
248
130
 
249
- /** How an AudioParam moves, with every number resolved and every time in seconds from the layer start. */
250
- type PlannedAutomation = {
251
- /** Assigned to `.value`. */
252
- readonly value?: number;
253
- /** `setValueAtTime(from)` at the layer start. */
254
- readonly from?: number;
255
- /** Ramp target, reached `at` seconds after the layer start. */
256
- readonly to?: number;
257
- readonly curve?: Curve;
258
- readonly at?: number;
259
- };
260
- type PlannedFilter = {
261
- readonly type: BiquadFilterType;
262
- readonly frequency: PlannedAutomation;
263
- readonly q?: number;
264
- readonly gain?: number;
265
- readonly level?: number;
266
- };
267
- type PlannedModulator = {
268
- readonly target: 'gain' | 'frequency';
269
- readonly wave?: OscillatorType;
270
- readonly rate: number;
271
- readonly depth: number;
272
- readonly base?: number;
273
- };
274
- type PlannedSource = {
275
- readonly kind: 'noise';
276
- readonly offset: number;
277
- readonly loop: boolean;
278
- } | {
279
- readonly kind: 'osc';
280
- readonly wave: OscillatorType;
281
- readonly frequency: PlannedAutomation;
282
- } | {
283
- readonly kind: 'formant_voice';
284
- readonly wave: OscillatorType;
285
- readonly frequency: PlannedAutomation;
286
- readonly vibrato: {
287
- readonly rate: number;
288
- readonly depth: number;
289
- };
290
- readonly formants: readonly {
291
- readonly frequency: number;
292
- readonly q: number;
293
- }[];
294
- readonly breath: {
295
- readonly frequency: number;
296
- readonly q: number;
297
- readonly gain: number;
298
- readonly offset: number;
299
- };
300
- readonly mix: number;
301
- };
302
- type PlannedEnvelopePoint = {
303
- readonly time: number;
304
- readonly value: number;
305
- readonly curve: 'set' | Curve;
306
- };
307
- type PlannedLayer = {
308
- readonly at: number;
309
- readonly duration: number;
310
- readonly tail: number;
311
- /** Layer gain × the sound's level: in the envelope for every order but `layered`, in the output stage for `layered`. */
312
- readonly level: number;
313
- readonly wet?: number;
314
- readonly source: PlannedSource;
315
- readonly filters?: {
316
- readonly mode: 'serial' | 'parallel';
317
- readonly bank: readonly PlannedFilter[];
318
- };
319
- readonly modulators: readonly PlannedModulator[];
320
- readonly envelope: readonly PlannedEnvelopePoint[];
321
- };
322
- /** A sound with every number decided: what the realizer builds, what goldens compare and what the bench sheet prints. */
323
- type SoundPlan = {
324
- readonly id: string;
325
- readonly bus: BusId;
326
- readonly order: BuildOrder;
327
- readonly group?: string;
328
- readonly priority: number;
329
- /** The level from volume and distance, before layer gains. */
330
- readonly level: number;
331
- readonly distance: number;
332
- readonly pan?: number;
333
- /** Too quiet to hear, kept only for a recipe with `keepSilent`. */
334
- readonly silent: boolean;
335
- /** Seconds until the last source stops. */
336
- readonly length: number;
337
- readonly layers: readonly PlannedLayer[];
338
- };
339
- type PlanInput = {
340
- /** Where the numbers are drawn from. Default: a fresh stream with seed 1. */
341
- readonly random?: () => number;
342
- readonly volume?: number;
343
- /** Distance in meters; overrides `position`. */
344
- readonly distance?: number;
345
- readonly position?: Vec3;
346
- readonly listener?: Listener;
347
- readonly distanceMode?: DistanceMode;
348
- readonly params?: Readonly<Record<string, number>>;
349
- /** 0..1 from the host's occlusion callback: gain × (1 − 0.5 × o), lowpass cutoffs × (1 − 0.6 × o). */
350
- readonly occlusion?: number;
351
- /** Length of the noise buffer, for `offset: 'fit'`. Default 1.5. */
352
- readonly noiseSeconds?: number;
131
+ /** The bus of a manifest category (the folder the file sits in). */
132
+ declare const KIT_CATEGORY_BUS: Readonly<Record<string, BusId>>;
133
+ /**
134
+ * Recipe id → file id. The recipe keeps playing until the takes of the file id load. Hand-worked leaves (doors, drawers) of `game-destruction-three`
135
+ * and the hand sounds of items.
136
+ */
137
+ declare const KIT_SAMPLE_ALIASES: Readonly<Record<string, string>>;
138
+ /** The numbers of a sound the files do not say: the bus of its folder, a little pitch spread. */
139
+ declare function kitSampleDefaults(sound: SfxManifestSound): SampleDefaults | undefined;
140
+ type KitSampleBankOptions = {
141
+ /** Where the `assets/sfx/` folder is served (`./sfx/`). */
142
+ readonly baseUrl?: string;
143
+ /** Recipe id → file id (default `KIT_SAMPLE_ALIASES`); `{}` adds none. */
144
+ readonly aliases?: Readonly<Record<string, string>>;
145
+ readonly id?: string;
146
+ };
147
+ /** The manifest with each alias as one more sound, holding the takes of its file id. */
148
+ declare function withAliases(manifest: SfxManifest, aliases: Readonly<Record<string, string>>): SfxManifest;
149
+ /** The bank of the kit's files. */
150
+ declare function kitSampleBank(manifest: SfxManifest, options?: KitSampleBankOptions): SoundBank;
151
+ type LoadKitSamplesOptions = KitSampleBankOptions & {
152
+ /** Gets the manifest (default `fetch` of `<baseUrl>manifest.json`). */
153
+ readonly fetchManifest?: (url: string) => Promise<SfxManifest>;
154
+ /** Ids to load right away instead of on their first play (the sounds of the first seconds, so they are not the recipe). */
155
+ readonly preload?: readonly string[];
156
+ };
157
+ type Registers = {
158
+ register(bank: SoundBank): void;
159
+ loadSamples?(ids?: readonly string[]): Promise<unknown>;
353
160
  };
354
161
  /**
355
- * Turns a recipe into a plan: pure, Node-safe, the same plan for the same `random`. Numbers are drawn in this order: `vars` (in the order written),
356
- * `duration`, then each layer in the order its fields are written, the noise start point last in its layer. A sound below its falloff's `minGain`
357
- * gives `null` (or a silent plan with `keepSilent`) before any number is drawn.
162
+ * Fetches the manifest and registers the bank on the engine. Resolves to the bank, or `null` when the manifest cannot be had (a page opened from
163
+ * `file://`, the folder not served): the recipes keep playing, so that is not an error.
358
164
  */
359
- declare function planSound(recipe: SoundRecipe, input?: PlanInput): SoundPlan | null;
165
+ declare function loadKitSamples(engine: Registers, options?: LoadKitSamplesOptions): Promise<SoundBank | null>;
360
166
 
361
167
  /** The distance curves of the team routines, by name. Each recipe carries its own; these are the values to copy. */
362
168
  declare const DISTANCE_CURVES: {
@@ -406,68 +212,6 @@ declare function isSilent(falloff: Falloff | undefined, gain: number): boolean;
406
212
  /** What every lowpass cutoff is divided by at `distance` (1 when the curve has no muffling). */
407
213
  declare function cutoffDivisor(falloff: Falloff | undefined, distance: number): number;
408
214
 
409
- /**
410
- * Rules for a group of voices (`undead_voice`...). A request passes when every rule passes:
411
- * - `maxConcurrent`: at most this many of the group play at once (`steal` replaces the group's oldest instead of refusing);
412
- * - `cooldown`: seconds after an accepted voice before the next one (the game's `groanBudget`, jogo L66986 and L70472);
413
- * - `maxDistance`: only voices nearer than this (the game's `d < 40`).
414
- */
415
- type VoiceGroup = {
416
- readonly maxConcurrent?: number;
417
- readonly cooldown?: number;
418
- readonly maxDistance?: number;
419
- readonly steal?: boolean;
420
- readonly sources?: readonly string[];
421
- };
422
- /** `undead_voice`: the art scene's five at once with the game's 0.25 s cooldown and 40 m. */
423
- declare const VOICE_GROUPS: Readonly<Record<string, VoiceGroup>>;
424
- /** Q7: weapons > voices > world > ambience; the interface above all, weather with the ambience. */
425
- declare const BUS_PRIORITY: Readonly<Record<BusId, number>>;
426
- declare const DEFAULT_MAX_VOICES = 32;
427
- declare function busPriority(bus: BusId): number;
428
- type VoiceRequest = {
429
- readonly group?: string;
430
- readonly priority: number;
431
- /** Planned level; the global cap drops the lowest `priority × gain`. */
432
- readonly gain: number;
433
- readonly distance?: number;
434
- /** Seconds the voice lasts. */
435
- readonly length: number;
436
- };
437
- type VoiceRefusal = 'cooldown' | 'distance' | 'group_full' | 'global_full';
438
- type VoiceDecision = {
439
- readonly accepted: true;
440
- readonly id: number;
441
- readonly evicted: readonly number[];
442
- } | {
443
- readonly accepted: false;
444
- readonly reason: VoiceRefusal;
445
- };
446
- type VoiceStats = {
447
- readonly active: number;
448
- readonly peak: number;
449
- readonly dropped: number;
450
- readonly maxVoices: number;
451
- };
452
- type VoiceManager = {
453
- request(request: VoiceRequest): VoiceDecision;
454
- /** Ends a voice early (stopped by the host). */
455
- release(id: number): void;
456
- /** Sets how long an accepted voice lasts (the engine admits a voice before its random length is drawn). */
457
- setLength(id: number, seconds: number): void;
458
- /** Moves time on: cooldowns count down and finished voices leave. Returns the ids that ended. */
459
- advance(dt: number): number[];
460
- setGroup(id: string, group: VoiceGroup | undefined): void;
461
- stats(): VoiceStats;
462
- };
463
- type VoiceManagerOptions = {
464
- /** Default `VOICE_GROUPS`. */
465
- readonly groups?: Readonly<Record<string, VoiceGroup>>;
466
- readonly maxVoices?: number;
467
- };
468
- /** The voice limiter: per-group rules, a global cap and priority dropping. Pure and time-driven (`advance`), so goldens script it frame by frame. */
469
- declare function createVoiceManager(options?: VoiceManagerOptions): VoiceManager;
470
-
471
215
  /** jogo L62112: a loop's nodes exist only once its volume reaches 0.002. */
472
216
  declare const LOOP_START_ABOVE = 0.002;
473
217
  /** jogo L62125–62126: `setTargetAtTime` time constants. */
@@ -498,64 +242,6 @@ type LoopState = {
498
242
  */
499
243
  declare function createLoopState(recipe: LoopRecipe, open?: boolean): LoopState;
500
244
 
501
- type BusSetting = {
502
- readonly gain?: number;
503
- readonly muted?: boolean;
504
- };
505
- /**
506
- * A mixing chain. `master` → (compressor) → output; with `reverb`, a wet bus → convolver (an impulse from the engine's seed) → master. `noise` is
507
- * the shared noise buffer: its length, and whether it is made with the chain (`eager`, the art scene) or by the first sound that needs it (`lazy`,
508
- * the game). Buses sit under the master and have no node until one is changed.
509
- */
510
- type MixProfile = {
511
- readonly id: string;
512
- readonly master: number;
513
- readonly compressor?: {
514
- readonly threshold: number;
515
- readonly ratio: number;
516
- readonly knee?: number;
517
- readonly attack?: number;
518
- readonly release?: number;
519
- };
520
- readonly reverb?: {
521
- readonly seconds: number;
522
- readonly decay: number;
523
- readonly wet: number;
524
- };
525
- readonly noise: {
526
- readonly seconds: number;
527
- readonly create: 'lazy' | 'eager';
528
- };
529
- readonly buses?: Readonly<Partial<Record<BusId, BusSetting>>>;
530
- readonly sources: readonly string[];
531
- };
532
- /** The two team chains: `game` (master 0.5, jogo L62080) and `art_scene` (compressor and reverb, cena L1305–1313). */
533
- declare const MIX_PROFILES: Readonly<Record<string, MixProfile>>;
534
- /** Q1: the kit plays through the art scene chain (compressor and reverb); `mix: 'game'` reverts. */
535
- declare const DEFAULT_MIX = "art_scene";
536
- /** A profile by id from `profiles`, or the profile itself. */
537
- declare function resolveMix(mix: string | MixProfile, profiles?: Readonly<Record<string, MixProfile>>): MixProfile;
538
- /** The gain a bus plays at: 0 when muted, its gain (default 1) otherwise. */
539
- declare function busGain(setting: BusSetting | undefined): number;
540
-
541
- type DeepPartial<TValue> = TValue extends readonly unknown[] ? TValue : TValue extends object ? {
542
- readonly [Key in keyof TValue]?: DeepPartial<TValue[Key]>;
543
- } : TValue;
544
- /** Every sound and loop the engine knows, by id. Banks register in order; a later bank replaces an earlier recipe with the same id. */
545
- type SoundRegistry = {
546
- register(bank: SoundBank): void;
547
- /** Merged into the recipe by id (objects merge, arrays such as `layers` are replaced); an unknown id is ignored. */
548
- patch(id: string, patch: DeepPartial<SoundRecipe> | DeepPartial<LoopRecipe>): void;
549
- remove(id: string): void;
550
- sound(id: string): SoundRecipe | undefined;
551
- loop(id: string): LoopRecipe | undefined;
552
- soundIds(): string[];
553
- loopIds(): string[];
554
- /** Which bank each id came from. */
555
- bankOf(id: string): string | undefined;
556
- };
557
- declare function createSoundRegistry(banks?: readonly SoundBank[]): SoundRegistry;
558
-
559
245
  /** One row of the game's `sfx` table (jogo L62096–62100): lowpass cutoff, peak gain and seconds of a noise burst. */
560
246
  type NoiseClass = {
561
247
  readonly id: string;
@@ -640,106 +326,58 @@ declare const LIBRARY_SOUNDS: readonly SoundRecipe[];
640
326
  declare const LIBRARY_LOOPS: readonly LoopRecipe[];
641
327
  declare const LIBRARY_BANK: SoundBank;
642
328
 
643
- /** A continuous sound: `set` glides the volume and, for an oscillator, the frequency; `stop` tears the nodes down. */
644
- type AudioLoopHandle = {
645
- set(state: {
646
- readonly volume?: number;
647
- readonly frequency?: number;
648
- }): void;
649
- stop(): void;
650
- };
329
+ /** Small sounds of the hand: `vol / (1 + d² × 0.02)`, lowpass cutoffs `/ (1 + d × 0.04)`, silent below 0.004 (a latch at 10 m is a third, at 50 m gone). */
330
+ declare const FOLEY_FALLOFF: Falloff;
331
+ /** The doors and lids of furniture and vehicles, by what the leaf is (the room picks one from the item, else from the leaf's material). */
332
+ declare const LEAF_FOLEY: readonly SoundRecipe[];
333
+ /** What the hand does with an item: picking it up by what it is made of, throwing it, and the uses (opening, drinking, eating, first aid). */
334
+ declare const ITEM_FOLEY: readonly SoundRecipe[];
335
+ /** The foley bank: register it in the engine (`engine.register(FOLEY_BANK)`). */
336
+ declare const FOLEY_BANK: SoundBank;
337
+ /** What a picked-up item sounds like, by its heaviest material class. */
338
+ declare const PICKUP_CLASSES: readonly ["metal", "plastic", "glass", "paper", "fabric", "wood", "food"];
339
+ type PickupClass = (typeof PICKUP_CLASSES)[number];
340
+ /** The sound set of a leaf worked by hand: the ids it plays at the latch, while it turns, and as it meets the frame (gently, and slammed). */
341
+ type LeafFoley = {
342
+ readonly open: string;
343
+ readonly turn?: string;
344
+ readonly close: string;
345
+ readonly slam?: string;
346
+ readonly locked: string;
347
+ };
348
+ /** The leaf sound sets the kit ships, by name; an item names one (`TestableItem.sounds.leaves`), else the room picks `wood_door` or `metal_door` by the leaf's material. */
349
+ declare const LEAF_FOLEY_SETS: Readonly<Record<string, LeafFoley>>;
651
350
 
652
- type StartQueueOptions = {
653
- /** Most milliseconds of main-thread work one task spends building voices (at least one voice is always built). Default 2. */
654
- readonly budgetMs?: number;
655
- /** A voice still waiting after this many milliseconds is dropped instead of starting late. Default 250. */
656
- readonly maxLatencyMs?: number;
657
- };
351
+ /** Takes per id. */
352
+ declare const BODY_FOLEY_TAKES = 4;
353
+ /** Footsteps fade fast with distance and lose their top: a step 10 m away is a quarter of the level, 30 m a few percent, and duller. */
354
+ declare const FOOTSTEP_FALLOFF: Falloff;
355
+ /** Blows and body sounds carry further than a step. */
356
+ declare const BODY_FALLOFF: Falloff;
357
+ /**
358
+ * Every body sound of `game-contracts`' `BODY_FOLEY_IDS` as a set of four takes (`footstep_concrete_walk` plays `footstep_concrete_walk_01`..`_04`,
359
+ * never the same twice in a row, at ±4% of rate). Register it in the engine the body plays on.
360
+ */
361
+ declare const BODY_FOLEY_BANK: SoundBank;
362
+ /** The ids the bank answers (the sets), in the contract's order. */
363
+ declare const BODY_FOLEY_SET_IDS: readonly string[];
658
364
 
659
- type PlayOptions = {
660
- readonly position?: Vec3;
661
- /** Meters; overrides `position` for the distance (not for the pan). */
662
- readonly distance?: number;
663
- readonly volume?: number;
664
- readonly params?: Readonly<Record<string, number>>;
665
- /** This sound's own stream: same seed, same sound. */
666
- readonly seed?: number;
667
- /** Seconds from now. */
668
- readonly delay?: number;
669
- /** A named stream of the engine (`streamFor(seed, name)`), so one subject never shifts another's sounds. */
670
- readonly channel?: string;
671
- };
672
- type VoiceHandle = {
673
- readonly id: number;
674
- readonly plan: SoundPlan;
675
- stop(): void;
676
- };
677
- /** A subject's own random stream; `ownNoise` also gives it its own noise buffer, filled from that stream (the order `createWeaponAudio` uses). */
678
- type AudioChannel = {
679
- readonly random: () => number;
680
- play(id: string, options?: PlayOptions): VoiceHandle | null;
681
- plan(id: string, options?: PlayOptions): SoundPlan | null;
682
- };
683
- type AudioStats = {
684
- readonly context: 'none' | AudioContextState;
685
- readonly voices: number;
686
- readonly peak: number;
687
- readonly dropped: number;
688
- readonly maxVoices: number;
689
- readonly loops: number;
690
- };
691
- type AudioEngineOptions = {
692
- /** Seeds the engine stream: the noise, the reverb impulse and every sound played without its own seed or channel. Default 1. */
693
- readonly seed?: number;
694
- /** Default `art_scene` (Q1). */
695
- readonly mix?: string | MixProfile;
696
- readonly profiles?: Readonly<Record<string, MixProfile>>;
697
- readonly banks?: readonly SoundBank[];
698
- readonly maxVoices?: number;
699
- readonly groups?: Readonly<Record<string, VoiceGroup>>;
700
- readonly distance?: DistanceMode;
701
- /** 0 (clear) to 1 (behind a wall) for a sound at a point; without it there is no occlusion (Q8). */
702
- readonly occlusion?: (point: Vec3) => number;
703
- readonly createContext?: () => AudioContext | null;
704
- /** Build voices in timed slices between frames instead of inside `play` (a sound starts a few ms late; a burst never costs a frame). Off by default. */
705
- readonly deferredStart?: StartQueueOptions;
706
- };
707
- type AudioEngine = {
708
- readonly registry: SoundRegistry;
709
- register(bank: SoundBank): void;
710
- /** Pure: the plan a sound would play with, from `options.seed` or the engine seed; draws nothing from the live streams. */
711
- plan(id: string, options?: PlayOptions): SoundPlan | null;
712
- play(id: string, options?: PlayOptions): VoiceHandle | null;
713
- playPlan(plan: SoundPlan, options?: {
714
- readonly delay?: number;
715
- }): VoiceHandle | null;
716
- loop(id: string, options?: {
717
- readonly volume?: number;
718
- }): AudioLoopHandle;
719
- channel(options: {
720
- readonly seed?: number;
721
- readonly random?: () => number;
722
- readonly ownNoise?: boolean;
723
- }): AudioChannel;
724
- setListener(listener: Listener): void;
725
- setBus(id: BusId, setting: BusSetting): void;
726
- setMix(mix: string | MixProfile): void;
727
- /** The master volume of the current chain and of any later one (0 to 1). */
728
- setMaster(gain: number): void;
729
- /** Creates the context and the mixing chain if needed and resumes it; call from a click or a key. */
730
- unlock(): void;
731
- /** Creates the context, the mixing chain (reverb impulse included) and the shared noise buffer now, so the first sound does not pay for them inside a frame. Returns false without a context. */
732
- warmUp(): boolean;
733
- stats(): AudioStats;
734
- /** RMS (0 to 1) of what a bus carries now, read from an analyser the first time you ask; sounds started before that do not reach it. 0 without a context. */
735
- level(bus: BusId): number;
736
- dispose(): void;
737
- };
738
365
  /**
739
- * The sound engine: plans recipes and builds them on a lazily created AudioContext through one of the team mixing chains. Without an AudioContext
740
- * (Node, workers) every call except `plan` does nothing.
366
+ * A plan played faster or slower, as a tape would: every frequency (tones, filters, formants, LFOs) times `rate`, every time divided by it. Noise
367
+ * has no pitch of its own, so its colour moves with its filters. `rate` 1 gives the plan back.
741
368
  */
742
- declare function createAudioEngine(options?: AudioEngineOptions): AudioEngine;
369
+ declare function retunePlan(plan: SoundPlan, rate: number): SoundPlan;
370
+ /** Remembers the last variant of each set, so the next draw never repeats it. */
371
+ type SetPicker = {
372
+ /** The variant to play and its rate, drawn from `random` (two numbers: the variant, then the rate). */
373
+ pick(set: SoundSet, random: () => number): {
374
+ readonly id: string;
375
+ readonly rate: number;
376
+ };
377
+ /** Forget the last variants (a fresh scene). */
378
+ reset(): void;
379
+ };
380
+ declare function createSetPicker(): SetPicker;
743
381
 
744
382
  /** Where a plan is built: the context, the bus it plays into, the reverb send (if the mix has one), the shared noise and the start time. */
745
383
  type RealizeTarget = {
@@ -756,6 +394,50 @@ type RealizedVoice = {
756
394
  stop(): void;
757
395
  };
758
396
 
397
+ type SampleTarget = {
398
+ readonly context: BaseAudioContext;
399
+ readonly output: AudioNode;
400
+ readonly buffer: (url: string) => AudioBuffer | undefined;
401
+ readonly time: number;
402
+ };
403
+ /** A sample voice can also be faded out (the choke of its sound). */
404
+ type RealizedSampleVoice = RealizedVoice & {
405
+ fade(at: number, seconds: number): void;
406
+ };
407
+ /**
408
+ * Builds a sample plan: each layer is a buffer source at the planned rate with its own gain, the layers meet in one voice gain (the choke fades it),
409
+ * one lowpass (left out when open) and one stereo panner (when the plan has a pan), then the bus. A layer whose buffer is not loaded is skipped.
410
+ */
411
+ declare function realizeSample(plan: SamplePlan, target: SampleTarget): RealizedSampleVoice;
412
+ /** Seconds a sample plan lasts with its buffers (the longest layer, at its rate). */
413
+ declare function sampleLength(plan: SamplePlan, seconds: (url: string) => number | undefined): number;
414
+
415
+ /** The crossfade between two takes of a loop, in seconds, when `loop: true` gives none. */
416
+ declare const DEFAULT_LOOP_CROSSFADE = 0.25;
417
+ /** The crossfade of a looping sample sound, or `undefined` when it does not loop. */
418
+ declare function loopCrossfade(sound: SampleSound): number | undefined;
419
+ /** Steps of the equal-power ramps (straight lines between points of the sine and cosine quarter). */
420
+ declare const CROSSFADE_STEPS = 8;
421
+ /** The gain of an equal-power crossfade at `t` (0..1) for the take coming in; the take going out has the gain at `1 − t`. */
422
+ declare const equalPowerIn: (t: number) => number;
423
+ /** What a sample loop needs from its engine. */
424
+ type SampleLoopHost = {
425
+ ready(): AudioContext | null;
426
+ /** The node sample voices of a bus go to (the limiter of the bus). */
427
+ output(bus: BusId): AudioNode;
428
+ buffer(url: string): AudioBuffer | undefined;
429
+ isReady(sound: SampleSound): boolean;
430
+ /** Loads the files of the sound (resolves when they are decoded or failed). */
431
+ load(sound: SampleSound): Promise<unknown>;
432
+ /** The recipe loop that plays while the files are not ready. */
433
+ fallback(volume: number): AudioLoopHandle;
434
+ random(): number;
435
+ register(loop: LoopEntry): void;
436
+ unregister(loop: LoopEntry): void;
437
+ /** Whether a bus is muted now. */
438
+ muted(bus: BusId): boolean;
439
+ };
440
+
759
441
  /** Builds a plan's nodes on `target`, in the node order of the team routine its `order` names. */
760
442
  declare function realize(plan: SoundPlan, target: RealizeTarget): RealizedVoice;
761
443
 
@@ -797,61 +479,4 @@ type EngineSink = AudioSink & {
797
479
  /** Lends an engine as the host's `audio`: sounds by key, loops, the listener, and banks registered into the same engine. */
798
480
  declare function createAudioSink(engine: AudioEngine): EngineSink;
799
481
 
800
- /**
801
- * Two probe sounds of the bench itself (a ping and a hiss), so panning, distance and the seed can be heard on something that has no subject. They are
802
- * made by the kit, not delivered by any team (`sdk` in the sources).
803
- */
804
- declare const BENCH_BANK: SoundBank;
805
- type AudioTestModuleOptions = {
806
- /** The engine to test (default: the one the host lends in `host.audio`, else a new one of the module's own). */
807
- engine?: AudioEngine;
808
- /** Banks registered in the engine besides the bench's probes (default the game's noise classes and the library). */
809
- banks?: readonly SoundBank[];
810
- locale?: string;
811
- /** Text of a sound or loop id (`sound.glass`) in the game's words; without it the bench shows the bank and the id. */
812
- translate?: (key: string, locale: string) => string | undefined;
813
- seed?: number;
814
- /** First sound chosen (default `bench_ping`). */
815
- sound?: string;
816
- /**
817
- * Draws the thing the probe stands for, where the sound comes from with the `probe` source (for example a portable radio of `game-items-three`). The module
818
- * draws nothing of its own: without it the area has no probe and the sounds come from the bench settings.
819
- */
820
- probe?: (THREE: unknown) => unknown;
821
- };
822
- /** What the scenarios use of the context the test room passes. */
823
- interface AudioScenarioLike {
824
- expect(condition: boolean, label: string, data?: Record<string, unknown>): void;
825
- }
826
- type AudioTestModule = TestableModule<AudioScenarioLike> & {
827
- /** The engine in use: the host's when it lent one, the module's own otherwise. */
828
- readonly engine: AudioEngine;
829
- /** The resolved plan of the chosen sound as text (the S3 view: every number decided). */
830
- sheet(): string;
831
- /** Plays the chosen sound as the bench is set. */
832
- play(): VoiceHandle | null;
833
- };
834
- /**
835
- * The sound area of a test room, written against the generic contracts only: it plays any sound of an engine at a distance and bearing from the listener
836
- * (or from a probe standing in the area), runs loops, throws a storm of voices at the limiter, switches the mixing chain and its parts, reads the
837
- * level of each bus and prints the resolved plan. The engine is the host's (`host.audio`) when lent, else the module's own.
838
- */
839
- declare function createAudioTestModule(options?: AudioTestModuleOptions): AudioTestModule;
840
-
841
- type AudioBenchText = {
842
- readonly group: string;
843
- readonly name: string;
844
- readonly probe: string;
845
- readonly controls: Readonly<Record<'sound' | 'distance' | 'bearing' | 'volume' | 'mix' | 'seed' | 'play' | 'voice_storm' | 'loop' | 'loop_level' | 'loop_pitch' | 'source', string>>;
846
- readonly hints: Readonly<Record<'distance' | 'bearing' | 'mix' | 'seed' | 'voice_storm' | 'loop_pitch' | 'source', string>>;
847
- readonly options: Readonly<Record<'none' | 'bench' | 'probe', string>>;
848
- readonly layers: Readonly<Record<'reverb' | 'compressor' | 'panning' | 'muffling', string>>;
849
- readonly metrics: Readonly<Record<'voices' | 'peak' | 'dropped' | 'loops' | 'context' | 'plan_length' | 'plan_level' | 'plan_pan' | 'level_weapons' | 'level_voices' | 'level_world' | 'level_ambience' | 'level_weather' | 'level_ui', string>>;
850
- readonly scenarios: Readonly<Record<'panning' | 'distance' | 'determinism' | 'limiter', string>>;
851
- readonly mixes: Readonly<Record<string, string>>;
852
- /** Text of a sound or loop id when the game has one; the bench falls back to the id. */
853
- readonly sheet: Readonly<Record<'title' | 'level' | 'distance' | 'pan' | 'length' | 'silent' | 'layer' | 'none', string>>;
854
- };
855
- declare const audioBenchTextOf: (locale: string) => AudioBenchText;
856
-
857
- export { type AudioBenchText, type AudioChannel, type AudioEngine, type AudioEngineOptions, type AudioLoopHandle, type AudioScenarioLike, type AudioStats, type AudioTestModule, type AudioTestModuleOptions, type Automation, BENCH_BANK, BUILD_ORDERS, BUS_IDS, BUS_PRIORITY, type BuildOrder, type BusId, type BusSetting, type Curve, DEFAULT_LISTENER, DEFAULT_MAX_VOICES, DEFAULT_MIX, DISTANCE_CURVES, type DeepPartial, type DistanceCurveName, type DistanceMode, type EngineSink, type Envelope, type EnvelopePoint, type Falloff, type FilterBank, type FilterSpec, type FormantVoiceSource, GAME_SFX_BANK, GAME_SFX_CLASSES, GAME_SFX_FALLBACK, LIBRARY_BANK, LIBRARY_LOOPS, LIBRARY_SOUNDS, LOOP_SMOOTHING, LOOP_START_ABOVE, type Layer, type LayerSource, type Listener, type LoopAction, type LoopOrder, type LoopRecipe, type LoopState, MIX_PROFILES, type MixChain, type MixProfile, type Modulator, type NoiseClass, type NoiseSource, type OscSource, PAN_LIMIT, PAN_MIN_DISTANCE, type ParamRef, type PlanInput, type PlannedAutomation, type PlannedEnvelopePoint, type PlannedFilter, type PlannedLayer, type PlannedModulator, type PlannedSource, type PlayOptions, type Range, type RealizeTarget, type RealizedVoice, type SceneLength, type SceneNoise, type SceneRecipeOptions, type SceneTone, type SceneVoice, type SoundBank, type SoundPlan, type SoundRecipe, type SoundRegistry, type StartQueueOptions, type Time, VOICE_GROUPS, type VoiceDecision, type VoiceGroup, type VoiceHandle, type VoiceManager, type VoiceManagerOptions, type VoiceRefusal, type VoiceRequest, type VoiceStats, audioBenchTextOf, bufferOf, buildChain, busGain, busPriority, createAudioEngine, createAudioSink, createAudioTestModule, createLoopState, createRng, createSoundRegistry, createVoiceManager, cutoffDivisor, drawBetween, falloffGain, fillImpulse, fillNoise, globalContext, isSilent, listenerDistance, noiseClassRecipe, panFor, planSound, realize, resolveMix, sceneMany, sceneNoise, sceneRecipe, sceneTone, sceneVoice, streamFor, streamSeed, unlockContext };
482
+ export { AudioEngine, AudioLoopHandle, BODY_FALLOFF, BODY_FOLEY_BANK, BODY_FOLEY_SET_IDS, BODY_FOLEY_TAKES, BusId, CALIBRATION_ID, CALIBRATION_LOOP_ID, CALIBRATION_LOOP_SOUND, CALIBRATION_SOUND, CROSSFADE_STEPS, DEFAULT_LOOP_CROSSFADE, DISTANCE_CURVES, type DistanceCurveName, type EngineSink, FOLEY_BANK, FOLEY_FALLOFF, FOOTSTEP_FALLOFF, Falloff, GAME_SFX_BANK, GAME_SFX_CLASSES, GAME_SFX_FALLBACK, ITEM_FOLEY, KIT_CATEGORY_BUS, KIT_SAMPLE_ALIASES, type KitSampleBankOptions, LEAF_FOLEY, LEAF_FOLEY_SETS, LIBRARY_BANK, LIBRARY_LOOPS, LIBRARY_SOUNDS, LOOP_SMOOTHING, LOOP_START_ABOVE, Layer, type LeafFoley, type LoadKitSamplesOptions, type LoopAction, LoopRecipe, type LoopState, type MixChain, MixProfile, type NoiseClass, PICKUP_CLASSES, ParamRef, type PickupClass, Range, type RealizeTarget, type RealizedSampleVoice, type RealizedVoice, SDK_LICENSES, SFX_LAYERS, SFX_TIERS, type SampleBankOptions, SampleCrossover, type SampleDefaults, SampleLoader, type SampleLoopHost, SamplePlan, SampleSound, type SampleTarget, type SceneLength, type SceneNoise, type SceneRecipeOptions, type SceneTone, type SceneVoice, type SdkLicense, type SetPicker, type SfxFileEntry, type SfxLayer, type SfxManifest, type SfxManifestSound, SoundBank, SoundPlan, SoundRecipe, SoundSet, balanceOf, bufferOf, buildChain, calibrationLoader, centroidHz, countHits, createAudioSink, createLoopState, createRng, createSetPicker, cutoffDivisor, dbOf, drawBetween, encodeWav, endDropDb, equalPowerIn, falloffGain, fillImpulse, fillNoise, globalContext, isCalibrationUrl, isSilent, kitSampleBank, kitSampleDefaults, loadKitSamples, loopCrossfade, noiseClassRecipe, onsetIndex, parseSfxName, peakIndex, peakOf, realize, realizeSample, retunePlan, ringSeconds, rmsDb, sampleBankFromManifest, sampleLength, sceneMany, sceneNoise, sceneRecipe, sceneTone, sceneVoice, splitTier, streamFor, streamSeed, unlockContext, withAliases };