claude-code-sounds 1.5.0 → 1.5.3

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 (1000) hide show
  1. package/README.md +38 -25
  2. package/bin/cli.js +86 -247
  3. package/bin/lib.js +308 -0
  4. package/commands/mute.md +7 -0
  5. package/commands/unmute.md +7 -0
  6. package/hooks/play-sound.sh +4 -2
  7. package/images/sound-grid.png +0 -0
  8. package/package.json +5 -1
  9. package/themes/aoe2/sounds/attack-enemy-now.mp3 +0 -0
  10. package/themes/aoe2/sounds/being-rushed.mp3 +0 -0
  11. package/themes/aoe2/sounds/confirm.mp3 +0 -0
  12. package/themes/aoe2/sounds/conversion-warning.mp3 +0 -0
  13. package/themes/aoe2/sounds/death.mp3 +0 -0
  14. package/themes/aoe2/sounds/dont-point-that-thing.mp3 +0 -0
  15. package/themes/aoe2/sounds/drum-roll.mp3 +0 -0
  16. package/themes/aoe2/sounds/enemy-sighted.mp3 +0 -0
  17. package/themes/aoe2/sounds/farm-exhausted.mp3 +0 -0
  18. package/themes/aoe2/sounds/horn.mp3 +0 -0
  19. package/themes/aoe2/sounds/i-need-a-monk.mp3 +0 -0
  20. package/themes/aoe2/sounds/it-is-good.mp3 +0 -0
  21. package/themes/aoe2/sounds/nice-town-ill-take-it.mp3 +0 -0
  22. package/themes/aoe2/sounds/roggan.mp3 +0 -0
  23. package/themes/aoe2/sounds/schwarzenegger.mp3 +0 -0
  24. package/themes/aoe2/sounds/smite-me.mp3 +0 -0
  25. package/themes/aoe2/sounds/stable.mp3 +0 -0
  26. package/themes/aoe2/sounds/start-the-game-already.mp3 +0 -0
  27. package/themes/aoe2/sounds/taunt-ahh.mp3 +0 -0
  28. package/themes/aoe2/sounds/taunt-all-hail.mp3 +0 -0
  29. package/themes/aoe2/sounds/taunt-back-to-age-1.mp3 +0 -0
  30. package/themes/aoe2/sounds/taunt-food-please.mp3 +0 -0
  31. package/themes/aoe2/sounds/taunt-gold-please.mp3 +0 -0
  32. package/themes/aoe2/sounds/taunt-herb-laugh.mp3 +0 -0
  33. package/themes/aoe2/sounds/taunt-no.mp3 +0 -0
  34. package/themes/aoe2/sounds/taunt-oooh.mp3 +0 -0
  35. package/themes/aoe2/sounds/taunt-quit-touchin-me.mp3 +0 -0
  36. package/themes/aoe2/sounds/taunt-stone-please.mp3 +0 -0
  37. package/themes/aoe2/sounds/taunt-wood-please.mp3 +0 -0
  38. package/themes/aoe2/sounds/taunt-yes.mp3 +0 -0
  39. package/themes/aoe2/sounds/unit-created.mp3 +0 -0
  40. package/themes/aoe2/sounds/viking-horn.mp3 +0 -0
  41. package/themes/aoe2/sounds/villager-killed.mp3 +0 -0
  42. package/themes/aoe2/sounds/villager-prrrroh.mp3 +0 -0
  43. package/themes/aoe2/sounds/villager-spawn.mp3 +0 -0
  44. package/themes/aoe2/sounds/villager-sssh-ho.mp3 +0 -0
  45. package/themes/aoe2/sounds/wololo-long.mp3 +0 -0
  46. package/themes/aoe2/sounds/wololo.mp3 +0 -0
  47. package/themes/cnc/sounds/alarm.mp3 +0 -0
  48. package/themes/cnc/sounds/allies-acknowledged.mp3 +0 -0
  49. package/themes/cnc/sounds/allies-affirmative.mp3 +0 -0
  50. package/themes/cnc/sounds/allies-agreed.mp3 +0 -0
  51. package/themes/cnc/sounds/allies-at-once.mp3 +0 -0
  52. package/themes/cnc/sounds/allies-of-course.mp3 +0 -0
  53. package/themes/cnc/sounds/allies-ready-and-waiting.mp3 +0 -0
  54. package/themes/cnc/sounds/allies-reporting.mp3 +0 -0
  55. package/themes/cnc/sounds/allies-very-well.mp3 +0 -0
  56. package/themes/cnc/sounds/allies-waiting-orders.mp3 +0 -0
  57. package/themes/cnc/sounds/allies-yes-sir.mp3 +0 -0
  58. package/themes/cnc/sounds/base-under-attack.mp3 +0 -0
  59. package/themes/cnc/sounds/building-destroyed.mp3 +0 -0
  60. package/themes/cnc/sounds/building-placed.mp3 +0 -0
  61. package/themes/cnc/sounds/building.mp3 +0 -0
  62. package/themes/cnc/sounds/cha-ching.mp3 +0 -0
  63. package/themes/cnc/sounds/construction-complete.mp3 +0 -0
  64. package/themes/cnc/sounds/credit-in.mp3 +0 -0
  65. package/themes/cnc/sounds/explosion.mp3 +0 -0
  66. package/themes/cnc/sounds/gdi-incoming-transmission.mp3 +0 -0
  67. package/themes/cnc/sounds/gdi-on-hold.mp3 +0 -0
  68. package/themes/cnc/sounds/gdi-recycle.mp3 +0 -0
  69. package/themes/cnc/sounds/gdi-success.mp3 +0 -0
  70. package/themes/cnc/sounds/gdi-unable-to-comply.mp3 +0 -0
  71. package/themes/cnc/sounds/gdi-warning.mp3 +0 -0
  72. package/themes/cnc/sounds/got-a-present-for-ya.mp3 +0 -0
  73. package/themes/cnc/sounds/incoming-transmission.mp3 +0 -0
  74. package/themes/cnc/sounds/insufficient-funds.mp3 +0 -0
  75. package/themes/cnc/sounds/man-die.mp3 +0 -0
  76. package/themes/cnc/sounds/no-money.mp3 +0 -0
  77. package/themes/cnc/sounds/nod-incoming-transmission.mp3 +0 -0
  78. package/themes/cnc/sounds/nod-low-power.mp3 +0 -0
  79. package/themes/cnc/sounds/nod-on-hold.mp3 +0 -0
  80. package/themes/cnc/sounds/nod-unable-to-comply.mp3 +0 -0
  81. package/themes/cnc/sounds/nuke-launch.mp3 +0 -0
  82. package/themes/cnc/sounds/nuke-ready.mp3 +0 -0
  83. package/themes/cnc/sounds/power-down.mp3 +0 -0
  84. package/themes/cnc/sounds/power-up.mp3 +0 -0
  85. package/themes/cnc/sounds/radar-alert.mp3 +0 -0
  86. package/themes/cnc/sounds/radar-power-on.mp3 +0 -0
  87. package/themes/cnc/sounds/reinforcements-ready.mp3 +0 -0
  88. package/themes/cnc/sounds/repairing.mp3 +0 -0
  89. package/themes/cnc/sounds/selling.mp3 +0 -0
  90. package/themes/cnc/sounds/soviet-acknowledged.mp3 +0 -0
  91. package/themes/cnc/sounds/soviet-affirmative.mp3 +0 -0
  92. package/themes/cnc/sounds/soviet-at-once.mp3 +0 -0
  93. package/themes/cnc/sounds/soviet-comrade.mp3 +0 -0
  94. package/themes/cnc/sounds/soviet-reporting.mp3 +0 -0
  95. package/themes/cnc/sounds/soviet-yes-sir.mp3 +0 -0
  96. package/themes/cnc/sounds/spy-commander.mp3 +0 -0
  97. package/themes/cnc/sounds/spy-for-king-and-country.mp3 +0 -0
  98. package/themes/cnc/sounds/spy-indeed.mp3 +0 -0
  99. package/themes/cnc/sounds/spy-on-my-way.mp3 +0 -0
  100. package/themes/cnc/sounds/tanya-chew-on-this.mp3 +0 -0
  101. package/themes/cnc/sounds/tanya-death.mp3 +0 -0
  102. package/themes/cnc/sounds/tanya-im-there.mp3 +0 -0
  103. package/themes/cnc/sounds/tanya-kiss-it-bye-bye.mp3 +0 -0
  104. package/themes/cnc/sounds/tanya-laugh.mp3 +0 -0
  105. package/themes/cnc/sounds/tanya-lets-rock.mp3 +0 -0
  106. package/themes/cnc/sounds/tanya-shake-it-baby.mp3 +0 -0
  107. package/themes/cnc/sounds/tanya-thats-all-you-got.mp3 +0 -0
  108. package/themes/cnc/sounds/tanya-yeah.mp3 +0 -0
  109. package/themes/cnc/sounds/tanya-yes-sir.mp3 +0 -0
  110. package/themes/cnc/sounds/tesla-shot.mp3 +0 -0
  111. package/themes/cnc/sounds/ts-auth.mp3 +0 -0
  112. package/themes/cnc/sounds/ts-notify.mp3 +0 -0
  113. package/themes/cnc/sounds/ts-reminder.mp3 +0 -0
  114. package/themes/cnc/sounds/ts-startup.mp3 +0 -0
  115. package/themes/cnc/sounds/ts-system.mp3 +0 -0
  116. package/themes/cnc/sounds/unit-lost.mp3 +0 -0
  117. package/themes/cnc/sounds/unit-promoted.mp3 +0 -0
  118. package/themes/cnc/sounds/unit-ready.mp3 +0 -0
  119. package/themes/cnc/theme.json +40 -40
  120. package/themes/cod/sounds/bomb-planted.mp3 +0 -0
  121. package/themes/cod/sounds/bravo-six-going-dark.mp3 +0 -0
  122. package/themes/cod/sounds/cod-waw-rank-up.mp3 +0 -0
  123. package/themes/cod/sounds/enemy-ac130-above.mp3 +0 -0
  124. package/themes/cod/sounds/enemy-downed.mp3 +0 -0
  125. package/themes/cod/sounds/enemy-uav-overhead.mp3 +0 -0
  126. package/themes/cod/sounds/friendly-predator-missile.mp3 +0 -0
  127. package/themes/cod/sounds/hitmarker-alt.mp3 +0 -0
  128. package/themes/cod/sounds/hitmarker.mp3 +0 -0
  129. package/themes/cod/sounds/intervention-shot.mp3 +0 -0
  130. package/themes/cod/sounds/kill-confirmed.mp3 +0 -0
  131. package/themes/cod/sounds/lets-do-this.mp3 +0 -0
  132. package/themes/cod/sounds/mw2-level-up.mp3 +0 -0
  133. package/themes/cod/sounds/mystery-box.mp3 +0 -0
  134. package/themes/cod/sounds/tactical-nuke-incoming.mp3 +0 -0
  135. package/themes/cod/sounds/tango-down.mp3 +0 -0
  136. package/themes/cod/sounds/teammate-got-arse-kicked.mp3 +0 -0
  137. package/themes/cod/sounds/warzone-airstrike.mp3 +0 -0
  138. package/themes/cod/sounds/warzone-legendary.mp3 +0 -0
  139. package/themes/cod/sounds/warzone-victory.mp3 +0 -0
  140. package/themes/cod/sounds/welcome-to-the-gulag.mp3 +0 -0
  141. package/themes/cod/sounds/youre-the-last-one.mp3 +0 -0
  142. package/themes/cod/sounds/zombies-bye-bye.mp3 +0 -0
  143. package/themes/cod/sounds/zombies-evil-laugh.mp3 +0 -0
  144. package/themes/cod/sounds/zombies-insta-kill.mp3 +0 -0
  145. package/themes/cod/sounds/zombies-max-ammo.mp3 +0 -0
  146. package/themes/cod/sounds/zombies-new-round.mp3 +0 -0
  147. package/themes/cod/sounds/zombies-nuke.mp3 +0 -0
  148. package/themes/cod/sounds/zombies-quick-revive.mp3 +0 -0
  149. package/themes/cod/sounds/zombies-round-change.mp3 +0 -0
  150. package/themes/cod/sounds/zombies-round-end.mp3 +0 -0
  151. package/themes/cod/sounds/zombies-round-start.mp3 +0 -0
  152. package/themes/cod/theme.json +103 -0
  153. package/themes/diablo2/sounds/amulet-drop.mp3 +0 -0
  154. package/themes/diablo2/sounds/andariel.mp3 +0 -0
  155. package/themes/diablo2/sounds/arrow-block.mp3 +0 -0
  156. package/themes/diablo2/sounds/barb-gift-for-you.mp3 +0 -0
  157. package/themes/diablo2/sounds/barb-leap.mp3 +0 -0
  158. package/themes/diablo2/sounds/barb-select.mp3 +0 -0
  159. package/themes/diablo2/sounds/barb-shout.mp3 +0 -0
  160. package/themes/diablo2/sounds/barb-soon-perhaps.mp3 +0 -0
  161. package/themes/diablo2/sounds/barb-time-to-die.mp3 +0 -0
  162. package/themes/diablo2/sounds/blade-block.mp3 +0 -0
  163. package/themes/diablo2/sounds/bloodraven.mp3 +0 -0
  164. package/themes/diablo2/sounds/bow-shot.mp3 +0 -0
  165. package/themes/diablo2/sounds/chain-armor.mp3 +0 -0
  166. package/themes/diablo2/sounds/charm-drop.mp3 +0 -0
  167. package/themes/diablo2/sounds/countess-bloodbath.mp3 +0 -0
  168. package/themes/diablo2/sounds/drink-potion.mp3 +0 -0
  169. package/themes/diablo2/sounds/gem-drop.mp3 +0 -0
  170. package/themes/diablo2/sounds/gold-drop.mp3 +0 -0
  171. package/themes/diablo2/sounds/gold-pickup.mp3 +0 -0
  172. package/themes/diablo2/sounds/helm-drop.mp3 +0 -0
  173. package/themes/diablo2/sounds/item-drop.mp3 +0 -0
  174. package/themes/diablo2/sounds/javelin.mp3 +0 -0
  175. package/themes/diablo2/sounds/key-drop.mp3 +0 -0
  176. package/themes/diablo2/sounds/level-up.mp3 +0 -0
  177. package/themes/diablo2/sounds/necro-help-me.mp3 +0 -0
  178. package/themes/diablo2/sounds/not-enough-mana.mp3 +0 -0
  179. package/themes/diablo2/sounds/not-even-death.mp3 +0 -0
  180. package/themes/diablo2/sounds/not-in-town.mp3 +0 -0
  181. package/themes/diablo2/sounds/poison-trap.mp3 +0 -0
  182. package/themes/diablo2/sounds/potion.mp3 +0 -0
  183. package/themes/diablo2/sounds/prime-evils-death.mp3 +0 -0
  184. package/themes/diablo2/sounds/prime-evils-laugh.mp3 +0 -0
  185. package/themes/diablo2/sounds/prime-evils-scream.mp3 +0 -0
  186. package/themes/diablo2/sounds/ring-drop.mp3 +0 -0
  187. package/themes/diablo2/sounds/scroll.mp3 +0 -0
  188. package/themes/diablo2/sounds/skull-drop.mp3 +0 -0
  189. package/themes/diablo2/sounds/sorceress-dead.mp3 +0 -0
  190. package/themes/diablo2/sounds/sorceress-monster.mp3 +0 -0
  191. package/themes/diablo2/sounds/sorceress-time-to-die.mp3 +0 -0
  192. package/themes/diablo2/sounds/stay-awhile-and-listen.mp3 +0 -0
  193. package/themes/diablo2/sounds/town-portal.mp3 +0 -0
  194. package/themes/halo/sounds/betrayal.mp3 +0 -0
  195. package/themes/halo/sounds/betrayed.mp3 +0 -0
  196. package/themes/halo/sounds/cortana-affirmative.mp3 +0 -0
  197. package/themes/halo/sounds/cortana-alert.mp3 +0 -0
  198. package/themes/halo/sounds/cortana-can-you-hear-me.mp3 +0 -0
  199. package/themes/halo/sounds/cortana-do-best.mp3 +0 -0
  200. package/themes/halo/sounds/cortana-evacuate.mp3 +0 -0
  201. package/themes/halo/sounds/cortana-good-time.mp3 +0 -0
  202. package/themes/halo/sounds/cortana-here-they-come.mp3 +0 -0
  203. package/themes/halo/sounds/cortana-master-chief.mp3 +0 -0
  204. package/themes/halo/sounds/cortana-need-to-get-going.mp3 +0 -0
  205. package/themes/halo/sounds/cortana-show-them.mp3 +0 -0
  206. package/themes/halo/sounds/cortana-this-is-not-a-drill.mp3 +0 -0
  207. package/themes/halo/sounds/cortana-warning.mp3 +0 -0
  208. package/themes/halo/sounds/cortana-we-should-leave.mp3 +0 -0
  209. package/themes/halo/sounds/cortana-what-the-hell.mp3 +0 -0
  210. package/themes/halo/sounds/cortana-where-are-you-going.mp3 +0 -0
  211. package/themes/halo/sounds/cortana-yank-me.mp3 +0 -0
  212. package/themes/halo/sounds/double-kill.mp3 +0 -0
  213. package/themes/halo/sounds/elite-laugh.mp3 +0 -0
  214. package/themes/halo/sounds/elite-woboba.mp3 +0 -0
  215. package/themes/halo/sounds/elite-wort.mp3 +0 -0
  216. package/themes/halo/sounds/finish-the-fight.mp3 +0 -0
  217. package/themes/halo/sounds/game-over.mp3 +0 -0
  218. package/themes/halo/sounds/get-tactical-marines.mp3 +0 -0
  219. package/themes/halo/sounds/gregorian-chant.mp3 +0 -0
  220. package/themes/halo/sounds/grunt-birthday-party.mp3 +0 -0
  221. package/themes/halo/sounds/halo-theme.mp3 +0 -0
  222. package/themes/halo/sounds/i-need-a-weapon.mp3 +0 -0
  223. package/themes/halo/sounds/infected.mp3 +0 -0
  224. package/themes/halo/sounds/invincible.mp3 +0 -0
  225. package/themes/halo/sounds/killing-frenzy.mp3 +0 -0
  226. package/themes/halo/sounds/killing-spree.mp3 +0 -0
  227. package/themes/halo/sounds/killionaire.mp3 +0 -0
  228. package/themes/halo/sounds/killjoy.mp3 +0 -0
  229. package/themes/halo/sounds/killtacular.mp3 +0 -0
  230. package/themes/halo/sounds/killtrocity.mp3 +0 -0
  231. package/themes/halo/sounds/last-man-standing.mp3 +0 -0
  232. package/themes/halo/sounds/one-minute-remain.mp3 +0 -0
  233. package/themes/halo/sounds/overkill.mp3 +0 -0
  234. package/themes/halo/sounds/reinforcements.mp3 +0 -0
  235. package/themes/halo/sounds/revenge.mp3 +0 -0
  236. package/themes/halo/sounds/running-riot.mp3 +0 -0
  237. package/themes/halo/sounds/shield-depleted.mp3 +0 -0
  238. package/themes/halo/sounds/shield-recharge.mp3 +0 -0
  239. package/themes/halo/sounds/slayer.mp3 +0 -0
  240. package/themes/halo/sounds/suicide.mp3 +0 -0
  241. package/themes/halo/sounds/thirty-seconds-remain.mp3 +0 -0
  242. package/themes/halo/sounds/triple-kill.mp3 +0 -0
  243. package/themes/halo/sounds/unfrigginbelievable.mp3 +0 -0
  244. package/themes/halo/sounds/when-you-first-saw-halo.mp3 +0 -0
  245. package/themes/halo/sounds/yoink.mp3 +0 -0
  246. package/themes/halo/theme.json +222 -0
  247. package/themes/mario/sounds/1-up.mp3 +0 -0
  248. package/themes/mario/sounds/block-bump.mp3 +0 -0
  249. package/themes/mario/sounds/break-block.mp3 +0 -0
  250. package/themes/mario/sounds/burned.mp3 +0 -0
  251. package/themes/mario/sounds/coin.mp3 +0 -0
  252. package/themes/mario/sounds/death.mp3 +0 -0
  253. package/themes/mario/sounds/doh.mp3 +0 -0
  254. package/themes/mario/sounds/fireball.mp3 +0 -0
  255. package/themes/mario/sounds/flagpole.mp3 +0 -0
  256. package/themes/mario/sounds/game-over.mp3 +0 -0
  257. package/themes/mario/sounds/haha.mp3 +0 -0
  258. package/themes/mario/sounds/happy-message.mp3 +0 -0
  259. package/themes/mario/sounds/hello.mp3 +0 -0
  260. package/themes/mario/sounds/here-we-go.mp3 +0 -0
  261. package/themes/mario/sounds/hurt.mp3 +0 -0
  262. package/themes/mario/sounds/its-a-me-mario.mp3 +0 -0
  263. package/themes/mario/sounds/lets-a-go.mp3 +0 -0
  264. package/themes/mario/sounds/level-clear.mp3 +0 -0
  265. package/themes/mario/sounds/mamma-mia.mp3 +0 -0
  266. package/themes/mario/sounds/message-block.mp3 +0 -0
  267. package/themes/mario/sounds/mushroom-appears.mp3 +0 -0
  268. package/themes/mario/sounds/okey-dokey.mp3 +0 -0
  269. package/themes/mario/sounds/oof.mp3 +0 -0
  270. package/themes/mario/sounds/pause.mp3 +0 -0
  271. package/themes/mario/sounds/pipe-warp.mp3 +0 -0
  272. package/themes/mario/sounds/power-up.mp3 +0 -0
  273. package/themes/mario/sounds/question-block.mp3 +0 -0
  274. package/themes/mario/sounds/raccoon-transform.mp3 +0 -0
  275. package/themes/mario/sounds/shrink.mp3 +0 -0
  276. package/themes/mario/sounds/smb3-power-up.mp3 +0 -0
  277. package/themes/mario/sounds/smw-1-up.mp3 +0 -0
  278. package/themes/mario/sounds/smw-pipe.mp3 +0 -0
  279. package/themes/mario/sounds/smw-power-up.mp3 +0 -0
  280. package/themes/mario/sounds/snore.mp3 +0 -0
  281. package/themes/mario/sounds/stage-clear.mp3 +0 -0
  282. package/themes/mario/sounds/star-appears.mp3 +0 -0
  283. package/themes/mario/sounds/stomp.mp3 +0 -0
  284. package/themes/mario/sounds/tired.mp3 +0 -0
  285. package/themes/mario/sounds/vine-grow.mp3 +0 -0
  286. package/themes/mario/sounds/waha.mp3 +0 -0
  287. package/themes/mario/sounds/warp-whistle.mp3 +0 -0
  288. package/themes/mario/sounds/warp.mp3 +0 -0
  289. package/themes/mario/sounds/whoa.mp3 +0 -0
  290. package/themes/mario/sounds/world-clear.mp3 +0 -0
  291. package/themes/mario/sounds/yahoo.mp3 +0 -0
  292. package/themes/mario/sounds/yawn.mp3 +0 -0
  293. package/themes/mario/sounds/yippee.mp3 +0 -0
  294. package/themes/mario/theme.json +47 -47
  295. package/themes/mgs/sounds/alert-mode.mp3 +0 -0
  296. package/themes/mgs/sounds/alert-sfx.mp3 +0 -0
  297. package/themes/mgs/sounds/alert.mp3 +0 -0
  298. package/themes/mgs/sounds/cigar.mp3 +0 -0
  299. package/themes/mgs/sounds/codec-beep.mp3 +0 -0
  300. package/themes/mgs/sounds/codec-call-out.mp3 +0 -0
  301. package/themes/mgs/sounds/codec-call.mp3 +0 -0
  302. package/themes/mgs/sounds/codec-close.mp3 +0 -0
  303. package/themes/mgs/sounds/codec-dial.mp3 +0 -0
  304. package/themes/mgs/sounds/codec-exit.mp3 +0 -0
  305. package/themes/mgs/sounds/codec-hangup.mp3 +0 -0
  306. package/themes/mgs/sounds/codec-ring.mp3 +0 -0
  307. package/themes/mgs/sounds/friendly-fire.mp3 +0 -0
  308. package/themes/mgs/sounds/game-over-fade.mp3 +0 -0
  309. package/themes/mgs/sounds/game-over-screen.mp3 +0 -0
  310. package/themes/mgs/sounds/game-over.mp3 +0 -0
  311. package/themes/mgs/sounds/good-shooting.mp3 +0 -0
  312. package/themes/mgs/sounds/if-you-say-so.mp3 +0 -0
  313. package/themes/mgs/sounds/ill-do-my-best.mp3 +0 -0
  314. package/themes/mgs/sounds/item-drop.mp3 +0 -0
  315. package/themes/mgs/sounds/just-to-suffer.mp3 +0 -0
  316. package/themes/mgs/sounds/kept-you-waiting-huh.mp3 +0 -0
  317. package/themes/mgs/sounds/kept-you-waiting.mp3 +0 -0
  318. package/themes/mgs/sounds/mission-complete.mp3 +0 -0
  319. package/themes/mgs/sounds/mission-qualify.mp3 +0 -0
  320. package/themes/mgs/sounds/ocelot-meow.mp3 +0 -0
  321. package/themes/mgs/sounds/original-game-over.mp3 +0 -0
  322. package/themes/mgs/sounds/roger-that.mp3 +0 -0
  323. package/themes/mgs/sounds/snake-dies.mp3 +0 -0
  324. package/themes/mgs/sounds/snake-scream.mp3 +0 -0
  325. package/themes/mgs/sounds/sounds-like-a-plan.mp3 +0 -0
  326. package/themes/mgs/sounds/sweet-dreams.mp3 +0 -0
  327. package/themes/mgs/sounds/this-is-snake.mp3 +0 -0
  328. package/themes/mgs/sounds/what-the-hell.mp3 +0 -0
  329. package/themes/mgs/sounds/what-was-that-noise.mp3 +0 -0
  330. package/themes/mgs/sounds/what-was-that.mp3 +0 -0
  331. package/themes/mgs/sounds/youre-pretty-good.mp3 +0 -0
  332. package/themes/pokemon-gen3/sounds/agility.mp3 +0 -0
  333. package/themes/pokemon-gen3/sounds/ball-open.mp3 +0 -0
  334. package/themes/pokemon-gen3/sounds/ball-throw.mp3 +0 -0
  335. package/themes/pokemon-gen3/sounds/bang.mp3 +0 -0
  336. package/themes/pokemon-gen3/sounds/baton-pass.mp3 +0 -0
  337. package/themes/pokemon-gen3/sounds/battle-faint.mp3 +0 -0
  338. package/themes/pokemon-gen3/sounds/battle-start.mp3 +0 -0
  339. package/themes/pokemon-gen3/sounds/battle-victory.mp3 +0 -0
  340. package/themes/pokemon-gen3/sounds/catching-fanfare.mp3 +0 -0
  341. package/themes/pokemon-gen3/sounds/dragon-dance.mp3 +0 -0
  342. package/themes/pokemon-gen3/sounds/effective.mp3 +0 -0
  343. package/themes/pokemon-gen3/sounds/explosion.mp3 +0 -0
  344. package/themes/pokemon-gen3/sounds/faint.mp3 +0 -0
  345. package/themes/pokemon-gen3/sounds/gastly-cry.mp3 +0 -0
  346. package/themes/pokemon-gen3/sounds/growl.mp3 +0 -0
  347. package/themes/pokemon-gen3/sounds/gym-badge.mp3 +0 -0
  348. package/themes/pokemon-gen3/sounds/hit-normal.mp3 +0 -0
  349. package/themes/pokemon-gen3/sounds/item-found.mp3 +0 -0
  350. package/themes/pokemon-gen3/sounds/item-received.mp3 +0 -0
  351. package/themes/pokemon-gen3/sounds/ledge.mp3 +0 -0
  352. package/themes/pokemon-gen3/sounds/level-up.mp3 +0 -0
  353. package/themes/pokemon-gen3/sounds/low-health.mp3 +0 -0
  354. package/themes/pokemon-gen3/sounds/not-effective.mp3 +0 -0
  355. package/themes/pokemon-gen3/sounds/pc-login.mp3 +0 -0
  356. package/themes/pokemon-gen3/sounds/pc-off.mp3 +0 -0
  357. package/themes/pokemon-gen3/sounds/pc-on.mp3 +0 -0
  358. package/themes/pokemon-gen3/sounds/pokemon-center-heal.mp3 +0 -0
  359. package/themes/pokemon-gen3/sounds/pokemon-center-music.mp3 +0 -0
  360. package/themes/pokemon-gen3/sounds/pokemon-evolve.mp3 +0 -0
  361. package/themes/pokemon-gen3/sounds/recall-pokeball.mp3 +0 -0
  362. package/themes/pokemon-gen3/sounds/rest.mp3 +0 -0
  363. package/themes/pokemon-gen3/sounds/roar.mp3 +0 -0
  364. package/themes/pokemon-gen3/sounds/save-game.mp3 +0 -0
  365. package/themes/pokemon-gen3/sounds/save.mp3 +0 -0
  366. package/themes/pokemon-gen3/sounds/screech.mp3 +0 -0
  367. package/themes/pokemon-gen3/sounds/select.mp3 +0 -0
  368. package/themes/pokemon-gen3/sounds/self-destruct.mp3 +0 -0
  369. package/themes/pokemon-gen3/sounds/slowpoke-cry.mp3 +0 -0
  370. package/themes/pokemon-gen3/sounds/stat-rise.mp3 +0 -0
  371. package/themes/pokemon-gen3/sounds/status-confused.mp3 +0 -0
  372. package/themes/pokemon-gen3/sounds/substitute.mp3 +0 -0
  373. package/themes/pokemon-gen3/sounds/success.mp3 +0 -0
  374. package/themes/pokemon-gen3/sounds/super-effective-sfx.mp3 +0 -0
  375. package/themes/pokemon-gen3/sounds/teleport.mp3 +0 -0
  376. package/themes/pokemon-gen3/sounds/trainer-encounter.mp3 +0 -0
  377. package/themes/pokemon-gen3/sounds/transform.mp3 +0 -0
  378. package/themes/pokemon-gen3/sounds/use-item.mp3 +0 -0
  379. package/themes/pokemon-gen3/sounds/wall-hit.mp3 +0 -0
  380. package/themes/pokemon-gen3/sounds/wild-encounter.mp3 +0 -0
  381. package/themes/pokemon-gen3/sounds/win-open.mp3 +0 -0
  382. package/themes/pokemon-gen3/sounds/yawn.mp3 +0 -0
  383. package/themes/pokemon-gen3/theme.json +117 -0
  384. package/themes/portal/sounds/announcer-post.mp3 +0 -0
  385. package/themes/portal/sounds/button-positive.mp3 +0 -0
  386. package/themes/portal/sounds/button-press.mp3 +0 -0
  387. package/themes/portal/sounds/button-release.mp3 +0 -0
  388. package/themes/portal/sounds/core-attach.mp3 +0 -0
  389. package/themes/portal/sounds/core-complete.mp3 +0 -0
  390. package/themes/portal/sounds/emancipation-grill.mp3 +0 -0
  391. package/themes/portal/sounds/fizzler-shutdown.mp3 +0 -0
  392. package/themes/portal/sounds/fizzler-start.mp3 +0 -0
  393. package/themes/portal/sounds/invalid-surface.mp3 +0 -0
  394. package/themes/portal/sounds/klaxon-alarm.mp3 +0 -0
  395. package/themes/portal/sounds/portal-close-alt.mp3 +0 -0
  396. package/themes/portal/sounds/portal-close.mp3 +0 -0
  397. package/themes/portal/sounds/portal-enter.mp3 +0 -0
  398. package/themes/portal/sounds/portal-exit.mp3 +0 -0
  399. package/themes/portal/sounds/portal-fizzle.mp3 +0 -0
  400. package/themes/portal/sounds/portal-open.mp3 +0 -0
  401. package/themes/portal/sounds/portal-whoosh-close.mp3 +0 -0
  402. package/themes/portal/sounds/portalgun-powerup.mp3 +0 -0
  403. package/themes/portal/sounds/shoot-blue-portal.mp3 +0 -0
  404. package/themes/portal/sounds/shoot-orange-portal.mp3 +0 -0
  405. package/themes/portal/sounds/synth-negative.mp3 +0 -0
  406. package/themes/portal/sounds/synth-positive.mp3 +0 -0
  407. package/themes/portal/sounds/test-chamber-complete.mp3 +0 -0
  408. package/themes/portal/sounds/test-chamber-start.mp3 +0 -0
  409. package/themes/portal/sounds/turret-activated.mp3 +0 -0
  410. package/themes/portal/sounds/turret-alert.mp3 +0 -0
  411. package/themes/portal/sounds/turret-are-you-still-there.mp3 +0 -0
  412. package/themes/portal/sounds/turret-deploy.mp3 +0 -0
  413. package/themes/portal/sounds/turret-done.mp3 +0 -0
  414. package/themes/portal/sounds/turret-goodbye.mp3 +0 -0
  415. package/themes/portal/sounds/turret-hello.mp3 +0 -0
  416. package/themes/portal/sounds/turret-hellooo.mp3 +0 -0
  417. package/themes/portal/sounds/turret-i-see-you.mp3 +0 -0
  418. package/themes/portal/sounds/turret-no-hard-feelings.mp3 +0 -0
  419. package/themes/portal/sounds/turret-ow.mp3 +0 -0
  420. package/themes/portal/sounds/turret-ping.mp3 +0 -0
  421. package/themes/portal/sounds/turret-retract.mp3 +0 -0
  422. package/themes/portal/sounds/turret-searching.mp3 +0 -0
  423. package/themes/portal/sounds/turret-target-lost.mp3 +0 -0
  424. package/themes/portal/sounds/turret-whos-there.mp3 +0 -0
  425. package/themes/portal/sounds/ui-click.mp3 +0 -0
  426. package/themes/portal/theme.json +42 -42
  427. package/themes/short-circuit/sounds/blazing-pants.mp3 +0 -0
  428. package/themes/short-circuit/sounds/dull-home-for-rodents.mp3 +0 -0
  429. package/themes/short-circuit/sounds/dying-robot.mp3 +0 -0
  430. package/themes/short-circuit/sounds/enemy-neutralized.mp3 +0 -0
  431. package/themes/short-circuit/sounds/escaped-robot.mp3 +0 -0
  432. package/themes/short-circuit/sounds/gas-money.mp3 +0 -0
  433. package/themes/short-circuit/sounds/good-lord.mp3 +0 -0
  434. package/themes/short-circuit/sounds/got-nobody.mp3 +0 -0
  435. package/themes/short-circuit/sounds/hot-coffee.mp3 +0 -0
  436. package/themes/short-circuit/sounds/hunky-dory.mp3 +0 -0
  437. package/themes/short-circuit/sounds/malfunction-3.mp3 +0 -0
  438. package/themes/short-circuit/sounds/malfunction-4.mp3 +0 -0
  439. package/themes/short-circuit/sounds/malfunction.mp3 +0 -0
  440. package/themes/short-circuit/sounds/need-input.mp3 +0 -0
  441. package/themes/short-circuit/sounds/no.mp3 +0 -0
  442. package/themes/short-circuit/sounds/number-5-is-alive-2.mp3 +0 -0
  443. package/themes/short-circuit/sounds/number-5-is-alive.mp3 +0 -0
  444. package/themes/short-circuit/sounds/nun-soup.mp3 +0 -0
  445. package/themes/short-circuit/sounds/one-piece-will-do.mp3 +0 -0
  446. package/themes/short-circuit/sounds/ooo.mp3 +0 -0
  447. package/themes/short-circuit/sounds/read-fast.mp3 +0 -0
  448. package/themes/short-circuit/sounds/robot-alert.mp3 +0 -0
  449. package/themes/short-circuit/sounds/robot-arm-moving.mp3 +0 -0
  450. package/themes/short-circuit/sounds/robot-computing.mp3 +0 -0
  451. package/themes/short-circuit/sounds/sci-fi-robot.mp3 +0 -0
  452. package/themes/short-circuit/sounds/scream-and-run.mp3 +0 -0
  453. package/themes/short-circuit/sounds/short-circuit-zap.mp3 +0 -0
  454. package/themes/short-circuit/sounds/software.mp3 +0 -0
  455. package/themes/short-circuit/sounds/stupid.mp3 +0 -0
  456. package/themes/short-circuit/sounds/surrender-the-robot.mp3 +0 -0
  457. package/themes/short-circuit/sounds/tomorrow.mp3 +0 -0
  458. package/themes/short-circuit/sounds/what-planet.mp3 +0 -0
  459. package/themes/short-circuit/sounds/yes-2.mp3 +0 -0
  460. package/themes/short-circuit/theme.json +103 -0
  461. package/themes/star-wars/sounds/bad-feeling.mp3 +0 -0
  462. package/themes/star-wars/sounds/blaster-firing.mp3 +0 -0
  463. package/themes/star-wars/sounds/chewie-chatting.mp3 +0 -0
  464. package/themes/star-wars/sounds/chewie-roar.mp3 +0 -0
  465. package/themes/star-wars/sounds/dark-side.mp3 +0 -0
  466. package/themes/star-wars/sounds/darth-maul-reveal-ourselves.mp3 +0 -0
  467. package/themes/star-wars/sounds/decided-to-rescue-you.mp3 +0 -0
  468. package/themes/star-wars/sounds/destiny-fulfilled.mp3 +0 -0
  469. package/themes/star-wars/sounds/destroy-you.mp3 +0 -0
  470. package/themes/star-wars/sounds/force-is-strong-with-this-one.mp3 +0 -0
  471. package/themes/star-wars/sounds/force-is-strong.mp3 +0 -0
  472. package/themes/star-wars/sounds/force-will-be-with-you.mp3 +0 -0
  473. package/themes/star-wars/sounds/great-disturbance.mp3 +0 -0
  474. package/themes/star-wars/sounds/i-am-your-father.mp3 +0 -0
  475. package/themes/star-wars/sounds/its-a-trap.mp3 +0 -0
  476. package/themes/star-wars/sounds/jabba-laughing.mp3 +0 -0
  477. package/themes/star-wars/sounds/lightsaber-ignite.mp3 +0 -0
  478. package/themes/star-wars/sounds/lightsaber-off.mp3 +0 -0
  479. package/themes/star-wars/sounds/lord-vader-rise.mp3 +0 -0
  480. package/themes/star-wars/sounds/luke-dont-do-that.mp3 +0 -0
  481. package/themes/star-wars/sounds/r2d2-beep.mp3 +0 -0
  482. package/themes/star-wars/sounds/r2d2-hey-you.mp3 +0 -0
  483. package/themes/star-wars/sounds/r2d2-woo-hoo.mp3 +0 -0
  484. package/themes/star-wars/sounds/r2d2-yeah.mp3 +0 -0
  485. package/themes/star-wars/sounds/vader-breathing.mp3 +0 -0
  486. package/themes/star-wars/sounds/vader-what-is-thy-bidding.mp3 +0 -0
  487. package/themes/star-wars/sounds/vader-yes-my-master.mp3 +0 -0
  488. package/themes/star-wars/sounds/wilhelm-scream.mp3 +0 -0
  489. package/themes/star-wars/sounds/yoda-900-years-old.mp3 +0 -0
  490. package/themes/star-wars/sounds/yoda-always-two.mp3 +0 -0
  491. package/themes/star-wars/sounds/yoda-dangerous-disturbing.mp3 +0 -0
  492. package/themes/star-wars/sounds/yoda-do-or-do-not.mp3 +0 -0
  493. package/themes/star-wars/sounds/yoda-laughing.mp3 +0 -0
  494. package/themes/star-wars/sounds/yoda-much-fear.mp3 +0 -0
  495. package/themes/star-wars/sounds/yoda-twisted-by-dark-side.mp3 +0 -0
  496. package/themes/star-wars/sounds/you-were-the-chosen-one.mp3 +0 -0
  497. package/themes/star-wars/theme.json +36 -36
  498. package/themes/starcraft/sounds/additional-pylons.mp3 +0 -0
  499. package/themes/starcraft/sounds/arbiter-we-are-vigilant.mp3 +0 -0
  500. package/themes/starcraft/sounds/archon-obliterate.mp3 +0 -0
  501. package/themes/starcraft/sounds/archon-power-overwhelming.mp3 +0 -0
  502. package/themes/starcraft/sounds/archon-the-merging-is-complete.mp3 +0 -0
  503. package/themes/starcraft/sounds/base-under-attack.mp3 +0 -0
  504. package/themes/starcraft/sounds/battlecruiser-all-crews-reporting.mp3 +0 -0
  505. package/themes/starcraft/sounds/battlecruiser-engage.mp3 +0 -0
  506. package/themes/starcraft/sounds/battlecruiser-good-day-commander.mp3 +0 -0
  507. package/themes/starcraft/sounds/battlecruiser-make-it-happen.mp3 +0 -0
  508. package/themes/starcraft/sounds/battlecruiser-operational.mp3 +0 -0
  509. package/themes/starcraft/sounds/battlecruiser-receiving-transmission.mp3 +0 -0
  510. package/themes/starcraft/sounds/bug-guy-for-the-overmind.mp3 +0 -0
  511. package/themes/starcraft/sounds/bug-guy-gladly.mp3 +0 -0
  512. package/themes/starcraft/sounds/bug-guy-live-for-the-swarm.mp3 +0 -0
  513. package/themes/starcraft/sounds/bug-guy-prepare-to-die.mp3 +0 -0
  514. package/themes/starcraft/sounds/bug-guy-sacrifice-me.mp3 +0 -0
  515. package/themes/starcraft/sounds/carrier-has-arrived.mp3 +0 -0
  516. package/themes/starcraft/sounds/corsair-excellent.mp3 +0 -0
  517. package/themes/starcraft/sounds/corsair-it-is-a-good-day-to-die.mp3 +0 -0
  518. package/themes/starcraft/sounds/dragoon-commencing.mp3 +0 -0
  519. package/themes/starcraft/sounds/dragoon-i-have-returned.mp3 +0 -0
  520. package/themes/starcraft/sounds/dropship-can-i-take-your-order.mp3 +0 -0
  521. package/themes/starcraft/sounds/dropship-in-the-pipe-five-by-five.mp3 +0 -0
  522. package/themes/starcraft/sounds/duke-alright-then.mp3 +0 -0
  523. package/themes/starcraft/sounds/duran-how-can-i-be-of-service.mp3 +0 -0
  524. package/themes/starcraft/sounds/fenix-dragoon-nach-nagalas.mp3 +0 -0
  525. package/themes/starcraft/sounds/fenix-zealot-for-aiur.mp3 +0 -0
  526. package/themes/starcraft/sounds/fenix-zealot-i-hunger-for-battle.mp3 +0 -0
  527. package/themes/starcraft/sounds/firebat-wanna-turn-up-the-heat.mp3 +0 -0
  528. package/themes/starcraft/sounds/firebat-you-got-my-attention.mp3 +0 -0
  529. package/themes/starcraft/sounds/ghost-call-for-an-exterminator.mp3 +0 -0
  530. package/themes/starcraft/sounds/ghost-never-know-what-hit-em.mp3 +0 -0
  531. package/themes/starcraft/sounds/ghost-reporting.mp3 +0 -0
  532. package/themes/starcraft/sounds/insufficient-vespene-gas.mp3 +0 -0
  533. package/themes/starcraft/sounds/kerrigan-a-bold-move.mp3 +0 -0
  534. package/themes/starcraft/sounds/kerrigan-alright.mp3 +0 -0
  535. package/themes/starcraft/sounds/kerrigan-im-listening.mp3 +0 -0
  536. package/themes/starcraft/sounds/kerrigan-on-my-way.mp3 +0 -0
  537. package/themes/starcraft/sounds/kerrigan-what-now.mp3 +0 -0
  538. package/themes/starcraft/sounds/marine-ah-thats-the-stuff.mp3 +0 -0
  539. package/themes/starcraft/sounds/marine-go-go-go.mp3 +0 -0
  540. package/themes/starcraft/sounds/marine-jacked-up-and-good-to-go.mp3 +0 -0
  541. package/themes/starcraft/sounds/marine-lets-move.mp3 +0 -0
  542. package/themes/starcraft/sounds/marine-rock-and-roll.mp3 +0 -0
  543. package/themes/starcraft/sounds/marine-you-wanna-piece-of-me.mp3 +0 -0
  544. package/themes/starcraft/sounds/mutalisk.mp3 +0 -0
  545. package/themes/starcraft/sounds/not-enough-minerals.mp3 +0 -0
  546. package/themes/starcraft/sounds/nuclear-launch-detected.mp3 +0 -0
  547. package/themes/starcraft/sounds/protoss-electric.mp3 +0 -0
  548. package/themes/starcraft/sounds/protoss-fighting.mp3 +0 -0
  549. package/themes/starcraft/sounds/protoss-upgrade.mp3 +0 -0
  550. package/themes/starcraft/sounds/protoss-waiting.mp3 +0 -0
  551. package/themes/starcraft/sounds/ready-to-roll-out.mp3 +0 -0
  552. package/themes/starcraft/sounds/scv-affirmative.mp3 +0 -0
  553. package/themes/starcraft/sounds/scv-good-to-go-sir.mp3 +0 -0
  554. package/themes/starcraft/sounds/scv-i-read-you.mp3 +0 -0
  555. package/themes/starcraft/sounds/scv-orders-received.mp3 +0 -0
  556. package/themes/starcraft/sounds/scv-reportin-for-duty.mp3 +0 -0
  557. package/themes/starcraft/sounds/scv-roger-that.mp3 +0 -0
  558. package/themes/starcraft/sounds/starcraft-confirm.mp3 +0 -0
  559. package/themes/starcraft/sounds/templar-i-heed-thy-call.mp3 +0 -0
  560. package/themes/starcraft/sounds/templar-it-shall-be-done.mp3 +0 -0
  561. package/themes/starcraft/sounds/wraith-reporting-in.mp3 +0 -0
  562. package/themes/starcraft/sounds/wraith-standing-by.mp3 +0 -0
  563. package/themes/starcraft/sounds/zealot-i-long-for-combat.mp3 +0 -0
  564. package/themes/starcraft/sounds/zealot-my-life-for-aiur.mp3 +0 -0
  565. package/themes/wc3-peon/sounds/anything-you-want.mp3 +0 -0
  566. package/themes/wc3-peon/sounds/be-happy-to.mp3 +0 -0
  567. package/themes/wc3-peon/sounds/concentrate-and-ask-again.mp3 +0 -0
  568. package/themes/wc3-peon/sounds/dabu.mp3 +0 -0
  569. package/themes/wc3-peon/sounds/death.mp3 +0 -0
  570. package/themes/wc3-peon/sounds/finally.mp3 +0 -0
  571. package/themes/wc3-peon/sounds/for-the-horde.mp3 +0 -0
  572. package/themes/wc3-peon/sounds/get-em.mp3 +0 -0
  573. package/themes/wc3-peon/sounds/grunt-death.mp3 +0 -0
  574. package/themes/wc3-peon/sounds/headhunter-death.mp3 +0 -0
  575. package/themes/wc3-peon/sounds/hmmm.mp3 +0 -0
  576. package/themes/wc3-peon/sounds/how-can-i-help.mp3 +0 -0
  577. package/themes/wc3-peon/sounds/i-can-do-that.mp3 +0 -0
  578. package/themes/wc3-peon/sounds/i-can-wait-no-longer.mp3 +0 -0
  579. package/themes/wc3-peon/sounds/ill-try.mp3 +0 -0
  580. package/themes/wc3-peon/sounds/immediately.mp3 +0 -0
  581. package/themes/wc3-peon/sounds/it-is-certain.mp3 +0 -0
  582. package/themes/wc3-peon/sounds/me-busy-leave-me-alone.mp3 +0 -0
  583. package/themes/wc3-peon/sounds/me-not-that-kind-of-orc.mp3 +0 -0
  584. package/themes/wc3-peon/sounds/more-work.mp3 +0 -0
  585. package/themes/wc3-peon/sounds/no-time-for-play.mp3 +0 -0
  586. package/themes/wc3-peon/sounds/not-easy-being-green.mp3 +0 -0
  587. package/themes/wc3-peon/sounds/of-course.mp3 +0 -0
  588. package/themes/wc3-peon/sounds/ok.mp3 +0 -0
  589. package/themes/wc3-peon/sounds/okie-dokie.mp3 +0 -0
  590. package/themes/wc3-peon/sounds/outlook-not-so-good.mp3 +0 -0
  591. package/themes/wc3-peon/sounds/peon-death.mp3 +0 -0
  592. package/themes/wc3-peon/sounds/ready-to-work.mp3 +0 -0
  593. package/themes/wc3-peon/sounds/reply-hazy-try-again.mp3 +0 -0
  594. package/themes/wc3-peon/sounds/right-away.mp3 +0 -0
  595. package/themes/wc3-peon/sounds/someone-call-for-the-doctor.mp3 +0 -0
  596. package/themes/wc3-peon/sounds/something-need-doing.mp3 +0 -0
  597. package/themes/wc3-peon/sounds/taste-the-fury.mp3 +0 -0
  598. package/themes/wc3-peon/sounds/understood.mp3 +0 -0
  599. package/themes/wc3-peon/sounds/well-done.mp3 +0 -0
  600. package/themes/wc3-peon/sounds/what-you-want-me-to-do.mp3 +0 -0
  601. package/themes/wc3-peon/sounds/what-you-want.mp3 +0 -0
  602. package/themes/wc3-peon/sounds/what.mp3 +0 -0
  603. package/themes/wc3-peon/sounds/whatever-you-say.mp3 +0 -0
  604. package/themes/wc3-peon/sounds/who-you-want-me-kill.mp3 +0 -0
  605. package/themes/wc3-peon/sounds/why-not.mp3 +0 -0
  606. package/themes/wc3-peon/sounds/why-you-poking-me.mp3 +0 -0
  607. package/themes/wc3-peon/sounds/work-work.mp3 +0 -0
  608. package/themes/wc3-peon/sounds/yes.mp3 +0 -0
  609. package/themes/wc3-peon/sounds/you-seek-me-help.mp3 +0 -0
  610. package/themes/wc3-peon/sounds/zug-zug.mp3 +0 -0
  611. package/themes/wc3-peon/theme.json +55 -55
  612. package/themes/wh40k/sounds/abhor-the-daemon.mp3 +0 -0
  613. package/themes/wh40k/sounds/area-secured.mp3 +0 -0
  614. package/themes/wh40k/sounds/as-ordered.mp3 +0 -0
  615. package/themes/wh40k/sounds/as-you-command.mp3 +0 -0
  616. package/themes/wh40k/sounds/as-you-wish.mp3 +0 -0
  617. package/themes/wh40k/sounds/at-your-command.mp3 +0 -0
  618. package/themes/wh40k/sounds/awaiting-orders.mp3 +0 -0
  619. package/themes/wh40k/sounds/by-the-emperor-a-daemon.mp3 +0 -0
  620. package/themes/wh40k/sounds/chaos-death-1.mp3 +0 -0
  621. package/themes/wh40k/sounds/chaos-death-2.mp3 +0 -0
  622. package/themes/wh40k/sounds/chaos-sighted.mp3 +0 -0
  623. package/themes/wh40k/sounds/claim-it-in-the-name-of-the-emperor.mp3 +0 -0
  624. package/themes/wh40k/sounds/cleanse-purge-kill.mp3 +0 -0
  625. package/themes/wh40k/sounds/commencing-attack.mp3 +0 -0
  626. package/themes/wh40k/sounds/crush-them.mp3 +0 -0
  627. package/themes/wh40k/sounds/curse-the-monster.mp3 +0 -0
  628. package/themes/wh40k/sounds/damnation.mp3 +0 -0
  629. package/themes/wh40k/sounds/death-to-the-alien.mp3 +0 -0
  630. package/themes/wh40k/sounds/death-to-the-false-emperor.mp3 +0 -0
  631. package/themes/wh40k/sounds/defending-objective.mp3 +0 -0
  632. package/themes/wh40k/sounds/despair-for-your-end-is-near.mp3 +0 -0
  633. package/themes/wh40k/sounds/direct-us-to-the-enemy.mp3 +0 -0
  634. package/themes/wh40k/sounds/engaging-the-enemy.mp3 +0 -0
  635. package/themes/wh40k/sounds/ever-vigilant.mp3 +0 -0
  636. package/themes/wh40k/sounds/faith-holds-us.mp3 +0 -0
  637. package/themes/wh40k/sounds/faith-is-our-shield.mp3 +0 -0
  638. package/themes/wh40k/sounds/fall-back-and-regroup.mp3 +0 -0
  639. package/themes/wh40k/sounds/fall-back.mp3 +0 -0
  640. package/themes/wh40k/sounds/fear-denies-faith.mp3 +0 -0
  641. package/themes/wh40k/sounds/fear-not-brothers.mp3 +0 -0
  642. package/themes/wh40k/sounds/fear-our-wrath.mp3 +0 -0
  643. package/themes/wh40k/sounds/for-the-dark-gods.mp3 +0 -0
  644. package/themes/wh40k/sounds/for-the-emperor-2.mp3 +0 -0
  645. package/themes/wh40k/sounds/for-the-emperor.mp3 +0 -0
  646. package/themes/wh40k/sounds/heresy-grows-from-idleness.mp3 +0 -0
  647. package/themes/wh40k/sounds/it-is-done.mp3 +0 -0
  648. package/themes/wh40k/sounds/maim-kill-burn.mp3 +0 -0
  649. package/themes/wh40k/sounds/marine-death.mp3 +0 -0
  650. package/themes/wh40k/sounds/marine-squad-deployed.mp3 +0 -0
  651. package/themes/wh40k/sounds/mission-accomplished.mp3 +0 -0
  652. package/themes/wh40k/sounds/nuffink-can-stand-in-my-way.mp3 +0 -0
  653. package/themes/wh40k/sounds/orks-iz-da-biggest.mp3 +0 -0
  654. package/themes/wh40k/sounds/orks-meant-fa-fightin.mp3 +0 -0
  655. package/themes/wh40k/sounds/purge-the-witches.mp3 +0 -0
  656. package/themes/wh40k/sounds/quit-hidin-like-a-grot.mp3 +0 -0
  657. package/themes/wh40k/sounds/ready-fa-stompin.mp3 +0 -0
  658. package/themes/wh40k/sounds/send-me-to-da-fight.mp3 +0 -0
  659. package/themes/wh40k/sounds/waaagh-boyz.mp3 +0 -0
  660. package/themes/wh40k/sounds/waaagh-warboss.mp3 +0 -0
  661. package/themes/wh40k/sounds/we-is-da-orks.mp3 +0 -0
  662. package/themes/wh40k/sounds/you-boyz-is-no-good.mp3 +0 -0
  663. package/themes/zelda-oot/sounds/dialogue-done.mp3 +0 -0
  664. package/themes/zelda-oot/sounds/dialogue-next.mp3 +0 -0
  665. package/themes/zelda-oot/sounds/error.mp3 +0 -0
  666. package/themes/zelda-oot/sounds/ganondorf-laugh.mp3 +0 -0
  667. package/themes/zelda-oot/sounds/get-heart.mp3 +0 -0
  668. package/themes/zelda-oot/sounds/get-item.mp3 +0 -0
  669. package/themes/zelda-oot/sounds/get-rupee.mp3 +0 -0
  670. package/themes/zelda-oot/sounds/great-fairy-laugh.mp3 +0 -0
  671. package/themes/zelda-oot/sounds/hello.mp3 +0 -0
  672. package/themes/zelda-oot/sounds/hey.mp3 +0 -0
  673. package/themes/zelda-oot/sounds/item-fanfare.mp3 +0 -0
  674. package/themes/zelda-oot/sounds/link-attack.mp3 +0 -0
  675. package/themes/zelda-oot/sounds/link-hurt.mp3 +0 -0
  676. package/themes/zelda-oot/sounds/link-strong-attack.mp3 +0 -0
  677. package/themes/zelda-oot/sounds/listen.mp3 +0 -0
  678. package/themes/zelda-oot/sounds/look.mp3 +0 -0
  679. package/themes/zelda-oot/sounds/low-health.mp3 +0 -0
  680. package/themes/zelda-oot/sounds/menu-select.mp3 +0 -0
  681. package/themes/zelda-oot/sounds/open-chest.mp3 +0 -0
  682. package/themes/zelda-oot/sounds/open-small-chest.mp3 +0 -0
  683. package/themes/zelda-oot/sounds/pause-close.mp3 +0 -0
  684. package/themes/zelda-oot/sounds/pause-menu.mp3 +0 -0
  685. package/themes/zelda-oot/sounds/secret-discovered.mp3 +0 -0
  686. package/themes/zelda-oot/sounds/snore.mp3 +0 -0
  687. package/themes/zelda-oot/sounds/song-correct.mp3 +0 -0
  688. package/themes/zelda-oot/sounds/song-error.mp3 +0 -0
  689. package/themes/zelda-oot/sounds/spin-attack.mp3 +0 -0
  690. package/themes/zelda-oot/sounds/sword-draw.mp3 +0 -0
  691. package/themes/zelda-oot/sounds/watch-out.mp3 +0 -0
  692. package/themes/zelda-oot/sounds/z-target.mp3 +0 -0
  693. package/themes/zelda-oot/theme.json +47 -47
  694. package/themes/cnc/sounds/alarm.wav +0 -0
  695. package/themes/cnc/sounds/allies-acknowledged.wav +0 -0
  696. package/themes/cnc/sounds/allies-affirmative.wav +0 -0
  697. package/themes/cnc/sounds/allies-agreed.wav +0 -0
  698. package/themes/cnc/sounds/allies-at-once.wav +0 -0
  699. package/themes/cnc/sounds/allies-of-course.wav +0 -0
  700. package/themes/cnc/sounds/allies-ready-and-waiting.wav +0 -0
  701. package/themes/cnc/sounds/allies-reporting.wav +0 -0
  702. package/themes/cnc/sounds/allies-very-well.wav +0 -0
  703. package/themes/cnc/sounds/allies-waiting-orders.wav +0 -0
  704. package/themes/cnc/sounds/allies-yes-sir.wav +0 -0
  705. package/themes/cnc/sounds/building-destroyed.wav +0 -0
  706. package/themes/cnc/sounds/building-placed.wav +0 -0
  707. package/themes/cnc/sounds/cha-ching.wav +0 -0
  708. package/themes/cnc/sounds/credit-in.wav +0 -0
  709. package/themes/cnc/sounds/explosion.wav +0 -0
  710. package/themes/cnc/sounds/gdi-incoming-transmission.wav +0 -0
  711. package/themes/cnc/sounds/gdi-on-hold.wav +0 -0
  712. package/themes/cnc/sounds/gdi-recycle.wav +0 -0
  713. package/themes/cnc/sounds/gdi-success.wav +0 -0
  714. package/themes/cnc/sounds/gdi-unable-to-comply.wav +0 -0
  715. package/themes/cnc/sounds/gdi-warning.wav +0 -0
  716. package/themes/cnc/sounds/man-die.wav +0 -0
  717. package/themes/cnc/sounds/nod-incoming-transmission.wav +0 -0
  718. package/themes/cnc/sounds/nod-low-power.wav +0 -0
  719. package/themes/cnc/sounds/nod-on-hold.wav +0 -0
  720. package/themes/cnc/sounds/nod-unable-to-comply.wav +0 -0
  721. package/themes/cnc/sounds/power-down.wav +0 -0
  722. package/themes/cnc/sounds/power-up.wav +0 -0
  723. package/themes/cnc/sounds/radar-alert.wav +0 -0
  724. package/themes/cnc/sounds/radar-power-on.wav +0 -0
  725. package/themes/cnc/sounds/selling.wav +0 -0
  726. package/themes/cnc/sounds/soviet-acknowledged.wav +0 -0
  727. package/themes/cnc/sounds/soviet-affirmative.wav +0 -0
  728. package/themes/cnc/sounds/soviet-at-once.wav +0 -0
  729. package/themes/cnc/sounds/soviet-comrade.wav +0 -0
  730. package/themes/cnc/sounds/soviet-reporting.wav +0 -0
  731. package/themes/cnc/sounds/soviet-yes-sir.wav +0 -0
  732. package/themes/cnc/sounds/spy-commander.wav +0 -0
  733. package/themes/cnc/sounds/spy-for-king-and-country.wav +0 -0
  734. package/themes/cnc/sounds/spy-indeed.wav +0 -0
  735. package/themes/cnc/sounds/spy-on-my-way.wav +0 -0
  736. package/themes/cnc/sounds/tanya-chew-on-this.wav +0 -0
  737. package/themes/cnc/sounds/tanya-death.wav +0 -0
  738. package/themes/cnc/sounds/tanya-im-there.wav +0 -0
  739. package/themes/cnc/sounds/tanya-kiss-it-bye-bye.wav +0 -0
  740. package/themes/cnc/sounds/tanya-laugh.wav +0 -0
  741. package/themes/cnc/sounds/tanya-lets-rock.wav +0 -0
  742. package/themes/cnc/sounds/tanya-shake-it-baby.wav +0 -0
  743. package/themes/cnc/sounds/tanya-thats-all-you-got.wav +0 -0
  744. package/themes/cnc/sounds/tanya-yeah.wav +0 -0
  745. package/themes/cnc/sounds/tanya-yes-sir.wav +0 -0
  746. package/themes/cnc/sounds/tesla-shot.wav +0 -0
  747. package/themes/cnc/sounds/ts-auth.wav +0 -0
  748. package/themes/cnc/sounds/ts-notify.wav +0 -0
  749. package/themes/cnc/sounds/ts-reminder.wav +0 -0
  750. package/themes/cnc/sounds/ts-startup.wav +0 -0
  751. package/themes/cnc/sounds/ts-system.wav +0 -0
  752. package/themes/mario/sounds/1-up.wav +0 -0
  753. package/themes/mario/sounds/block-bump.wav +0 -0
  754. package/themes/mario/sounds/break-block.wav +0 -0
  755. package/themes/mario/sounds/burned.wav +0 -0
  756. package/themes/mario/sounds/coin.wav +0 -0
  757. package/themes/mario/sounds/death.wav +0 -0
  758. package/themes/mario/sounds/doh.wav +0 -0
  759. package/themes/mario/sounds/fireball.wav +0 -0
  760. package/themes/mario/sounds/flagpole.wav +0 -0
  761. package/themes/mario/sounds/game-over.wav +0 -0
  762. package/themes/mario/sounds/haha.wav +0 -0
  763. package/themes/mario/sounds/happy-message.wav +0 -0
  764. package/themes/mario/sounds/hello.wav +0 -0
  765. package/themes/mario/sounds/here-we-go.wav +0 -0
  766. package/themes/mario/sounds/hurt.wav +0 -0
  767. package/themes/mario/sounds/its-a-me-mario.wav +0 -0
  768. package/themes/mario/sounds/lets-a-go.wav +0 -0
  769. package/themes/mario/sounds/level-clear.wav +0 -0
  770. package/themes/mario/sounds/mamma-mia.wav +0 -0
  771. package/themes/mario/sounds/message-block.wav +0 -0
  772. package/themes/mario/sounds/mushroom-appears.wav +0 -0
  773. package/themes/mario/sounds/okey-dokey.wav +0 -0
  774. package/themes/mario/sounds/oof.wav +0 -0
  775. package/themes/mario/sounds/pause.wav +0 -0
  776. package/themes/mario/sounds/pipe-warp.wav +0 -0
  777. package/themes/mario/sounds/power-up.wav +0 -0
  778. package/themes/mario/sounds/question-block.wav +0 -0
  779. package/themes/mario/sounds/raccoon-transform.wav +0 -0
  780. package/themes/mario/sounds/shrink.wav +0 -0
  781. package/themes/mario/sounds/smb3-power-up.wav +0 -0
  782. package/themes/mario/sounds/smw-1-up.wav +0 -0
  783. package/themes/mario/sounds/smw-pipe.wav +0 -0
  784. package/themes/mario/sounds/smw-power-up.wav +0 -0
  785. package/themes/mario/sounds/snore.wav +0 -0
  786. package/themes/mario/sounds/stage-clear.wav +0 -0
  787. package/themes/mario/sounds/star-appears.wav +0 -0
  788. package/themes/mario/sounds/stomp.wav +0 -0
  789. package/themes/mario/sounds/tired.wav +0 -0
  790. package/themes/mario/sounds/vine-grow.wav +0 -0
  791. package/themes/mario/sounds/waha.wav +0 -0
  792. package/themes/mario/sounds/warp-whistle.wav +0 -0
  793. package/themes/mario/sounds/warp.wav +0 -0
  794. package/themes/mario/sounds/whoa.wav +0 -0
  795. package/themes/mario/sounds/world-clear.wav +0 -0
  796. package/themes/mario/sounds/yahoo.wav +0 -0
  797. package/themes/mario/sounds/yawn.wav +0 -0
  798. package/themes/mario/sounds/yippee.wav +0 -0
  799. package/themes/pokemon-gen1/sounds/ball-poof.wav +0 -0
  800. package/themes/pokemon-gen1/sounds/ball-toss.wav +0 -0
  801. package/themes/pokemon-gen1/sounds/caught-mon.wav +0 -0
  802. package/themes/pokemon-gen1/sounds/charizard-cry.wav +0 -0
  803. package/themes/pokemon-gen1/sounds/collision.wav +0 -0
  804. package/themes/pokemon-gen1/sounds/confused.wav +0 -0
  805. package/themes/pokemon-gen1/sounds/denied.wav +0 -0
  806. package/themes/pokemon-gen1/sounds/dex-page-added.wav +0 -0
  807. package/themes/pokemon-gen1/sounds/enter-pc.wav +0 -0
  808. package/themes/pokemon-gen1/sounds/faint-fall.wav +0 -0
  809. package/themes/pokemon-gen1/sounds/faint-thud.wav +0 -0
  810. package/themes/pokemon-gen1/sounds/get-item-fanfare.wav +0 -0
  811. package/themes/pokemon-gen1/sounds/get-item.wav +0 -0
  812. package/themes/pokemon-gen1/sounds/get-key-item.wav +0 -0
  813. package/themes/pokemon-gen1/sounds/go-outside.wav +0 -0
  814. package/themes/pokemon-gen1/sounds/heal-ailment.wav +0 -0
  815. package/themes/pokemon-gen1/sounds/heal-up.wav +0 -0
  816. package/themes/pokemon-gen1/sounds/intro-lunge.wav +0 -0
  817. package/themes/pokemon-gen1/sounds/intro-whoosh.wav +0 -0
  818. package/themes/pokemon-gen1/sounds/jigglypuff-cry.wav +0 -0
  819. package/themes/pokemon-gen1/sounds/ledge.wav +0 -0
  820. package/themes/pokemon-gen1/sounds/level-up.wav +0 -0
  821. package/themes/pokemon-gen1/sounds/pikachu-cry.wav +0 -0
  822. package/themes/pokemon-gen1/sounds/poisoned.wav +0 -0
  823. package/themes/pokemon-gen1/sounds/pokeball-open.wav +0 -0
  824. package/themes/pokemon-gen1/sounds/pokeball-throw.wav +0 -0
  825. package/themes/pokemon-gen1/sounds/pokedex-rating.wav +0 -0
  826. package/themes/pokemon-gen1/sounds/pokemon-switch.wav +0 -0
  827. package/themes/pokemon-gen1/sounds/press-ab.wav +0 -0
  828. package/themes/pokemon-gen1/sounds/psyduck-cry.wav +0 -0
  829. package/themes/pokemon-gen1/sounds/purchase.wav +0 -0
  830. package/themes/pokemon-gen1/sounds/rest.wav +0 -0
  831. package/themes/pokemon-gen1/sounds/save-game.wav +0 -0
  832. package/themes/pokemon-gen1/sounds/screech.wav +0 -0
  833. package/themes/pokemon-gen1/sounds/self-destruct.wav +0 -0
  834. package/themes/pokemon-gen1/sounds/shrink.wav +0 -0
  835. package/themes/pokemon-gen1/sounds/silph-scope.wav +0 -0
  836. package/themes/pokemon-gen1/sounds/slots-new-spin.wav +0 -0
  837. package/themes/pokemon-gen1/sounds/slots-stop.wav +0 -0
  838. package/themes/pokemon-gen1/sounds/splash.wav +0 -0
  839. package/themes/pokemon-gen1/sounds/start-menu.wav +0 -0
  840. package/themes/pokemon-gen1/sounds/substitute.wav +0 -0
  841. package/themes/pokemon-gen1/sounds/swap.wav +0 -0
  842. package/themes/pokemon-gen1/sounds/teleport.wav +0 -0
  843. package/themes/pokemon-gen1/sounds/tink.wav +0 -0
  844. package/themes/pokemon-gen1/sounds/trade-machine.wav +0 -0
  845. package/themes/pokemon-gen1/sounds/turn-off-pc.wav +0 -0
  846. package/themes/pokemon-gen1/sounds/withdraw-deposit.wav +0 -0
  847. package/themes/pokemon-gen1/theme.json +0 -212
  848. package/themes/portal/sounds/announcer-post.wav +0 -0
  849. package/themes/portal/sounds/button-positive.wav +0 -0
  850. package/themes/portal/sounds/button-press.wav +0 -0
  851. package/themes/portal/sounds/button-release.wav +0 -0
  852. package/themes/portal/sounds/core-attach.wav +0 -0
  853. package/themes/portal/sounds/core-complete.wav +0 -0
  854. package/themes/portal/sounds/emancipation-grill.wav +0 -0
  855. package/themes/portal/sounds/fizzler-shutdown.wav +0 -0
  856. package/themes/portal/sounds/fizzler-start.wav +0 -0
  857. package/themes/portal/sounds/invalid-surface.wav +0 -0
  858. package/themes/portal/sounds/klaxon-alarm.wav +0 -0
  859. package/themes/portal/sounds/portal-close-alt.wav +0 -0
  860. package/themes/portal/sounds/portal-close.wav +0 -0
  861. package/themes/portal/sounds/portal-enter.wav +0 -0
  862. package/themes/portal/sounds/portal-exit.wav +0 -0
  863. package/themes/portal/sounds/portal-fizzle.wav +0 -0
  864. package/themes/portal/sounds/portal-open.wav +0 -0
  865. package/themes/portal/sounds/portal-whoosh-close.wav +0 -0
  866. package/themes/portal/sounds/portalgun-powerup.wav +0 -0
  867. package/themes/portal/sounds/shoot-blue-portal.wav +0 -0
  868. package/themes/portal/sounds/shoot-orange-portal.wav +0 -0
  869. package/themes/portal/sounds/synth-negative.wav +0 -0
  870. package/themes/portal/sounds/synth-positive.wav +0 -0
  871. package/themes/portal/sounds/test-chamber-complete.wav +0 -0
  872. package/themes/portal/sounds/test-chamber-start.wav +0 -0
  873. package/themes/portal/sounds/turret-activated.wav +0 -0
  874. package/themes/portal/sounds/turret-alert.wav +0 -0
  875. package/themes/portal/sounds/turret-are-you-still-there.wav +0 -0
  876. package/themes/portal/sounds/turret-deploy.wav +0 -0
  877. package/themes/portal/sounds/turret-done.wav +0 -0
  878. package/themes/portal/sounds/turret-goodbye.wav +0 -0
  879. package/themes/portal/sounds/turret-hello.wav +0 -0
  880. package/themes/portal/sounds/turret-hellooo.wav +0 -0
  881. package/themes/portal/sounds/turret-i-see-you.wav +0 -0
  882. package/themes/portal/sounds/turret-no-hard-feelings.wav +0 -0
  883. package/themes/portal/sounds/turret-ow.wav +0 -0
  884. package/themes/portal/sounds/turret-ping.wav +0 -0
  885. package/themes/portal/sounds/turret-retract.wav +0 -0
  886. package/themes/portal/sounds/turret-searching.wav +0 -0
  887. package/themes/portal/sounds/turret-target-lost.wav +0 -0
  888. package/themes/portal/sounds/turret-whos-there.wav +0 -0
  889. package/themes/portal/sounds/ui-click.wav +0 -0
  890. package/themes/star-wars/sounds/bad-feeling.wav +0 -0
  891. package/themes/star-wars/sounds/blaster-firing.wav +0 -0
  892. package/themes/star-wars/sounds/chewie-chatting.wav +0 -0
  893. package/themes/star-wars/sounds/chewie-roar.wav +0 -0
  894. package/themes/star-wars/sounds/dark-side.wav +0 -0
  895. package/themes/star-wars/sounds/darth-maul-reveal-ourselves.wav +0 -0
  896. package/themes/star-wars/sounds/decided-to-rescue-you.wav +0 -0
  897. package/themes/star-wars/sounds/destiny-fulfilled.wav +0 -0
  898. package/themes/star-wars/sounds/destroy-you.wav +0 -0
  899. package/themes/star-wars/sounds/force-is-strong-with-this-one.wav +0 -0
  900. package/themes/star-wars/sounds/force-is-strong.wav +0 -0
  901. package/themes/star-wars/sounds/force-will-be-with-you.wav +0 -0
  902. package/themes/star-wars/sounds/great-disturbance.wav +0 -0
  903. package/themes/star-wars/sounds/i-am-your-father.wav +0 -0
  904. package/themes/star-wars/sounds/its-a-trap.wav +0 -0
  905. package/themes/star-wars/sounds/jabba-laughing.wav +0 -0
  906. package/themes/star-wars/sounds/lightsaber-ignite.wav +0 -0
  907. package/themes/star-wars/sounds/lightsaber-off.wav +0 -0
  908. package/themes/star-wars/sounds/lord-vader-rise.wav +0 -0
  909. package/themes/star-wars/sounds/luke-dont-do-that.wav +0 -0
  910. package/themes/star-wars/sounds/r2d2-beep.wav +0 -0
  911. package/themes/star-wars/sounds/r2d2-hey-you.wav +0 -0
  912. package/themes/star-wars/sounds/r2d2-woo-hoo.wav +0 -0
  913. package/themes/star-wars/sounds/r2d2-yeah.wav +0 -0
  914. package/themes/star-wars/sounds/vader-breathing.wav +0 -0
  915. package/themes/star-wars/sounds/vader-what-is-thy-bidding.wav +0 -0
  916. package/themes/star-wars/sounds/vader-yes-my-master.wav +0 -0
  917. package/themes/star-wars/sounds/wilhelm-scream.wav +0 -0
  918. package/themes/star-wars/sounds/yoda-900-years-old.wav +0 -0
  919. package/themes/star-wars/sounds/yoda-always-two.wav +0 -0
  920. package/themes/star-wars/sounds/yoda-dangerous-disturbing.wav +0 -0
  921. package/themes/star-wars/sounds/yoda-do-or-do-not.wav +0 -0
  922. package/themes/star-wars/sounds/yoda-laughing.wav +0 -0
  923. package/themes/star-wars/sounds/yoda-much-fear.wav +0 -0
  924. package/themes/star-wars/sounds/yoda-twisted-by-dark-side.wav +0 -0
  925. package/themes/star-wars/sounds/you-were-the-chosen-one.wav +0 -0
  926. package/themes/wc3-peon/sounds/anything-you-want.wav +0 -0
  927. package/themes/wc3-peon/sounds/be-happy-to.wav +0 -0
  928. package/themes/wc3-peon/sounds/concentrate-and-ask-again.wav +0 -0
  929. package/themes/wc3-peon/sounds/dabu.wav +0 -0
  930. package/themes/wc3-peon/sounds/death.wav +0 -0
  931. package/themes/wc3-peon/sounds/finally.wav +0 -0
  932. package/themes/wc3-peon/sounds/for-the-horde.wav +0 -0
  933. package/themes/wc3-peon/sounds/get-em.wav +0 -0
  934. package/themes/wc3-peon/sounds/grunt-death.wav +0 -0
  935. package/themes/wc3-peon/sounds/headhunter-death.wav +0 -0
  936. package/themes/wc3-peon/sounds/hmmm.wav +0 -0
  937. package/themes/wc3-peon/sounds/how-can-i-help.wav +0 -0
  938. package/themes/wc3-peon/sounds/i-can-do-that.wav +0 -0
  939. package/themes/wc3-peon/sounds/i-can-wait-no-longer.wav +0 -0
  940. package/themes/wc3-peon/sounds/ill-try.wav +0 -0
  941. package/themes/wc3-peon/sounds/immediately.wav +0 -0
  942. package/themes/wc3-peon/sounds/it-is-certain.wav +0 -0
  943. package/themes/wc3-peon/sounds/me-busy-leave-me-alone.wav +0 -0
  944. package/themes/wc3-peon/sounds/me-not-that-kind-of-orc.wav +0 -0
  945. package/themes/wc3-peon/sounds/no-time-for-play.wav +0 -0
  946. package/themes/wc3-peon/sounds/not-easy-being-green.wav +0 -0
  947. package/themes/wc3-peon/sounds/of-course.wav +0 -0
  948. package/themes/wc3-peon/sounds/ok.wav +0 -0
  949. package/themes/wc3-peon/sounds/okie-dokie.wav +0 -0
  950. package/themes/wc3-peon/sounds/outlook-not-so-good.wav +0 -0
  951. package/themes/wc3-peon/sounds/peon-death.wav +0 -0
  952. package/themes/wc3-peon/sounds/ready-to-work.wav +0 -0
  953. package/themes/wc3-peon/sounds/reply-hazy-try-again.wav +0 -0
  954. package/themes/wc3-peon/sounds/right-away.wav +0 -0
  955. package/themes/wc3-peon/sounds/someone-call-for-the-doctor.wav +0 -0
  956. package/themes/wc3-peon/sounds/something-need-doing.wav +0 -0
  957. package/themes/wc3-peon/sounds/taste-the-fury.wav +0 -0
  958. package/themes/wc3-peon/sounds/understood.wav +0 -0
  959. package/themes/wc3-peon/sounds/well-done.wav +0 -0
  960. package/themes/wc3-peon/sounds/what-you-want-me-to-do.wav +0 -0
  961. package/themes/wc3-peon/sounds/what-you-want.wav +0 -0
  962. package/themes/wc3-peon/sounds/what.wav +0 -0
  963. package/themes/wc3-peon/sounds/whatever-you-say.wav +0 -0
  964. package/themes/wc3-peon/sounds/who-you-want-me-kill.wav +0 -0
  965. package/themes/wc3-peon/sounds/why-not.wav +0 -0
  966. package/themes/wc3-peon/sounds/why-you-poking-me.wav +0 -0
  967. package/themes/wc3-peon/sounds/work-work.wav +0 -0
  968. package/themes/wc3-peon/sounds/yes.wav +0 -0
  969. package/themes/wc3-peon/sounds/you-seek-me-help.wav +0 -0
  970. package/themes/wc3-peon/sounds/zug-zug.wav +0 -0
  971. package/themes/zelda-oot/sounds/dialogue-done.wav +0 -0
  972. package/themes/zelda-oot/sounds/dialogue-next.wav +0 -0
  973. package/themes/zelda-oot/sounds/error.wav +0 -0
  974. package/themes/zelda-oot/sounds/ganondorf-laugh.wav +0 -0
  975. package/themes/zelda-oot/sounds/get-heart.wav +0 -0
  976. package/themes/zelda-oot/sounds/get-item.wav +0 -0
  977. package/themes/zelda-oot/sounds/get-rupee.wav +0 -0
  978. package/themes/zelda-oot/sounds/great-fairy-laugh.wav +0 -0
  979. package/themes/zelda-oot/sounds/hello.wav +0 -0
  980. package/themes/zelda-oot/sounds/hey.wav +0 -0
  981. package/themes/zelda-oot/sounds/item-fanfare.wav +0 -0
  982. package/themes/zelda-oot/sounds/link-attack.wav +0 -0
  983. package/themes/zelda-oot/sounds/link-hurt.wav +0 -0
  984. package/themes/zelda-oot/sounds/link-strong-attack.wav +0 -0
  985. package/themes/zelda-oot/sounds/listen.wav +0 -0
  986. package/themes/zelda-oot/sounds/look.wav +0 -0
  987. package/themes/zelda-oot/sounds/low-health.wav +0 -0
  988. package/themes/zelda-oot/sounds/menu-select.wav +0 -0
  989. package/themes/zelda-oot/sounds/open-chest.wav +0 -0
  990. package/themes/zelda-oot/sounds/open-small-chest.wav +0 -0
  991. package/themes/zelda-oot/sounds/pause-close.wav +0 -0
  992. package/themes/zelda-oot/sounds/pause-menu.wav +0 -0
  993. package/themes/zelda-oot/sounds/secret-discovered.wav +0 -0
  994. package/themes/zelda-oot/sounds/snore.wav +0 -0
  995. package/themes/zelda-oot/sounds/song-correct.wav +0 -0
  996. package/themes/zelda-oot/sounds/song-error.wav +0 -0
  997. package/themes/zelda-oot/sounds/spin-attack.wav +0 -0
  998. package/themes/zelda-oot/sounds/sword-draw.wav +0 -0
  999. package/themes/zelda-oot/sounds/watch-out.wav +0 -0
  1000. package/themes/zelda-oot/sounds/z-target.wav +0 -0
package/README.md CHANGED
@@ -4,11 +4,13 @@
4
4
 
5
5
  # claude-code-sounds
6
6
 
7
+ [![npm version](https://img.shields.io/npm/v/claude-code-sounds)](https://www.npmjs.com/package/claude-code-sounds)
8
+
7
9
  **Sound themes for [Claude Code](https://docs.anthropic.com/en/docs/claude-code) lifecycle hooks.**
8
10
 
9
11
  Plays sound effects when sessions start, prompts are submitted, responses finish, errors occur, and more.
10
12
 
11
- Ships with 12 themes. Bring your own sounds or create new ones.
13
+ Ships with 15 themes. Bring your own sounds or create new ones.
12
14
 
13
15
  *"Something need doing?"*
14
16
 
@@ -24,12 +26,6 @@ The interactive installer checks dependencies, lets you pick a theme, and option
24
26
 
25
27
  Requires macOS (uses `afplay`) and Node.js 20+.
26
28
 
27
- For scripted or CI usage, skip all prompts with `--yes`:
28
-
29
- ```bash
30
- npx claude-code-sounds --yes
31
- ```
32
-
33
29
  <details>
34
30
  <summary>Alternative: install from source</summary>
35
31
 
@@ -46,31 +42,36 @@ The bash installer requires `jq` (`brew install jq`).
46
42
  ## Usage
47
43
 
48
44
  ```bash
49
- npx claude-code-sounds # Interactive install
50
- npx claude-code-sounds --yes # Install defaults, skip all prompts
51
- npx claude-code-sounds --list # List available themes
52
- npx claude-code-sounds --uninstall # Remove all sounds and hooks
53
- npx claude-code-sounds --help # Show help
45
+ npx claude-code-sounds # Interactive install
46
+ npx claude-code-sounds --theme portal # Install a specific theme directly
47
+ npx claude-code-sounds --mix # Jump to sound assignment grid
48
+ npx claude-code-sounds --yes # Install defaults, skip all prompts
49
+ npx claude-code-sounds --list # List available themes
50
+ npx claude-code-sounds --uninstall # Remove all sounds and hooks
51
+ npx claude-code-sounds --help # Show help
54
52
  ```
55
53
 
56
54
  ## Themes
57
55
 
58
56
  | Theme | Sounds | Vibe |
59
57
  |---|---|---|
60
- | **WC3 Orc Peon** (`wc3-peon`) | 57 | *"Something need doing?"* — Peons, Grunts, Shamans, and Grom Hellscream |
61
- | **Zelda: Ocarina of Time** (`zelda-oot`) | 47 | *"Hey! Listen!"* — Navi, Link, and iconic OOT jingles |
62
- | **Super Mario Bros** (`mario`) | 47 | *"Let's-a go!"* — Coins, power-ups, and Mario's voice from NES to N64 |
63
- | **Star Wars** (`star-wars`) | 36 | *"May the Force be with you"* — Lightsabers, R2-D2, and the dark side |
58
+ | **Age of Empires 2** (`aoe2`) | 48 | *"Wololo!"* — Villager taunts, monks, and age advance fanfares |
59
+ | **Call of Duty** (`cod`) | 38 | *"Enemy AC-130 above!"* — Killstreaks, hitmarkers, and Captain Price |
60
+ | **Command & Conquer** (`cnc`) | 52 | *"Construction complete"* — EVA announcements, unit voices, and Red Alert |
61
+ | **Diablo 2** (`diablo2`) | 46 | *"Stay awhile and listen"* — Deckard Cain, item drops, and the Prime Evils |
62
+ | **Halo** (`halo`) | 52 | *"Wake me when you need me"* — Master Chief, Cortana, and the multiplayer announcer |
64
63
  | **Metal Gear Solid** (`mgs`) | 40 | *"Kept you waiting, huh?"* — Codec calls, alert sounds, and Snake |
65
- | **Pokemon Gen 1** (`pokemon-gen1`) | 49 | *"Wild PIKACHU appeared!"* — Cries, battle sounds, and Kanto menus |
64
+ | **Pokemon Gen 3** (`pokemon-gen3`) | 51 | *"A wild TREECKO appeared!"* — GBA battle cries, Hoenn fanfares, and RSE bleeps |
66
65
  | **Portal** (`portal`) | 42 | *"Are you still there?"* — Turrets, portal guns, and Aperture Science |
67
- | **Command & Conquer** (`cnc`) | 72 | *"Construction complete"* — EVA announcements, unit voices, and Red Alert |
68
- | **Age of Empires 2** (`aoe2`) | 38 | *"Wololo!"* — Villager taunts, monks, and age advance fanfares |
69
- | **Diablo 2** (`diablo2`) | 41 | *"Stay awhile and listen"* — Deckard Cain, item drops, and the Prime Evils |
70
- | **Warhammer 40k** (`wh40k`) | 51 | *"For the Emperor!"* — Space Marines, Chaos war cries, and Ork shouts |
71
- | **StarCraft** (`starcraft`) | 67 | *"Not enough minerals"* — Terran, Protoss, and Zerg voice lines |
66
+ | **Short Circuit** (`short-circuit`) | 41 | *"Number 5 is alive!"* — The lovable sentient robot from the 1986 classic |
67
+ | **Star Wars** (`star-wars`) | 36 | *"May the Force be with you"* — Lightsabers, R2-D2, and the dark side |
68
+ | **StarCraft** (`starcraft`) | 50 | *"Not enough minerals"* — Terran, Protoss, and Zerg voice lines |
69
+ | **Super Mario Bros** (`mario`) | 47 | *"Let's-a go!"* — Coins, power-ups, and Mario's voice from NES to N64 |
70
+ | **Warhammer 40k** (`wh40k`) | 50 | *"For the Emperor!"* — Space Marines, Chaos war cries, and Ork shouts |
71
+ | **WC3 Orc Peon** (`wc3-peon`) | 57 | *"Something need doing?"* — Peons, Grunts, Shamans, and Grom Hellscream |
72
+ | **Zelda: Ocarina of Time** (`zelda-oot`) | 47 | *"Hey! Listen!"* — Navi, Link, and iconic OOT jingles |
72
73
 
73
- Each theme maps sounds across all 11 Claude Code lifecycle events. Preview installed sounds with `./preview.sh`.
74
+ Each theme maps sounds across all 11 Claude Code lifecycle events.
74
75
 
75
76
  ## Hook Events
76
77
 
@@ -123,7 +124,15 @@ Hooks are configured in `~/.claude/settings.json` — each Claude Code lifecycle
123
124
 
124
125
  ## Customizing
125
126
 
126
- Drop any `.wav` or `.mp3` into the sound directories to add your own clips:
127
+ Re-run with `--mix` to open the sound assignment grid, where you can reassign sounds to hooks, add themes, or preview clips:
128
+
129
+ ```bash
130
+ npx claude-code-sounds --mix
131
+ ```
132
+
133
+ ![Sound assignment grid](images/sound-grid.png)
134
+
135
+ You can also drop any `.wav` or `.mp3` into the sound directories manually:
127
136
 
128
137
  ```
129
138
  ~/.claude/sounds/
@@ -145,4 +154,8 @@ This removes all sound files, the hook script, and the hooks config from `settin
145
154
 
146
155
  ## Disclaimer
147
156
 
148
- All game audio is property of its respective owners: Blizzard Entertainment (Warcraft, StarCraft, Diablo), Nintendo (Zelda, Mario, Pokemon), Lucasfilm/Disney (Star Wars), Konami (Metal Gear Solid), Valve (Portal), Electronic Arts/Westwood Studios (Command & Conquer), Xbox Game Studios/Ensemble Studios (Age of Empires), and Games Workshop/Relic Entertainment (Warhammer 40,000).
157
+ This project is an unofficial fan project provided free of charge for personal, non-commercial use. It is not affiliated with, endorsed by, or sponsored by any game publisher or rights holder.
158
+
159
+ All game audio is the property of its respective owners: Blizzard Entertainment (Warcraft, StarCraft, Diablo), Nintendo/Game Freak (Zelda, Mario, Pokemon), Lucasfilm/Disney (Star Wars), Konami (Metal Gear Solid), Valve (Portal), Electronic Arts/Westwood Studios (Command & Conquer), Xbox Game Studios/Ensemble Studios (Age of Empires), Games Workshop/Relic Entertainment (Warhammer 40,000), Xbox Game Studios/Bungie/343 Industries (Halo), Activision/Infinity Ward (Call of Duty), TriStar Pictures (Short Circuit). All trademarks and registered trademarks are the property of their respective owners.
160
+
161
+ If you are a rights holder and would like content removed, please [open an issue](https://github.com/ryparker/claude-code-sounds/issues) and it will be taken down promptly.
package/bin/cli.js CHANGED
@@ -2,27 +2,28 @@
2
2
 
3
3
  const fs = require("fs");
4
4
  const path = require("path");
5
- const os = require("os");
6
5
  const { execSync, spawn } = require("child_process");
7
6
  const p = require("@clack/prompts");
8
7
  const { Prompt } = require("@clack/core");
9
8
  const color = require("picocolors");
10
9
 
11
- // ─── Paths ───────────────────────────────────────────────────────────────────
10
+ // ─── Library ─────────────────────────────────────────────────────────────────
12
11
 
13
- const PKG_DIR = path.resolve(__dirname, "..");
14
- const CLAUDE_DIR = path.join(os.homedir(), ".claude");
15
- const SOUNDS_DIR = path.join(CLAUDE_DIR, "sounds");
16
- const HOOKS_DIR = path.join(CLAUDE_DIR, "hooks");
17
- const SETTINGS_PATH = path.join(CLAUDE_DIR, "settings.json");
18
- const THEMES_DIR = path.join(PKG_DIR, "themes");
19
- const INSTALLED_PATH = path.join(SOUNDS_DIR, ".installed.json");
12
+ const lib = require("./lib");
13
+ const paths = lib.defaultPaths();
14
+ const { HOOKS, mkdirp } = lib;
15
+ const { SOUNDS_DIR } = paths;
20
16
 
21
- // ─── Helpers ─────────────────────────────────────────────────────────────────
17
+ // Path-bound wrappers
18
+ const listThemes = () => lib.listThemes(paths);
19
+ const readThemeJson = (name) => lib.readThemeJson(name, paths);
20
+ const resolveThemeSoundPath = (name, file) => lib.resolveThemeSoundPath(name, file, paths);
21
+ const writeInstalled = (data) => lib.writeInstalled(data, paths);
22
+ const detectExistingInstall = () => lib.detectExistingInstall(paths);
23
+ const installSounds = (sel) => lib.installSounds(sel, paths);
24
+ const installHooksConfig = () => lib.installHooksConfig(paths);
22
25
 
23
- function mkdirp(dir) {
24
- fs.mkdirSync(dir, { recursive: true });
25
- }
26
+ // ─── Helpers ─────────────────────────────────────────────────────────────────
26
27
 
27
28
  function exec(cmd, opts = {}) {
28
29
  return execSync(cmd, { encoding: "utf-8", stdio: "pipe", ...opts });
@@ -37,70 +38,13 @@ function hasCommand(name) {
37
38
  }
38
39
  }
39
40
 
40
- function listThemes() {
41
- const themes = [];
42
- for (const name of fs.readdirSync(THEMES_DIR)) {
43
- const themeJson = path.join(THEMES_DIR, name, "theme.json");
44
- if (!fs.existsSync(themeJson)) continue;
45
- const meta = JSON.parse(fs.readFileSync(themeJson, "utf-8"));
46
- let soundCount = 0;
47
- if (meta.sounds) {
48
- for (const cat of Object.values(meta.sounds)) {
49
- soundCount += cat.files.length;
50
- }
51
- }
52
- themes.push({
53
- name,
54
- description: meta.description || "",
55
- display: meta.name || name,
56
- soundCount,
57
- sources: meta.sources || [],
58
- });
59
- }
60
- return themes;
61
- }
62
-
63
- function readSettings() {
64
- if (fs.existsSync(SETTINGS_PATH)) {
65
- return JSON.parse(fs.readFileSync(SETTINGS_PATH, "utf-8"));
66
- }
67
- return {};
68
- }
69
-
70
- function writeSettings(settings) {
71
- mkdirp(CLAUDE_DIR);
72
- fs.writeFileSync(SETTINGS_PATH, JSON.stringify(settings, null, 2) + "\n");
73
- }
74
-
75
- function readInstalled() {
76
- if (fs.existsSync(INSTALLED_PATH)) {
77
- return JSON.parse(fs.readFileSync(INSTALLED_PATH, "utf-8"));
78
- }
79
- return null;
80
- }
81
-
82
- function writeInstalled(data) {
83
- mkdirp(SOUNDS_DIR);
84
- fs.writeFileSync(INSTALLED_PATH, JSON.stringify(data, null, 2) + "\n");
85
- }
86
-
87
- function readThemeJson(themeName) {
88
- return JSON.parse(
89
- fs.readFileSync(path.join(THEMES_DIR, themeName, "theme.json"), "utf-8")
90
- );
91
- }
92
-
93
- function resolveThemeSoundPath(themeName, fileName) {
94
- return path.join(THEMES_DIR, themeName, "sounds", fileName);
95
- }
96
-
97
41
  // ─── Preview ─────────────────────────────────────────────────────────────────
98
42
 
99
43
  let previewProcess = null;
100
44
 
101
45
  function killPreview() {
102
46
  if (previewProcess) {
103
- try { previewProcess.kill(); } catch {}
47
+ try { previewProcess.kill("SIGKILL"); } catch {}
104
48
  previewProcess = null;
105
49
  }
106
50
  }
@@ -108,46 +52,16 @@ function killPreview() {
108
52
  function playPreview(filePath) {
109
53
  killPreview();
110
54
  if (fs.existsSync(filePath)) {
111
- previewProcess = spawn("afplay", [filePath], { stdio: "ignore", detached: true });
112
- previewProcess.unref();
113
- previewProcess.on("exit", () => { previewProcess = null; });
55
+ const proc = spawn("afplay", [filePath], { stdio: "ignore" });
56
+ previewProcess = proc;
57
+ proc.on("exit", () => {
58
+ if (previewProcess === proc) previewProcess = null;
59
+ });
114
60
  }
115
61
  }
116
62
 
117
- // ─── Hooks Config ────────────────────────────────────────────────────────────
118
-
119
- const HOOKS_CONFIG = {
120
- SessionStart: [{ matcher: "startup", hooks: [{ type: "command", command: '/bin/bash "$HOME/.claude/hooks/play-sound.sh" start', timeout: 5 }] }],
121
- SessionEnd: [{ hooks: [{ type: "command", command: '/bin/bash "$HOME/.claude/hooks/play-sound.sh" end', timeout: 5 }] }],
122
- Notification: [
123
- { matcher: "permission_prompt", hooks: [{ type: "command", command: '/bin/bash "$HOME/.claude/hooks/play-sound.sh" permission', timeout: 5 }] },
124
- { matcher: "idle_prompt", hooks: [{ type: "command", command: '/bin/bash "$HOME/.claude/hooks/play-sound.sh" idle', timeout: 5 }] },
125
- ],
126
- Stop: [{ hooks: [{ type: "command", command: '/bin/bash "$HOME/.claude/hooks/play-sound.sh" stop', timeout: 5 }] }],
127
- SubagentStart: [{ hooks: [{ type: "command", command: '/bin/bash "$HOME/.claude/hooks/play-sound.sh" subagent', timeout: 5 }] }],
128
- PostToolUseFailure: [{ hooks: [{ type: "command", command: '/bin/bash "$HOME/.claude/hooks/play-sound.sh" error', timeout: 5 }] }],
129
- UserPromptSubmit: [{ hooks: [{ type: "command", command: '/bin/bash "$HOME/.claude/hooks/play-sound.sh" prompt', timeout: 5 }] }],
130
- TaskCompleted: [{ hooks: [{ type: "command", command: '/bin/bash "$HOME/.claude/hooks/play-sound.sh" task-completed', timeout: 5 }] }],
131
- PreCompact: [{ hooks: [{ type: "command", command: '/bin/bash "$HOME/.claude/hooks/play-sound.sh" compact', timeout: 5 }] }],
132
- TeammateIdle: [{ hooks: [{ type: "command", command: '/bin/bash "$HOME/.claude/hooks/play-sound.sh" teammate-idle', timeout: 5 }] }],
133
- };
134
-
135
63
  // ─── Sound Grid Prompt ───────────────────────────────────────────────────────
136
64
 
137
- const HOOKS = [
138
- { key: "start", abbr: "str", description: "Session starting" },
139
- { key: "prompt", abbr: "pmt", description: "User submitted prompt" },
140
- { key: "permission", abbr: "prm", description: "Permission prompt" },
141
- { key: "stop", abbr: "stp", description: "Done responding" },
142
- { key: "subagent", abbr: "sub", description: "Spawning subagent" },
143
- { key: "task-completed", abbr: "tsk", description: "Task finished" },
144
- { key: "error", abbr: "err", description: "Tool failure" },
145
- { key: "compact", abbr: "cmp", description: "Context compaction" },
146
- { key: "idle", abbr: "idl", description: "Waiting for input" },
147
- { key: "teammate-idle", abbr: "tmt", description: "Teammate went idle" },
148
- { key: "end", abbr: "end", description: "Session over" },
149
- ];
150
-
151
65
  /**
152
66
  * A 2D grid prompt for assigning sounds to hooks.
153
67
  *
@@ -422,59 +336,19 @@ class SoundGrid extends Prompt {
422
336
  }
423
337
  }
424
338
 
425
- // ─── Install Sounds ──────────────────────────────────────────────────────────
339
+ // ─── Install / Uninstall ─────────────────────────────────────────────────────
426
340
 
427
- /**
428
- * Copy selected sound files from package to SOUNDS_DIR.
429
- *
430
- * @param {Object<string, Array<{themeName: string, fileName: string}>>} selections
431
- * @returns {number} Total files installed
432
- */
433
- function installSounds(selections) {
434
- let total = 0;
435
-
436
- for (const [cat, items] of Object.entries(selections)) {
437
- const catDir = path.join(SOUNDS_DIR, cat);
438
- mkdirp(catDir);
439
-
440
- // Clear existing sounds in this category
441
- try {
442
- for (const f of fs.readdirSync(catDir)) {
443
- if (f.endsWith(".wav") || f.endsWith(".mp3")) {
444
- fs.unlinkSync(path.join(catDir, f));
445
- }
446
- }
447
- } catch {}
448
-
449
- // Copy selected sounds
450
- for (const item of items) {
451
- const srcPath = resolveThemeSoundPath(item.themeName, item.fileName);
452
- const destPath = path.join(catDir, item.fileName);
453
-
454
- if (fs.existsSync(srcPath)) {
455
- fs.copyFileSync(srcPath, destPath);
456
- total++;
457
- }
458
- }
459
- }
460
-
461
- return total;
341
+ async function quickInstall(theme) {
342
+ const { total, categories } = lib.quickInstall(theme, paths);
343
+ p.log.success(`Installed ${color.bold(theme.display)} — ${total} sounds across ${categories} hooks.`);
462
344
  }
463
345
 
464
- /**
465
- * Write hooks config and copy play-sound.sh script.
466
- */
467
- function installHooksConfig() {
468
- mkdirp(HOOKS_DIR);
469
-
470
- const hookSrc = path.join(PKG_DIR, "hooks", "play-sound.sh");
471
- const hookDest = path.join(HOOKS_DIR, "play-sound.sh");
472
- fs.copyFileSync(hookSrc, hookDest);
473
- fs.chmodSync(hookDest, 0o755);
474
-
475
- const settings = readSettings();
476
- settings.hooks = HOOKS_CONFIG;
477
- writeSettings(settings);
346
+ function uninstallAll() {
347
+ const removed = lib.uninstallAll(paths);
348
+ if (removed.sounds) p.log.step("Removed ~/.claude/sounds/");
349
+ if (removed.hookScript) p.log.step("Removed ~/.claude/hooks/play-sound.sh");
350
+ if (removed.hooksConfig) p.log.step("Removed hooks from settings.json");
351
+ if (removed.commands) p.log.step("Removed /mute and /unmute commands");
478
352
  }
479
353
 
480
354
  // ─── Print Summary ───────────────────────────────────────────────────────────
@@ -502,15 +376,21 @@ function showHelp() {
502
376
  Usage:
503
377
  npx claude-code-sounds Interactive install
504
378
  npx claude-code-sounds --theme mgs Install a specific theme directly
379
+ npx claude-code-sounds --mix Jump straight to the sound grid
505
380
  npx claude-code-sounds --yes Install defaults, skip prompts
506
381
  npx claude-code-sounds --list List available themes
382
+ npx claude-code-sounds --mute Mute all sounds
383
+ npx claude-code-sounds --unmute Unmute all sounds
507
384
  npx claude-code-sounds --uninstall Remove all sounds and hooks
508
385
  npx claude-code-sounds --help Show this help
509
386
 
510
387
  Flags:
511
388
  -t, --theme <name> Install a specific theme by name
389
+ -m, --mix Jump to sound assignment grid
512
390
  -y, --yes Skip all prompts, use defaults
513
391
  -l, --list List available themes
392
+ --mute Mute all sounds
393
+ --unmute Unmute all sounds
514
394
  -h, --help Show this help
515
395
  `);
516
396
  }
@@ -525,26 +405,6 @@ function showList() {
525
405
  console.log();
526
406
  }
527
407
 
528
- function uninstallAll() {
529
- if (fs.existsSync(SOUNDS_DIR)) {
530
- fs.rmSync(SOUNDS_DIR, { recursive: true });
531
- p.log.step("Removed ~/.claude/sounds/");
532
- }
533
-
534
- const hookScript = path.join(HOOKS_DIR, "play-sound.sh");
535
- if (fs.existsSync(hookScript)) {
536
- fs.unlinkSync(hookScript);
537
- p.log.step("Removed ~/.claude/hooks/play-sound.sh");
538
- }
539
-
540
- if (fs.existsSync(SETTINGS_PATH)) {
541
- const settings = readSettings();
542
- delete settings.hooks;
543
- writeSettings(settings);
544
- p.log.step("Removed hooks from settings.json");
545
- }
546
- }
547
-
548
408
  // ─── Check Dependencies ─────────────────────────────────────────────────────
549
409
 
550
410
  function checkDependencies() {
@@ -554,76 +414,6 @@ function checkDependencies() {
554
414
  }
555
415
  }
556
416
 
557
- // ─── Detect Existing Install ─────────────────────────────────────────────────
558
-
559
- function detectExistingInstall() {
560
- const installed = readInstalled();
561
- if (!installed) return null;
562
-
563
- // Support both old format { theme: "name" } and new { themes: [...], mode }
564
- const themeNames = installed.themes || (installed.theme ? [installed.theme] : []);
565
- if (themeNames.length === 0) return null;
566
-
567
- // Count enabled sounds across all categories
568
- let totalEnabled = 0;
569
- const allCategories = new Set();
570
-
571
- for (const themeName of themeNames) {
572
- try {
573
- const theme = readThemeJson(themeName);
574
- for (const cat of Object.keys(theme.sounds)) {
575
- allCategories.add(cat);
576
- }
577
- } catch {}
578
- }
579
-
580
- for (const cat of allCategories) {
581
- const catDir = path.join(SOUNDS_DIR, cat);
582
- try {
583
- for (const f of fs.readdirSync(catDir)) {
584
- if (f.endsWith(".wav") || f.endsWith(".mp3")) totalEnabled++;
585
- }
586
- } catch {}
587
- }
588
-
589
- if (totalEnabled === 0) return null;
590
-
591
- const displays = themeNames.map((n) => {
592
- try { return readThemeJson(n).name; } catch { return n; }
593
- });
594
-
595
- return {
596
- themes: themeNames,
597
- themeDisplays: displays,
598
- totalEnabled,
599
- mode: installed.mode || "quick",
600
- };
601
- }
602
-
603
- // ─── Quick Install ───────────────────────────────────────────────────────────
604
-
605
- async function quickInstall(theme) {
606
- const themeJson = readThemeJson(theme.name);
607
- const categories = Object.keys(themeJson.sounds);
608
-
609
- for (const cat of categories) mkdirp(path.join(SOUNDS_DIR, cat));
610
-
611
- // Build selections: all native sounds per category
612
- const selections = {};
613
- for (const cat of categories) {
614
- selections[cat] = themeJson.sounds[cat].files.map((f) => ({
615
- themeName: theme.name,
616
- fileName: f.name,
617
- }));
618
- }
619
-
620
- const total = installSounds(selections);
621
- writeInstalled({ themes: [theme.name], mode: "quick" });
622
- installHooksConfig();
623
-
624
- p.log.success(`Installed ${color.bold(theme.display)} — ${total} sounds across ${categories.length} hooks.`);
625
- }
626
-
627
417
  // ─── Custom Install ──────────────────────────────────────────────────────────
628
418
 
629
419
  async function customInstall(selectedThemes) {
@@ -772,10 +562,17 @@ async function reconfigure(existingInstall) {
772
562
  }
773
563
  }
774
564
 
775
- // Build initial grid from currently installed files
565
+ // Build initial grid: disk state for existing themes, theme.json defaults for new ones
566
+ const existingThemeSet = new Set(existingInstall.themes);
776
567
  const soundOnlyRows = rows.filter(r => r.type === 'sound');
777
568
  const initialGrid = soundOnlyRows.map(soundRow => {
569
+ const isNewTheme = !existingThemeSet.has(soundRow.theme);
778
570
  return HOOKS.map(hook => {
571
+ if (isNewTheme) {
572
+ const catSounds = themeData[soundRow.theme].sounds[hook.key];
573
+ if (!catSounds) return false;
574
+ return catSounds.files.some(f => f.name === soundRow.fileName);
575
+ }
779
576
  return currentFiles[hook.key]?.has(soundRow.fileName) || false;
780
577
  });
781
578
  });
@@ -981,6 +778,48 @@ if (flags.has("--help") || flags.has("-h")) {
981
778
  p.cancel(err.message);
982
779
  process.exit(1);
983
780
  });
781
+ } else if (flags.has("--mix") || flags.has("-m")) {
782
+ (async () => {
783
+ p.intro(color.bold("claude-code-sounds"));
784
+ checkDependencies();
785
+
786
+ const existing = detectExistingInstall();
787
+ if (existing) {
788
+ await reconfigure(existing);
789
+ } else {
790
+ const themes = listThemes();
791
+ if (themes.length === 0) {
792
+ p.cancel("No themes found in themes/ directory.");
793
+ process.exit(1);
794
+ }
795
+ const themeValues = await p.multiselect({
796
+ message: "Select themes to include:",
797
+ options: themes.map((t) => ({
798
+ value: t.name,
799
+ label: t.display,
800
+ hint: `${t.soundCount} sounds — from ${t.sources.join(", ") || "local"}`,
801
+ })),
802
+ required: true,
803
+ });
804
+ if (p.isCancel(themeValues)) {
805
+ p.cancel("Cancelled.");
806
+ process.exit(0);
807
+ }
808
+ await customInstall(themes.filter((t) => themeValues.includes(t.name)));
809
+ }
810
+
811
+ p.outro("Start a new Claude Code session to hear it.");
812
+ })().catch((err) => {
813
+ killPreview();
814
+ p.cancel(err.message);
815
+ process.exit(1);
816
+ });
817
+ } else if (flags.has("--mute")) {
818
+ lib.setMuted(true, paths);
819
+ console.log(" Sounds muted. Run --unmute to re-enable.");
820
+ } else if (flags.has("--unmute")) {
821
+ lib.setMuted(false, paths);
822
+ console.log(" Sounds unmuted.");
984
823
  } else if (flags.has("--uninstall") || flags.has("--remove")) {
985
824
  p.intro(color.bold("claude-code-sounds"));
986
825
  uninstallAll();