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.
- package/README.md +38 -25
- package/bin/cli.js +86 -247
- package/bin/lib.js +308 -0
- package/commands/mute.md +7 -0
- package/commands/unmute.md +7 -0
- package/hooks/play-sound.sh +4 -2
- package/images/sound-grid.png +0 -0
- package/package.json +5 -1
- package/themes/aoe2/sounds/attack-enemy-now.mp3 +0 -0
- package/themes/aoe2/sounds/being-rushed.mp3 +0 -0
- package/themes/aoe2/sounds/confirm.mp3 +0 -0
- package/themes/aoe2/sounds/conversion-warning.mp3 +0 -0
- package/themes/aoe2/sounds/death.mp3 +0 -0
- package/themes/aoe2/sounds/dont-point-that-thing.mp3 +0 -0
- package/themes/aoe2/sounds/drum-roll.mp3 +0 -0
- package/themes/aoe2/sounds/enemy-sighted.mp3 +0 -0
- package/themes/aoe2/sounds/farm-exhausted.mp3 +0 -0
- package/themes/aoe2/sounds/horn.mp3 +0 -0
- package/themes/aoe2/sounds/i-need-a-monk.mp3 +0 -0
- package/themes/aoe2/sounds/it-is-good.mp3 +0 -0
- package/themes/aoe2/sounds/nice-town-ill-take-it.mp3 +0 -0
- package/themes/aoe2/sounds/roggan.mp3 +0 -0
- package/themes/aoe2/sounds/schwarzenegger.mp3 +0 -0
- package/themes/aoe2/sounds/smite-me.mp3 +0 -0
- package/themes/aoe2/sounds/stable.mp3 +0 -0
- package/themes/aoe2/sounds/start-the-game-already.mp3 +0 -0
- package/themes/aoe2/sounds/taunt-ahh.mp3 +0 -0
- package/themes/aoe2/sounds/taunt-all-hail.mp3 +0 -0
- package/themes/aoe2/sounds/taunt-back-to-age-1.mp3 +0 -0
- package/themes/aoe2/sounds/taunt-food-please.mp3 +0 -0
- package/themes/aoe2/sounds/taunt-gold-please.mp3 +0 -0
- package/themes/aoe2/sounds/taunt-herb-laugh.mp3 +0 -0
- package/themes/aoe2/sounds/taunt-no.mp3 +0 -0
- package/themes/aoe2/sounds/taunt-oooh.mp3 +0 -0
- package/themes/aoe2/sounds/taunt-quit-touchin-me.mp3 +0 -0
- package/themes/aoe2/sounds/taunt-stone-please.mp3 +0 -0
- package/themes/aoe2/sounds/taunt-wood-please.mp3 +0 -0
- package/themes/aoe2/sounds/taunt-yes.mp3 +0 -0
- package/themes/aoe2/sounds/unit-created.mp3 +0 -0
- package/themes/aoe2/sounds/viking-horn.mp3 +0 -0
- package/themes/aoe2/sounds/villager-killed.mp3 +0 -0
- package/themes/aoe2/sounds/villager-prrrroh.mp3 +0 -0
- package/themes/aoe2/sounds/villager-spawn.mp3 +0 -0
- package/themes/aoe2/sounds/villager-sssh-ho.mp3 +0 -0
- package/themes/aoe2/sounds/wololo-long.mp3 +0 -0
- package/themes/aoe2/sounds/wololo.mp3 +0 -0
- package/themes/cnc/sounds/alarm.mp3 +0 -0
- package/themes/cnc/sounds/allies-acknowledged.mp3 +0 -0
- package/themes/cnc/sounds/allies-affirmative.mp3 +0 -0
- package/themes/cnc/sounds/allies-agreed.mp3 +0 -0
- package/themes/cnc/sounds/allies-at-once.mp3 +0 -0
- package/themes/cnc/sounds/allies-of-course.mp3 +0 -0
- package/themes/cnc/sounds/allies-ready-and-waiting.mp3 +0 -0
- package/themes/cnc/sounds/allies-reporting.mp3 +0 -0
- package/themes/cnc/sounds/allies-very-well.mp3 +0 -0
- package/themes/cnc/sounds/allies-waiting-orders.mp3 +0 -0
- package/themes/cnc/sounds/allies-yes-sir.mp3 +0 -0
- package/themes/cnc/sounds/base-under-attack.mp3 +0 -0
- package/themes/cnc/sounds/building-destroyed.mp3 +0 -0
- package/themes/cnc/sounds/building-placed.mp3 +0 -0
- package/themes/cnc/sounds/building.mp3 +0 -0
- package/themes/cnc/sounds/cha-ching.mp3 +0 -0
- package/themes/cnc/sounds/construction-complete.mp3 +0 -0
- package/themes/cnc/sounds/credit-in.mp3 +0 -0
- package/themes/cnc/sounds/explosion.mp3 +0 -0
- package/themes/cnc/sounds/gdi-incoming-transmission.mp3 +0 -0
- package/themes/cnc/sounds/gdi-on-hold.mp3 +0 -0
- package/themes/cnc/sounds/gdi-recycle.mp3 +0 -0
- package/themes/cnc/sounds/gdi-success.mp3 +0 -0
- package/themes/cnc/sounds/gdi-unable-to-comply.mp3 +0 -0
- package/themes/cnc/sounds/gdi-warning.mp3 +0 -0
- package/themes/cnc/sounds/got-a-present-for-ya.mp3 +0 -0
- package/themes/cnc/sounds/incoming-transmission.mp3 +0 -0
- package/themes/cnc/sounds/insufficient-funds.mp3 +0 -0
- package/themes/cnc/sounds/man-die.mp3 +0 -0
- package/themes/cnc/sounds/no-money.mp3 +0 -0
- package/themes/cnc/sounds/nod-incoming-transmission.mp3 +0 -0
- package/themes/cnc/sounds/nod-low-power.mp3 +0 -0
- package/themes/cnc/sounds/nod-on-hold.mp3 +0 -0
- package/themes/cnc/sounds/nod-unable-to-comply.mp3 +0 -0
- package/themes/cnc/sounds/nuke-launch.mp3 +0 -0
- package/themes/cnc/sounds/nuke-ready.mp3 +0 -0
- package/themes/cnc/sounds/power-down.mp3 +0 -0
- package/themes/cnc/sounds/power-up.mp3 +0 -0
- package/themes/cnc/sounds/radar-alert.mp3 +0 -0
- package/themes/cnc/sounds/radar-power-on.mp3 +0 -0
- package/themes/cnc/sounds/reinforcements-ready.mp3 +0 -0
- package/themes/cnc/sounds/repairing.mp3 +0 -0
- package/themes/cnc/sounds/selling.mp3 +0 -0
- package/themes/cnc/sounds/soviet-acknowledged.mp3 +0 -0
- package/themes/cnc/sounds/soviet-affirmative.mp3 +0 -0
- package/themes/cnc/sounds/soviet-at-once.mp3 +0 -0
- package/themes/cnc/sounds/soviet-comrade.mp3 +0 -0
- package/themes/cnc/sounds/soviet-reporting.mp3 +0 -0
- package/themes/cnc/sounds/soviet-yes-sir.mp3 +0 -0
- package/themes/cnc/sounds/spy-commander.mp3 +0 -0
- package/themes/cnc/sounds/spy-for-king-and-country.mp3 +0 -0
- package/themes/cnc/sounds/spy-indeed.mp3 +0 -0
- package/themes/cnc/sounds/spy-on-my-way.mp3 +0 -0
- package/themes/cnc/sounds/tanya-chew-on-this.mp3 +0 -0
- package/themes/cnc/sounds/tanya-death.mp3 +0 -0
- package/themes/cnc/sounds/tanya-im-there.mp3 +0 -0
- package/themes/cnc/sounds/tanya-kiss-it-bye-bye.mp3 +0 -0
- package/themes/cnc/sounds/tanya-laugh.mp3 +0 -0
- package/themes/cnc/sounds/tanya-lets-rock.mp3 +0 -0
- package/themes/cnc/sounds/tanya-shake-it-baby.mp3 +0 -0
- package/themes/cnc/sounds/tanya-thats-all-you-got.mp3 +0 -0
- package/themes/cnc/sounds/tanya-yeah.mp3 +0 -0
- package/themes/cnc/sounds/tanya-yes-sir.mp3 +0 -0
- package/themes/cnc/sounds/tesla-shot.mp3 +0 -0
- package/themes/cnc/sounds/ts-auth.mp3 +0 -0
- package/themes/cnc/sounds/ts-notify.mp3 +0 -0
- package/themes/cnc/sounds/ts-reminder.mp3 +0 -0
- package/themes/cnc/sounds/ts-startup.mp3 +0 -0
- package/themes/cnc/sounds/ts-system.mp3 +0 -0
- package/themes/cnc/sounds/unit-lost.mp3 +0 -0
- package/themes/cnc/sounds/unit-promoted.mp3 +0 -0
- package/themes/cnc/sounds/unit-ready.mp3 +0 -0
- package/themes/cnc/theme.json +40 -40
- package/themes/cod/sounds/bomb-planted.mp3 +0 -0
- package/themes/cod/sounds/bravo-six-going-dark.mp3 +0 -0
- package/themes/cod/sounds/cod-waw-rank-up.mp3 +0 -0
- package/themes/cod/sounds/enemy-ac130-above.mp3 +0 -0
- package/themes/cod/sounds/enemy-downed.mp3 +0 -0
- package/themes/cod/sounds/enemy-uav-overhead.mp3 +0 -0
- package/themes/cod/sounds/friendly-predator-missile.mp3 +0 -0
- package/themes/cod/sounds/hitmarker-alt.mp3 +0 -0
- package/themes/cod/sounds/hitmarker.mp3 +0 -0
- package/themes/cod/sounds/intervention-shot.mp3 +0 -0
- package/themes/cod/sounds/kill-confirmed.mp3 +0 -0
- package/themes/cod/sounds/lets-do-this.mp3 +0 -0
- package/themes/cod/sounds/mw2-level-up.mp3 +0 -0
- package/themes/cod/sounds/mystery-box.mp3 +0 -0
- package/themes/cod/sounds/tactical-nuke-incoming.mp3 +0 -0
- package/themes/cod/sounds/tango-down.mp3 +0 -0
- package/themes/cod/sounds/teammate-got-arse-kicked.mp3 +0 -0
- package/themes/cod/sounds/warzone-airstrike.mp3 +0 -0
- package/themes/cod/sounds/warzone-legendary.mp3 +0 -0
- package/themes/cod/sounds/warzone-victory.mp3 +0 -0
- package/themes/cod/sounds/welcome-to-the-gulag.mp3 +0 -0
- package/themes/cod/sounds/youre-the-last-one.mp3 +0 -0
- package/themes/cod/sounds/zombies-bye-bye.mp3 +0 -0
- package/themes/cod/sounds/zombies-evil-laugh.mp3 +0 -0
- package/themes/cod/sounds/zombies-insta-kill.mp3 +0 -0
- package/themes/cod/sounds/zombies-max-ammo.mp3 +0 -0
- package/themes/cod/sounds/zombies-new-round.mp3 +0 -0
- package/themes/cod/sounds/zombies-nuke.mp3 +0 -0
- package/themes/cod/sounds/zombies-quick-revive.mp3 +0 -0
- package/themes/cod/sounds/zombies-round-change.mp3 +0 -0
- package/themes/cod/sounds/zombies-round-end.mp3 +0 -0
- package/themes/cod/sounds/zombies-round-start.mp3 +0 -0
- package/themes/cod/theme.json +103 -0
- package/themes/diablo2/sounds/amulet-drop.mp3 +0 -0
- package/themes/diablo2/sounds/andariel.mp3 +0 -0
- package/themes/diablo2/sounds/arrow-block.mp3 +0 -0
- package/themes/diablo2/sounds/barb-gift-for-you.mp3 +0 -0
- package/themes/diablo2/sounds/barb-leap.mp3 +0 -0
- package/themes/diablo2/sounds/barb-select.mp3 +0 -0
- package/themes/diablo2/sounds/barb-shout.mp3 +0 -0
- package/themes/diablo2/sounds/barb-soon-perhaps.mp3 +0 -0
- package/themes/diablo2/sounds/barb-time-to-die.mp3 +0 -0
- package/themes/diablo2/sounds/blade-block.mp3 +0 -0
- package/themes/diablo2/sounds/bloodraven.mp3 +0 -0
- package/themes/diablo2/sounds/bow-shot.mp3 +0 -0
- package/themes/diablo2/sounds/chain-armor.mp3 +0 -0
- package/themes/diablo2/sounds/charm-drop.mp3 +0 -0
- package/themes/diablo2/sounds/countess-bloodbath.mp3 +0 -0
- package/themes/diablo2/sounds/drink-potion.mp3 +0 -0
- package/themes/diablo2/sounds/gem-drop.mp3 +0 -0
- package/themes/diablo2/sounds/gold-drop.mp3 +0 -0
- package/themes/diablo2/sounds/gold-pickup.mp3 +0 -0
- package/themes/diablo2/sounds/helm-drop.mp3 +0 -0
- package/themes/diablo2/sounds/item-drop.mp3 +0 -0
- package/themes/diablo2/sounds/javelin.mp3 +0 -0
- package/themes/diablo2/sounds/key-drop.mp3 +0 -0
- package/themes/diablo2/sounds/level-up.mp3 +0 -0
- package/themes/diablo2/sounds/necro-help-me.mp3 +0 -0
- package/themes/diablo2/sounds/not-enough-mana.mp3 +0 -0
- package/themes/diablo2/sounds/not-even-death.mp3 +0 -0
- package/themes/diablo2/sounds/not-in-town.mp3 +0 -0
- package/themes/diablo2/sounds/poison-trap.mp3 +0 -0
- package/themes/diablo2/sounds/potion.mp3 +0 -0
- package/themes/diablo2/sounds/prime-evils-death.mp3 +0 -0
- package/themes/diablo2/sounds/prime-evils-laugh.mp3 +0 -0
- package/themes/diablo2/sounds/prime-evils-scream.mp3 +0 -0
- package/themes/diablo2/sounds/ring-drop.mp3 +0 -0
- package/themes/diablo2/sounds/scroll.mp3 +0 -0
- package/themes/diablo2/sounds/skull-drop.mp3 +0 -0
- package/themes/diablo2/sounds/sorceress-dead.mp3 +0 -0
- package/themes/diablo2/sounds/sorceress-monster.mp3 +0 -0
- package/themes/diablo2/sounds/sorceress-time-to-die.mp3 +0 -0
- package/themes/diablo2/sounds/stay-awhile-and-listen.mp3 +0 -0
- package/themes/diablo2/sounds/town-portal.mp3 +0 -0
- package/themes/halo/sounds/betrayal.mp3 +0 -0
- package/themes/halo/sounds/betrayed.mp3 +0 -0
- package/themes/halo/sounds/cortana-affirmative.mp3 +0 -0
- package/themes/halo/sounds/cortana-alert.mp3 +0 -0
- package/themes/halo/sounds/cortana-can-you-hear-me.mp3 +0 -0
- package/themes/halo/sounds/cortana-do-best.mp3 +0 -0
- package/themes/halo/sounds/cortana-evacuate.mp3 +0 -0
- package/themes/halo/sounds/cortana-good-time.mp3 +0 -0
- package/themes/halo/sounds/cortana-here-they-come.mp3 +0 -0
- package/themes/halo/sounds/cortana-master-chief.mp3 +0 -0
- package/themes/halo/sounds/cortana-need-to-get-going.mp3 +0 -0
- package/themes/halo/sounds/cortana-show-them.mp3 +0 -0
- package/themes/halo/sounds/cortana-this-is-not-a-drill.mp3 +0 -0
- package/themes/halo/sounds/cortana-warning.mp3 +0 -0
- package/themes/halo/sounds/cortana-we-should-leave.mp3 +0 -0
- package/themes/halo/sounds/cortana-what-the-hell.mp3 +0 -0
- package/themes/halo/sounds/cortana-where-are-you-going.mp3 +0 -0
- package/themes/halo/sounds/cortana-yank-me.mp3 +0 -0
- package/themes/halo/sounds/double-kill.mp3 +0 -0
- package/themes/halo/sounds/elite-laugh.mp3 +0 -0
- package/themes/halo/sounds/elite-woboba.mp3 +0 -0
- package/themes/halo/sounds/elite-wort.mp3 +0 -0
- package/themes/halo/sounds/finish-the-fight.mp3 +0 -0
- package/themes/halo/sounds/game-over.mp3 +0 -0
- package/themes/halo/sounds/get-tactical-marines.mp3 +0 -0
- package/themes/halo/sounds/gregorian-chant.mp3 +0 -0
- package/themes/halo/sounds/grunt-birthday-party.mp3 +0 -0
- package/themes/halo/sounds/halo-theme.mp3 +0 -0
- package/themes/halo/sounds/i-need-a-weapon.mp3 +0 -0
- package/themes/halo/sounds/infected.mp3 +0 -0
- package/themes/halo/sounds/invincible.mp3 +0 -0
- package/themes/halo/sounds/killing-frenzy.mp3 +0 -0
- package/themes/halo/sounds/killing-spree.mp3 +0 -0
- package/themes/halo/sounds/killionaire.mp3 +0 -0
- package/themes/halo/sounds/killjoy.mp3 +0 -0
- package/themes/halo/sounds/killtacular.mp3 +0 -0
- package/themes/halo/sounds/killtrocity.mp3 +0 -0
- package/themes/halo/sounds/last-man-standing.mp3 +0 -0
- package/themes/halo/sounds/one-minute-remain.mp3 +0 -0
- package/themes/halo/sounds/overkill.mp3 +0 -0
- package/themes/halo/sounds/reinforcements.mp3 +0 -0
- package/themes/halo/sounds/revenge.mp3 +0 -0
- package/themes/halo/sounds/running-riot.mp3 +0 -0
- package/themes/halo/sounds/shield-depleted.mp3 +0 -0
- package/themes/halo/sounds/shield-recharge.mp3 +0 -0
- package/themes/halo/sounds/slayer.mp3 +0 -0
- package/themes/halo/sounds/suicide.mp3 +0 -0
- package/themes/halo/sounds/thirty-seconds-remain.mp3 +0 -0
- package/themes/halo/sounds/triple-kill.mp3 +0 -0
- package/themes/halo/sounds/unfrigginbelievable.mp3 +0 -0
- package/themes/halo/sounds/when-you-first-saw-halo.mp3 +0 -0
- package/themes/halo/sounds/yoink.mp3 +0 -0
- package/themes/halo/theme.json +222 -0
- package/themes/mario/sounds/1-up.mp3 +0 -0
- package/themes/mario/sounds/block-bump.mp3 +0 -0
- package/themes/mario/sounds/break-block.mp3 +0 -0
- package/themes/mario/sounds/burned.mp3 +0 -0
- package/themes/mario/sounds/coin.mp3 +0 -0
- package/themes/mario/sounds/death.mp3 +0 -0
- package/themes/mario/sounds/doh.mp3 +0 -0
- package/themes/mario/sounds/fireball.mp3 +0 -0
- package/themes/mario/sounds/flagpole.mp3 +0 -0
- package/themes/mario/sounds/game-over.mp3 +0 -0
- package/themes/mario/sounds/haha.mp3 +0 -0
- package/themes/mario/sounds/happy-message.mp3 +0 -0
- package/themes/mario/sounds/hello.mp3 +0 -0
- package/themes/mario/sounds/here-we-go.mp3 +0 -0
- package/themes/mario/sounds/hurt.mp3 +0 -0
- package/themes/mario/sounds/its-a-me-mario.mp3 +0 -0
- package/themes/mario/sounds/lets-a-go.mp3 +0 -0
- package/themes/mario/sounds/level-clear.mp3 +0 -0
- package/themes/mario/sounds/mamma-mia.mp3 +0 -0
- package/themes/mario/sounds/message-block.mp3 +0 -0
- package/themes/mario/sounds/mushroom-appears.mp3 +0 -0
- package/themes/mario/sounds/okey-dokey.mp3 +0 -0
- package/themes/mario/sounds/oof.mp3 +0 -0
- package/themes/mario/sounds/pause.mp3 +0 -0
- package/themes/mario/sounds/pipe-warp.mp3 +0 -0
- package/themes/mario/sounds/power-up.mp3 +0 -0
- package/themes/mario/sounds/question-block.mp3 +0 -0
- package/themes/mario/sounds/raccoon-transform.mp3 +0 -0
- package/themes/mario/sounds/shrink.mp3 +0 -0
- package/themes/mario/sounds/smb3-power-up.mp3 +0 -0
- package/themes/mario/sounds/smw-1-up.mp3 +0 -0
- package/themes/mario/sounds/smw-pipe.mp3 +0 -0
- package/themes/mario/sounds/smw-power-up.mp3 +0 -0
- package/themes/mario/sounds/snore.mp3 +0 -0
- package/themes/mario/sounds/stage-clear.mp3 +0 -0
- package/themes/mario/sounds/star-appears.mp3 +0 -0
- package/themes/mario/sounds/stomp.mp3 +0 -0
- package/themes/mario/sounds/tired.mp3 +0 -0
- package/themes/mario/sounds/vine-grow.mp3 +0 -0
- package/themes/mario/sounds/waha.mp3 +0 -0
- package/themes/mario/sounds/warp-whistle.mp3 +0 -0
- package/themes/mario/sounds/warp.mp3 +0 -0
- package/themes/mario/sounds/whoa.mp3 +0 -0
- package/themes/mario/sounds/world-clear.mp3 +0 -0
- package/themes/mario/sounds/yahoo.mp3 +0 -0
- package/themes/mario/sounds/yawn.mp3 +0 -0
- package/themes/mario/sounds/yippee.mp3 +0 -0
- package/themes/mario/theme.json +47 -47
- package/themes/mgs/sounds/alert-mode.mp3 +0 -0
- package/themes/mgs/sounds/alert-sfx.mp3 +0 -0
- package/themes/mgs/sounds/alert.mp3 +0 -0
- package/themes/mgs/sounds/cigar.mp3 +0 -0
- package/themes/mgs/sounds/codec-beep.mp3 +0 -0
- package/themes/mgs/sounds/codec-call-out.mp3 +0 -0
- package/themes/mgs/sounds/codec-call.mp3 +0 -0
- package/themes/mgs/sounds/codec-close.mp3 +0 -0
- package/themes/mgs/sounds/codec-dial.mp3 +0 -0
- package/themes/mgs/sounds/codec-exit.mp3 +0 -0
- package/themes/mgs/sounds/codec-hangup.mp3 +0 -0
- package/themes/mgs/sounds/codec-ring.mp3 +0 -0
- package/themes/mgs/sounds/friendly-fire.mp3 +0 -0
- package/themes/mgs/sounds/game-over-fade.mp3 +0 -0
- package/themes/mgs/sounds/game-over-screen.mp3 +0 -0
- package/themes/mgs/sounds/game-over.mp3 +0 -0
- package/themes/mgs/sounds/good-shooting.mp3 +0 -0
- package/themes/mgs/sounds/if-you-say-so.mp3 +0 -0
- package/themes/mgs/sounds/ill-do-my-best.mp3 +0 -0
- package/themes/mgs/sounds/item-drop.mp3 +0 -0
- package/themes/mgs/sounds/just-to-suffer.mp3 +0 -0
- package/themes/mgs/sounds/kept-you-waiting-huh.mp3 +0 -0
- package/themes/mgs/sounds/kept-you-waiting.mp3 +0 -0
- package/themes/mgs/sounds/mission-complete.mp3 +0 -0
- package/themes/mgs/sounds/mission-qualify.mp3 +0 -0
- package/themes/mgs/sounds/ocelot-meow.mp3 +0 -0
- package/themes/mgs/sounds/original-game-over.mp3 +0 -0
- package/themes/mgs/sounds/roger-that.mp3 +0 -0
- package/themes/mgs/sounds/snake-dies.mp3 +0 -0
- package/themes/mgs/sounds/snake-scream.mp3 +0 -0
- package/themes/mgs/sounds/sounds-like-a-plan.mp3 +0 -0
- package/themes/mgs/sounds/sweet-dreams.mp3 +0 -0
- package/themes/mgs/sounds/this-is-snake.mp3 +0 -0
- package/themes/mgs/sounds/what-the-hell.mp3 +0 -0
- package/themes/mgs/sounds/what-was-that-noise.mp3 +0 -0
- package/themes/mgs/sounds/what-was-that.mp3 +0 -0
- package/themes/mgs/sounds/youre-pretty-good.mp3 +0 -0
- package/themes/pokemon-gen3/sounds/agility.mp3 +0 -0
- package/themes/pokemon-gen3/sounds/ball-open.mp3 +0 -0
- package/themes/pokemon-gen3/sounds/ball-throw.mp3 +0 -0
- package/themes/pokemon-gen3/sounds/bang.mp3 +0 -0
- package/themes/pokemon-gen3/sounds/baton-pass.mp3 +0 -0
- package/themes/pokemon-gen3/sounds/battle-faint.mp3 +0 -0
- package/themes/pokemon-gen3/sounds/battle-start.mp3 +0 -0
- package/themes/pokemon-gen3/sounds/battle-victory.mp3 +0 -0
- package/themes/pokemon-gen3/sounds/catching-fanfare.mp3 +0 -0
- package/themes/pokemon-gen3/sounds/dragon-dance.mp3 +0 -0
- package/themes/pokemon-gen3/sounds/effective.mp3 +0 -0
- package/themes/pokemon-gen3/sounds/explosion.mp3 +0 -0
- package/themes/pokemon-gen3/sounds/faint.mp3 +0 -0
- package/themes/pokemon-gen3/sounds/gastly-cry.mp3 +0 -0
- package/themes/pokemon-gen3/sounds/growl.mp3 +0 -0
- package/themes/pokemon-gen3/sounds/gym-badge.mp3 +0 -0
- package/themes/pokemon-gen3/sounds/hit-normal.mp3 +0 -0
- package/themes/pokemon-gen3/sounds/item-found.mp3 +0 -0
- package/themes/pokemon-gen3/sounds/item-received.mp3 +0 -0
- package/themes/pokemon-gen3/sounds/ledge.mp3 +0 -0
- package/themes/pokemon-gen3/sounds/level-up.mp3 +0 -0
- package/themes/pokemon-gen3/sounds/low-health.mp3 +0 -0
- package/themes/pokemon-gen3/sounds/not-effective.mp3 +0 -0
- package/themes/pokemon-gen3/sounds/pc-login.mp3 +0 -0
- package/themes/pokemon-gen3/sounds/pc-off.mp3 +0 -0
- package/themes/pokemon-gen3/sounds/pc-on.mp3 +0 -0
- package/themes/pokemon-gen3/sounds/pokemon-center-heal.mp3 +0 -0
- package/themes/pokemon-gen3/sounds/pokemon-center-music.mp3 +0 -0
- package/themes/pokemon-gen3/sounds/pokemon-evolve.mp3 +0 -0
- package/themes/pokemon-gen3/sounds/recall-pokeball.mp3 +0 -0
- package/themes/pokemon-gen3/sounds/rest.mp3 +0 -0
- package/themes/pokemon-gen3/sounds/roar.mp3 +0 -0
- package/themes/pokemon-gen3/sounds/save-game.mp3 +0 -0
- package/themes/pokemon-gen3/sounds/save.mp3 +0 -0
- package/themes/pokemon-gen3/sounds/screech.mp3 +0 -0
- package/themes/pokemon-gen3/sounds/select.mp3 +0 -0
- package/themes/pokemon-gen3/sounds/self-destruct.mp3 +0 -0
- package/themes/pokemon-gen3/sounds/slowpoke-cry.mp3 +0 -0
- package/themes/pokemon-gen3/sounds/stat-rise.mp3 +0 -0
- package/themes/pokemon-gen3/sounds/status-confused.mp3 +0 -0
- package/themes/pokemon-gen3/sounds/substitute.mp3 +0 -0
- package/themes/pokemon-gen3/sounds/success.mp3 +0 -0
- package/themes/pokemon-gen3/sounds/super-effective-sfx.mp3 +0 -0
- package/themes/pokemon-gen3/sounds/teleport.mp3 +0 -0
- package/themes/pokemon-gen3/sounds/trainer-encounter.mp3 +0 -0
- package/themes/pokemon-gen3/sounds/transform.mp3 +0 -0
- package/themes/pokemon-gen3/sounds/use-item.mp3 +0 -0
- package/themes/pokemon-gen3/sounds/wall-hit.mp3 +0 -0
- package/themes/pokemon-gen3/sounds/wild-encounter.mp3 +0 -0
- package/themes/pokemon-gen3/sounds/win-open.mp3 +0 -0
- package/themes/pokemon-gen3/sounds/yawn.mp3 +0 -0
- package/themes/pokemon-gen3/theme.json +117 -0
- package/themes/portal/sounds/announcer-post.mp3 +0 -0
- package/themes/portal/sounds/button-positive.mp3 +0 -0
- package/themes/portal/sounds/button-press.mp3 +0 -0
- package/themes/portal/sounds/button-release.mp3 +0 -0
- package/themes/portal/sounds/core-attach.mp3 +0 -0
- package/themes/portal/sounds/core-complete.mp3 +0 -0
- package/themes/portal/sounds/emancipation-grill.mp3 +0 -0
- package/themes/portal/sounds/fizzler-shutdown.mp3 +0 -0
- package/themes/portal/sounds/fizzler-start.mp3 +0 -0
- package/themes/portal/sounds/invalid-surface.mp3 +0 -0
- package/themes/portal/sounds/klaxon-alarm.mp3 +0 -0
- package/themes/portal/sounds/portal-close-alt.mp3 +0 -0
- package/themes/portal/sounds/portal-close.mp3 +0 -0
- package/themes/portal/sounds/portal-enter.mp3 +0 -0
- package/themes/portal/sounds/portal-exit.mp3 +0 -0
- package/themes/portal/sounds/portal-fizzle.mp3 +0 -0
- package/themes/portal/sounds/portal-open.mp3 +0 -0
- package/themes/portal/sounds/portal-whoosh-close.mp3 +0 -0
- package/themes/portal/sounds/portalgun-powerup.mp3 +0 -0
- package/themes/portal/sounds/shoot-blue-portal.mp3 +0 -0
- package/themes/portal/sounds/shoot-orange-portal.mp3 +0 -0
- package/themes/portal/sounds/synth-negative.mp3 +0 -0
- package/themes/portal/sounds/synth-positive.mp3 +0 -0
- package/themes/portal/sounds/test-chamber-complete.mp3 +0 -0
- package/themes/portal/sounds/test-chamber-start.mp3 +0 -0
- package/themes/portal/sounds/turret-activated.mp3 +0 -0
- package/themes/portal/sounds/turret-alert.mp3 +0 -0
- package/themes/portal/sounds/turret-are-you-still-there.mp3 +0 -0
- package/themes/portal/sounds/turret-deploy.mp3 +0 -0
- package/themes/portal/sounds/turret-done.mp3 +0 -0
- package/themes/portal/sounds/turret-goodbye.mp3 +0 -0
- package/themes/portal/sounds/turret-hello.mp3 +0 -0
- package/themes/portal/sounds/turret-hellooo.mp3 +0 -0
- package/themes/portal/sounds/turret-i-see-you.mp3 +0 -0
- package/themes/portal/sounds/turret-no-hard-feelings.mp3 +0 -0
- package/themes/portal/sounds/turret-ow.mp3 +0 -0
- package/themes/portal/sounds/turret-ping.mp3 +0 -0
- package/themes/portal/sounds/turret-retract.mp3 +0 -0
- package/themes/portal/sounds/turret-searching.mp3 +0 -0
- package/themes/portal/sounds/turret-target-lost.mp3 +0 -0
- package/themes/portal/sounds/turret-whos-there.mp3 +0 -0
- package/themes/portal/sounds/ui-click.mp3 +0 -0
- package/themes/portal/theme.json +42 -42
- package/themes/short-circuit/sounds/blazing-pants.mp3 +0 -0
- package/themes/short-circuit/sounds/dull-home-for-rodents.mp3 +0 -0
- package/themes/short-circuit/sounds/dying-robot.mp3 +0 -0
- package/themes/short-circuit/sounds/enemy-neutralized.mp3 +0 -0
- package/themes/short-circuit/sounds/escaped-robot.mp3 +0 -0
- package/themes/short-circuit/sounds/gas-money.mp3 +0 -0
- package/themes/short-circuit/sounds/good-lord.mp3 +0 -0
- package/themes/short-circuit/sounds/got-nobody.mp3 +0 -0
- package/themes/short-circuit/sounds/hot-coffee.mp3 +0 -0
- package/themes/short-circuit/sounds/hunky-dory.mp3 +0 -0
- package/themes/short-circuit/sounds/malfunction-3.mp3 +0 -0
- package/themes/short-circuit/sounds/malfunction-4.mp3 +0 -0
- package/themes/short-circuit/sounds/malfunction.mp3 +0 -0
- package/themes/short-circuit/sounds/need-input.mp3 +0 -0
- package/themes/short-circuit/sounds/no.mp3 +0 -0
- package/themes/short-circuit/sounds/number-5-is-alive-2.mp3 +0 -0
- package/themes/short-circuit/sounds/number-5-is-alive.mp3 +0 -0
- package/themes/short-circuit/sounds/nun-soup.mp3 +0 -0
- package/themes/short-circuit/sounds/one-piece-will-do.mp3 +0 -0
- package/themes/short-circuit/sounds/ooo.mp3 +0 -0
- package/themes/short-circuit/sounds/read-fast.mp3 +0 -0
- package/themes/short-circuit/sounds/robot-alert.mp3 +0 -0
- package/themes/short-circuit/sounds/robot-arm-moving.mp3 +0 -0
- package/themes/short-circuit/sounds/robot-computing.mp3 +0 -0
- package/themes/short-circuit/sounds/sci-fi-robot.mp3 +0 -0
- package/themes/short-circuit/sounds/scream-and-run.mp3 +0 -0
- package/themes/short-circuit/sounds/short-circuit-zap.mp3 +0 -0
- package/themes/short-circuit/sounds/software.mp3 +0 -0
- package/themes/short-circuit/sounds/stupid.mp3 +0 -0
- package/themes/short-circuit/sounds/surrender-the-robot.mp3 +0 -0
- package/themes/short-circuit/sounds/tomorrow.mp3 +0 -0
- package/themes/short-circuit/sounds/what-planet.mp3 +0 -0
- package/themes/short-circuit/sounds/yes-2.mp3 +0 -0
- package/themes/short-circuit/theme.json +103 -0
- package/themes/star-wars/sounds/bad-feeling.mp3 +0 -0
- package/themes/star-wars/sounds/blaster-firing.mp3 +0 -0
- package/themes/star-wars/sounds/chewie-chatting.mp3 +0 -0
- package/themes/star-wars/sounds/chewie-roar.mp3 +0 -0
- package/themes/star-wars/sounds/dark-side.mp3 +0 -0
- package/themes/star-wars/sounds/darth-maul-reveal-ourselves.mp3 +0 -0
- package/themes/star-wars/sounds/decided-to-rescue-you.mp3 +0 -0
- package/themes/star-wars/sounds/destiny-fulfilled.mp3 +0 -0
- package/themes/star-wars/sounds/destroy-you.mp3 +0 -0
- package/themes/star-wars/sounds/force-is-strong-with-this-one.mp3 +0 -0
- package/themes/star-wars/sounds/force-is-strong.mp3 +0 -0
- package/themes/star-wars/sounds/force-will-be-with-you.mp3 +0 -0
- package/themes/star-wars/sounds/great-disturbance.mp3 +0 -0
- package/themes/star-wars/sounds/i-am-your-father.mp3 +0 -0
- package/themes/star-wars/sounds/its-a-trap.mp3 +0 -0
- package/themes/star-wars/sounds/jabba-laughing.mp3 +0 -0
- package/themes/star-wars/sounds/lightsaber-ignite.mp3 +0 -0
- package/themes/star-wars/sounds/lightsaber-off.mp3 +0 -0
- package/themes/star-wars/sounds/lord-vader-rise.mp3 +0 -0
- package/themes/star-wars/sounds/luke-dont-do-that.mp3 +0 -0
- package/themes/star-wars/sounds/r2d2-beep.mp3 +0 -0
- package/themes/star-wars/sounds/r2d2-hey-you.mp3 +0 -0
- package/themes/star-wars/sounds/r2d2-woo-hoo.mp3 +0 -0
- package/themes/star-wars/sounds/r2d2-yeah.mp3 +0 -0
- package/themes/star-wars/sounds/vader-breathing.mp3 +0 -0
- package/themes/star-wars/sounds/vader-what-is-thy-bidding.mp3 +0 -0
- package/themes/star-wars/sounds/vader-yes-my-master.mp3 +0 -0
- package/themes/star-wars/sounds/wilhelm-scream.mp3 +0 -0
- package/themes/star-wars/sounds/yoda-900-years-old.mp3 +0 -0
- package/themes/star-wars/sounds/yoda-always-two.mp3 +0 -0
- package/themes/star-wars/sounds/yoda-dangerous-disturbing.mp3 +0 -0
- package/themes/star-wars/sounds/yoda-do-or-do-not.mp3 +0 -0
- package/themes/star-wars/sounds/yoda-laughing.mp3 +0 -0
- package/themes/star-wars/sounds/yoda-much-fear.mp3 +0 -0
- package/themes/star-wars/sounds/yoda-twisted-by-dark-side.mp3 +0 -0
- package/themes/star-wars/sounds/you-were-the-chosen-one.mp3 +0 -0
- package/themes/star-wars/theme.json +36 -36
- package/themes/starcraft/sounds/additional-pylons.mp3 +0 -0
- package/themes/starcraft/sounds/arbiter-we-are-vigilant.mp3 +0 -0
- package/themes/starcraft/sounds/archon-obliterate.mp3 +0 -0
- package/themes/starcraft/sounds/archon-power-overwhelming.mp3 +0 -0
- package/themes/starcraft/sounds/archon-the-merging-is-complete.mp3 +0 -0
- package/themes/starcraft/sounds/base-under-attack.mp3 +0 -0
- package/themes/starcraft/sounds/battlecruiser-all-crews-reporting.mp3 +0 -0
- package/themes/starcraft/sounds/battlecruiser-engage.mp3 +0 -0
- package/themes/starcraft/sounds/battlecruiser-good-day-commander.mp3 +0 -0
- package/themes/starcraft/sounds/battlecruiser-make-it-happen.mp3 +0 -0
- package/themes/starcraft/sounds/battlecruiser-operational.mp3 +0 -0
- package/themes/starcraft/sounds/battlecruiser-receiving-transmission.mp3 +0 -0
- package/themes/starcraft/sounds/bug-guy-for-the-overmind.mp3 +0 -0
- package/themes/starcraft/sounds/bug-guy-gladly.mp3 +0 -0
- package/themes/starcraft/sounds/bug-guy-live-for-the-swarm.mp3 +0 -0
- package/themes/starcraft/sounds/bug-guy-prepare-to-die.mp3 +0 -0
- package/themes/starcraft/sounds/bug-guy-sacrifice-me.mp3 +0 -0
- package/themes/starcraft/sounds/carrier-has-arrived.mp3 +0 -0
- package/themes/starcraft/sounds/corsair-excellent.mp3 +0 -0
- package/themes/starcraft/sounds/corsair-it-is-a-good-day-to-die.mp3 +0 -0
- package/themes/starcraft/sounds/dragoon-commencing.mp3 +0 -0
- package/themes/starcraft/sounds/dragoon-i-have-returned.mp3 +0 -0
- package/themes/starcraft/sounds/dropship-can-i-take-your-order.mp3 +0 -0
- package/themes/starcraft/sounds/dropship-in-the-pipe-five-by-five.mp3 +0 -0
- package/themes/starcraft/sounds/duke-alright-then.mp3 +0 -0
- package/themes/starcraft/sounds/duran-how-can-i-be-of-service.mp3 +0 -0
- package/themes/starcraft/sounds/fenix-dragoon-nach-nagalas.mp3 +0 -0
- package/themes/starcraft/sounds/fenix-zealot-for-aiur.mp3 +0 -0
- package/themes/starcraft/sounds/fenix-zealot-i-hunger-for-battle.mp3 +0 -0
- package/themes/starcraft/sounds/firebat-wanna-turn-up-the-heat.mp3 +0 -0
- package/themes/starcraft/sounds/firebat-you-got-my-attention.mp3 +0 -0
- package/themes/starcraft/sounds/ghost-call-for-an-exterminator.mp3 +0 -0
- package/themes/starcraft/sounds/ghost-never-know-what-hit-em.mp3 +0 -0
- package/themes/starcraft/sounds/ghost-reporting.mp3 +0 -0
- package/themes/starcraft/sounds/insufficient-vespene-gas.mp3 +0 -0
- package/themes/starcraft/sounds/kerrigan-a-bold-move.mp3 +0 -0
- package/themes/starcraft/sounds/kerrigan-alright.mp3 +0 -0
- package/themes/starcraft/sounds/kerrigan-im-listening.mp3 +0 -0
- package/themes/starcraft/sounds/kerrigan-on-my-way.mp3 +0 -0
- package/themes/starcraft/sounds/kerrigan-what-now.mp3 +0 -0
- package/themes/starcraft/sounds/marine-ah-thats-the-stuff.mp3 +0 -0
- package/themes/starcraft/sounds/marine-go-go-go.mp3 +0 -0
- package/themes/starcraft/sounds/marine-jacked-up-and-good-to-go.mp3 +0 -0
- package/themes/starcraft/sounds/marine-lets-move.mp3 +0 -0
- package/themes/starcraft/sounds/marine-rock-and-roll.mp3 +0 -0
- package/themes/starcraft/sounds/marine-you-wanna-piece-of-me.mp3 +0 -0
- package/themes/starcraft/sounds/mutalisk.mp3 +0 -0
- package/themes/starcraft/sounds/not-enough-minerals.mp3 +0 -0
- package/themes/starcraft/sounds/nuclear-launch-detected.mp3 +0 -0
- package/themes/starcraft/sounds/protoss-electric.mp3 +0 -0
- package/themes/starcraft/sounds/protoss-fighting.mp3 +0 -0
- package/themes/starcraft/sounds/protoss-upgrade.mp3 +0 -0
- package/themes/starcraft/sounds/protoss-waiting.mp3 +0 -0
- package/themes/starcraft/sounds/ready-to-roll-out.mp3 +0 -0
- package/themes/starcraft/sounds/scv-affirmative.mp3 +0 -0
- package/themes/starcraft/sounds/scv-good-to-go-sir.mp3 +0 -0
- package/themes/starcraft/sounds/scv-i-read-you.mp3 +0 -0
- package/themes/starcraft/sounds/scv-orders-received.mp3 +0 -0
- package/themes/starcraft/sounds/scv-reportin-for-duty.mp3 +0 -0
- package/themes/starcraft/sounds/scv-roger-that.mp3 +0 -0
- package/themes/starcraft/sounds/starcraft-confirm.mp3 +0 -0
- package/themes/starcraft/sounds/templar-i-heed-thy-call.mp3 +0 -0
- package/themes/starcraft/sounds/templar-it-shall-be-done.mp3 +0 -0
- package/themes/starcraft/sounds/wraith-reporting-in.mp3 +0 -0
- package/themes/starcraft/sounds/wraith-standing-by.mp3 +0 -0
- package/themes/starcraft/sounds/zealot-i-long-for-combat.mp3 +0 -0
- package/themes/starcraft/sounds/zealot-my-life-for-aiur.mp3 +0 -0
- package/themes/wc3-peon/sounds/anything-you-want.mp3 +0 -0
- package/themes/wc3-peon/sounds/be-happy-to.mp3 +0 -0
- package/themes/wc3-peon/sounds/concentrate-and-ask-again.mp3 +0 -0
- package/themes/wc3-peon/sounds/dabu.mp3 +0 -0
- package/themes/wc3-peon/sounds/death.mp3 +0 -0
- package/themes/wc3-peon/sounds/finally.mp3 +0 -0
- package/themes/wc3-peon/sounds/for-the-horde.mp3 +0 -0
- package/themes/wc3-peon/sounds/get-em.mp3 +0 -0
- package/themes/wc3-peon/sounds/grunt-death.mp3 +0 -0
- package/themes/wc3-peon/sounds/headhunter-death.mp3 +0 -0
- package/themes/wc3-peon/sounds/hmmm.mp3 +0 -0
- package/themes/wc3-peon/sounds/how-can-i-help.mp3 +0 -0
- package/themes/wc3-peon/sounds/i-can-do-that.mp3 +0 -0
- package/themes/wc3-peon/sounds/i-can-wait-no-longer.mp3 +0 -0
- package/themes/wc3-peon/sounds/ill-try.mp3 +0 -0
- package/themes/wc3-peon/sounds/immediately.mp3 +0 -0
- package/themes/wc3-peon/sounds/it-is-certain.mp3 +0 -0
- package/themes/wc3-peon/sounds/me-busy-leave-me-alone.mp3 +0 -0
- package/themes/wc3-peon/sounds/me-not-that-kind-of-orc.mp3 +0 -0
- package/themes/wc3-peon/sounds/more-work.mp3 +0 -0
- package/themes/wc3-peon/sounds/no-time-for-play.mp3 +0 -0
- package/themes/wc3-peon/sounds/not-easy-being-green.mp3 +0 -0
- package/themes/wc3-peon/sounds/of-course.mp3 +0 -0
- package/themes/wc3-peon/sounds/ok.mp3 +0 -0
- package/themes/wc3-peon/sounds/okie-dokie.mp3 +0 -0
- package/themes/wc3-peon/sounds/outlook-not-so-good.mp3 +0 -0
- package/themes/wc3-peon/sounds/peon-death.mp3 +0 -0
- package/themes/wc3-peon/sounds/ready-to-work.mp3 +0 -0
- package/themes/wc3-peon/sounds/reply-hazy-try-again.mp3 +0 -0
- package/themes/wc3-peon/sounds/right-away.mp3 +0 -0
- package/themes/wc3-peon/sounds/someone-call-for-the-doctor.mp3 +0 -0
- package/themes/wc3-peon/sounds/something-need-doing.mp3 +0 -0
- package/themes/wc3-peon/sounds/taste-the-fury.mp3 +0 -0
- package/themes/wc3-peon/sounds/understood.mp3 +0 -0
- package/themes/wc3-peon/sounds/well-done.mp3 +0 -0
- package/themes/wc3-peon/sounds/what-you-want-me-to-do.mp3 +0 -0
- package/themes/wc3-peon/sounds/what-you-want.mp3 +0 -0
- package/themes/wc3-peon/sounds/what.mp3 +0 -0
- package/themes/wc3-peon/sounds/whatever-you-say.mp3 +0 -0
- package/themes/wc3-peon/sounds/who-you-want-me-kill.mp3 +0 -0
- package/themes/wc3-peon/sounds/why-not.mp3 +0 -0
- package/themes/wc3-peon/sounds/why-you-poking-me.mp3 +0 -0
- package/themes/wc3-peon/sounds/work-work.mp3 +0 -0
- package/themes/wc3-peon/sounds/yes.mp3 +0 -0
- package/themes/wc3-peon/sounds/you-seek-me-help.mp3 +0 -0
- package/themes/wc3-peon/sounds/zug-zug.mp3 +0 -0
- package/themes/wc3-peon/theme.json +55 -55
- package/themes/wh40k/sounds/abhor-the-daemon.mp3 +0 -0
- package/themes/wh40k/sounds/area-secured.mp3 +0 -0
- package/themes/wh40k/sounds/as-ordered.mp3 +0 -0
- package/themes/wh40k/sounds/as-you-command.mp3 +0 -0
- package/themes/wh40k/sounds/as-you-wish.mp3 +0 -0
- package/themes/wh40k/sounds/at-your-command.mp3 +0 -0
- package/themes/wh40k/sounds/awaiting-orders.mp3 +0 -0
- package/themes/wh40k/sounds/by-the-emperor-a-daemon.mp3 +0 -0
- package/themes/wh40k/sounds/chaos-death-1.mp3 +0 -0
- package/themes/wh40k/sounds/chaos-death-2.mp3 +0 -0
- package/themes/wh40k/sounds/chaos-sighted.mp3 +0 -0
- package/themes/wh40k/sounds/claim-it-in-the-name-of-the-emperor.mp3 +0 -0
- package/themes/wh40k/sounds/cleanse-purge-kill.mp3 +0 -0
- package/themes/wh40k/sounds/commencing-attack.mp3 +0 -0
- package/themes/wh40k/sounds/crush-them.mp3 +0 -0
- package/themes/wh40k/sounds/curse-the-monster.mp3 +0 -0
- package/themes/wh40k/sounds/damnation.mp3 +0 -0
- package/themes/wh40k/sounds/death-to-the-alien.mp3 +0 -0
- package/themes/wh40k/sounds/death-to-the-false-emperor.mp3 +0 -0
- package/themes/wh40k/sounds/defending-objective.mp3 +0 -0
- package/themes/wh40k/sounds/despair-for-your-end-is-near.mp3 +0 -0
- package/themes/wh40k/sounds/direct-us-to-the-enemy.mp3 +0 -0
- package/themes/wh40k/sounds/engaging-the-enemy.mp3 +0 -0
- package/themes/wh40k/sounds/ever-vigilant.mp3 +0 -0
- package/themes/wh40k/sounds/faith-holds-us.mp3 +0 -0
- package/themes/wh40k/sounds/faith-is-our-shield.mp3 +0 -0
- package/themes/wh40k/sounds/fall-back-and-regroup.mp3 +0 -0
- package/themes/wh40k/sounds/fall-back.mp3 +0 -0
- package/themes/wh40k/sounds/fear-denies-faith.mp3 +0 -0
- package/themes/wh40k/sounds/fear-not-brothers.mp3 +0 -0
- package/themes/wh40k/sounds/fear-our-wrath.mp3 +0 -0
- package/themes/wh40k/sounds/for-the-dark-gods.mp3 +0 -0
- package/themes/wh40k/sounds/for-the-emperor-2.mp3 +0 -0
- package/themes/wh40k/sounds/for-the-emperor.mp3 +0 -0
- package/themes/wh40k/sounds/heresy-grows-from-idleness.mp3 +0 -0
- package/themes/wh40k/sounds/it-is-done.mp3 +0 -0
- package/themes/wh40k/sounds/maim-kill-burn.mp3 +0 -0
- package/themes/wh40k/sounds/marine-death.mp3 +0 -0
- package/themes/wh40k/sounds/marine-squad-deployed.mp3 +0 -0
- package/themes/wh40k/sounds/mission-accomplished.mp3 +0 -0
- package/themes/wh40k/sounds/nuffink-can-stand-in-my-way.mp3 +0 -0
- package/themes/wh40k/sounds/orks-iz-da-biggest.mp3 +0 -0
- package/themes/wh40k/sounds/orks-meant-fa-fightin.mp3 +0 -0
- package/themes/wh40k/sounds/purge-the-witches.mp3 +0 -0
- package/themes/wh40k/sounds/quit-hidin-like-a-grot.mp3 +0 -0
- package/themes/wh40k/sounds/ready-fa-stompin.mp3 +0 -0
- package/themes/wh40k/sounds/send-me-to-da-fight.mp3 +0 -0
- package/themes/wh40k/sounds/waaagh-boyz.mp3 +0 -0
- package/themes/wh40k/sounds/waaagh-warboss.mp3 +0 -0
- package/themes/wh40k/sounds/we-is-da-orks.mp3 +0 -0
- package/themes/wh40k/sounds/you-boyz-is-no-good.mp3 +0 -0
- package/themes/zelda-oot/sounds/dialogue-done.mp3 +0 -0
- package/themes/zelda-oot/sounds/dialogue-next.mp3 +0 -0
- package/themes/zelda-oot/sounds/error.mp3 +0 -0
- package/themes/zelda-oot/sounds/ganondorf-laugh.mp3 +0 -0
- package/themes/zelda-oot/sounds/get-heart.mp3 +0 -0
- package/themes/zelda-oot/sounds/get-item.mp3 +0 -0
- package/themes/zelda-oot/sounds/get-rupee.mp3 +0 -0
- package/themes/zelda-oot/sounds/great-fairy-laugh.mp3 +0 -0
- package/themes/zelda-oot/sounds/hello.mp3 +0 -0
- package/themes/zelda-oot/sounds/hey.mp3 +0 -0
- package/themes/zelda-oot/sounds/item-fanfare.mp3 +0 -0
- package/themes/zelda-oot/sounds/link-attack.mp3 +0 -0
- package/themes/zelda-oot/sounds/link-hurt.mp3 +0 -0
- package/themes/zelda-oot/sounds/link-strong-attack.mp3 +0 -0
- package/themes/zelda-oot/sounds/listen.mp3 +0 -0
- package/themes/zelda-oot/sounds/look.mp3 +0 -0
- package/themes/zelda-oot/sounds/low-health.mp3 +0 -0
- package/themes/zelda-oot/sounds/menu-select.mp3 +0 -0
- package/themes/zelda-oot/sounds/open-chest.mp3 +0 -0
- package/themes/zelda-oot/sounds/open-small-chest.mp3 +0 -0
- package/themes/zelda-oot/sounds/pause-close.mp3 +0 -0
- package/themes/zelda-oot/sounds/pause-menu.mp3 +0 -0
- package/themes/zelda-oot/sounds/secret-discovered.mp3 +0 -0
- package/themes/zelda-oot/sounds/snore.mp3 +0 -0
- package/themes/zelda-oot/sounds/song-correct.mp3 +0 -0
- package/themes/zelda-oot/sounds/song-error.mp3 +0 -0
- package/themes/zelda-oot/sounds/spin-attack.mp3 +0 -0
- package/themes/zelda-oot/sounds/sword-draw.mp3 +0 -0
- package/themes/zelda-oot/sounds/watch-out.mp3 +0 -0
- package/themes/zelda-oot/sounds/z-target.mp3 +0 -0
- package/themes/zelda-oot/theme.json +47 -47
- package/themes/cnc/sounds/alarm.wav +0 -0
- package/themes/cnc/sounds/allies-acknowledged.wav +0 -0
- package/themes/cnc/sounds/allies-affirmative.wav +0 -0
- package/themes/cnc/sounds/allies-agreed.wav +0 -0
- package/themes/cnc/sounds/allies-at-once.wav +0 -0
- package/themes/cnc/sounds/allies-of-course.wav +0 -0
- package/themes/cnc/sounds/allies-ready-and-waiting.wav +0 -0
- package/themes/cnc/sounds/allies-reporting.wav +0 -0
- package/themes/cnc/sounds/allies-very-well.wav +0 -0
- package/themes/cnc/sounds/allies-waiting-orders.wav +0 -0
- package/themes/cnc/sounds/allies-yes-sir.wav +0 -0
- package/themes/cnc/sounds/building-destroyed.wav +0 -0
- package/themes/cnc/sounds/building-placed.wav +0 -0
- package/themes/cnc/sounds/cha-ching.wav +0 -0
- package/themes/cnc/sounds/credit-in.wav +0 -0
- package/themes/cnc/sounds/explosion.wav +0 -0
- package/themes/cnc/sounds/gdi-incoming-transmission.wav +0 -0
- package/themes/cnc/sounds/gdi-on-hold.wav +0 -0
- package/themes/cnc/sounds/gdi-recycle.wav +0 -0
- package/themes/cnc/sounds/gdi-success.wav +0 -0
- package/themes/cnc/sounds/gdi-unable-to-comply.wav +0 -0
- package/themes/cnc/sounds/gdi-warning.wav +0 -0
- package/themes/cnc/sounds/man-die.wav +0 -0
- package/themes/cnc/sounds/nod-incoming-transmission.wav +0 -0
- package/themes/cnc/sounds/nod-low-power.wav +0 -0
- package/themes/cnc/sounds/nod-on-hold.wav +0 -0
- package/themes/cnc/sounds/nod-unable-to-comply.wav +0 -0
- package/themes/cnc/sounds/power-down.wav +0 -0
- package/themes/cnc/sounds/power-up.wav +0 -0
- package/themes/cnc/sounds/radar-alert.wav +0 -0
- package/themes/cnc/sounds/radar-power-on.wav +0 -0
- package/themes/cnc/sounds/selling.wav +0 -0
- package/themes/cnc/sounds/soviet-acknowledged.wav +0 -0
- package/themes/cnc/sounds/soviet-affirmative.wav +0 -0
- package/themes/cnc/sounds/soviet-at-once.wav +0 -0
- package/themes/cnc/sounds/soviet-comrade.wav +0 -0
- package/themes/cnc/sounds/soviet-reporting.wav +0 -0
- package/themes/cnc/sounds/soviet-yes-sir.wav +0 -0
- package/themes/cnc/sounds/spy-commander.wav +0 -0
- package/themes/cnc/sounds/spy-for-king-and-country.wav +0 -0
- package/themes/cnc/sounds/spy-indeed.wav +0 -0
- package/themes/cnc/sounds/spy-on-my-way.wav +0 -0
- package/themes/cnc/sounds/tanya-chew-on-this.wav +0 -0
- package/themes/cnc/sounds/tanya-death.wav +0 -0
- package/themes/cnc/sounds/tanya-im-there.wav +0 -0
- package/themes/cnc/sounds/tanya-kiss-it-bye-bye.wav +0 -0
- package/themes/cnc/sounds/tanya-laugh.wav +0 -0
- package/themes/cnc/sounds/tanya-lets-rock.wav +0 -0
- package/themes/cnc/sounds/tanya-shake-it-baby.wav +0 -0
- package/themes/cnc/sounds/tanya-thats-all-you-got.wav +0 -0
- package/themes/cnc/sounds/tanya-yeah.wav +0 -0
- package/themes/cnc/sounds/tanya-yes-sir.wav +0 -0
- package/themes/cnc/sounds/tesla-shot.wav +0 -0
- package/themes/cnc/sounds/ts-auth.wav +0 -0
- package/themes/cnc/sounds/ts-notify.wav +0 -0
- package/themes/cnc/sounds/ts-reminder.wav +0 -0
- package/themes/cnc/sounds/ts-startup.wav +0 -0
- package/themes/cnc/sounds/ts-system.wav +0 -0
- package/themes/mario/sounds/1-up.wav +0 -0
- package/themes/mario/sounds/block-bump.wav +0 -0
- package/themes/mario/sounds/break-block.wav +0 -0
- package/themes/mario/sounds/burned.wav +0 -0
- package/themes/mario/sounds/coin.wav +0 -0
- package/themes/mario/sounds/death.wav +0 -0
- package/themes/mario/sounds/doh.wav +0 -0
- package/themes/mario/sounds/fireball.wav +0 -0
- package/themes/mario/sounds/flagpole.wav +0 -0
- package/themes/mario/sounds/game-over.wav +0 -0
- package/themes/mario/sounds/haha.wav +0 -0
- package/themes/mario/sounds/happy-message.wav +0 -0
- package/themes/mario/sounds/hello.wav +0 -0
- package/themes/mario/sounds/here-we-go.wav +0 -0
- package/themes/mario/sounds/hurt.wav +0 -0
- package/themes/mario/sounds/its-a-me-mario.wav +0 -0
- package/themes/mario/sounds/lets-a-go.wav +0 -0
- package/themes/mario/sounds/level-clear.wav +0 -0
- package/themes/mario/sounds/mamma-mia.wav +0 -0
- package/themes/mario/sounds/message-block.wav +0 -0
- package/themes/mario/sounds/mushroom-appears.wav +0 -0
- package/themes/mario/sounds/okey-dokey.wav +0 -0
- package/themes/mario/sounds/oof.wav +0 -0
- package/themes/mario/sounds/pause.wav +0 -0
- package/themes/mario/sounds/pipe-warp.wav +0 -0
- package/themes/mario/sounds/power-up.wav +0 -0
- package/themes/mario/sounds/question-block.wav +0 -0
- package/themes/mario/sounds/raccoon-transform.wav +0 -0
- package/themes/mario/sounds/shrink.wav +0 -0
- package/themes/mario/sounds/smb3-power-up.wav +0 -0
- package/themes/mario/sounds/smw-1-up.wav +0 -0
- package/themes/mario/sounds/smw-pipe.wav +0 -0
- package/themes/mario/sounds/smw-power-up.wav +0 -0
- package/themes/mario/sounds/snore.wav +0 -0
- package/themes/mario/sounds/stage-clear.wav +0 -0
- package/themes/mario/sounds/star-appears.wav +0 -0
- package/themes/mario/sounds/stomp.wav +0 -0
- package/themes/mario/sounds/tired.wav +0 -0
- package/themes/mario/sounds/vine-grow.wav +0 -0
- package/themes/mario/sounds/waha.wav +0 -0
- package/themes/mario/sounds/warp-whistle.wav +0 -0
- package/themes/mario/sounds/warp.wav +0 -0
- package/themes/mario/sounds/whoa.wav +0 -0
- package/themes/mario/sounds/world-clear.wav +0 -0
- package/themes/mario/sounds/yahoo.wav +0 -0
- package/themes/mario/sounds/yawn.wav +0 -0
- package/themes/mario/sounds/yippee.wav +0 -0
- package/themes/pokemon-gen1/sounds/ball-poof.wav +0 -0
- package/themes/pokemon-gen1/sounds/ball-toss.wav +0 -0
- package/themes/pokemon-gen1/sounds/caught-mon.wav +0 -0
- package/themes/pokemon-gen1/sounds/charizard-cry.wav +0 -0
- package/themes/pokemon-gen1/sounds/collision.wav +0 -0
- package/themes/pokemon-gen1/sounds/confused.wav +0 -0
- package/themes/pokemon-gen1/sounds/denied.wav +0 -0
- package/themes/pokemon-gen1/sounds/dex-page-added.wav +0 -0
- package/themes/pokemon-gen1/sounds/enter-pc.wav +0 -0
- package/themes/pokemon-gen1/sounds/faint-fall.wav +0 -0
- package/themes/pokemon-gen1/sounds/faint-thud.wav +0 -0
- package/themes/pokemon-gen1/sounds/get-item-fanfare.wav +0 -0
- package/themes/pokemon-gen1/sounds/get-item.wav +0 -0
- package/themes/pokemon-gen1/sounds/get-key-item.wav +0 -0
- package/themes/pokemon-gen1/sounds/go-outside.wav +0 -0
- package/themes/pokemon-gen1/sounds/heal-ailment.wav +0 -0
- package/themes/pokemon-gen1/sounds/heal-up.wav +0 -0
- package/themes/pokemon-gen1/sounds/intro-lunge.wav +0 -0
- package/themes/pokemon-gen1/sounds/intro-whoosh.wav +0 -0
- package/themes/pokemon-gen1/sounds/jigglypuff-cry.wav +0 -0
- package/themes/pokemon-gen1/sounds/ledge.wav +0 -0
- package/themes/pokemon-gen1/sounds/level-up.wav +0 -0
- package/themes/pokemon-gen1/sounds/pikachu-cry.wav +0 -0
- package/themes/pokemon-gen1/sounds/poisoned.wav +0 -0
- package/themes/pokemon-gen1/sounds/pokeball-open.wav +0 -0
- package/themes/pokemon-gen1/sounds/pokeball-throw.wav +0 -0
- package/themes/pokemon-gen1/sounds/pokedex-rating.wav +0 -0
- package/themes/pokemon-gen1/sounds/pokemon-switch.wav +0 -0
- package/themes/pokemon-gen1/sounds/press-ab.wav +0 -0
- package/themes/pokemon-gen1/sounds/psyduck-cry.wav +0 -0
- package/themes/pokemon-gen1/sounds/purchase.wav +0 -0
- package/themes/pokemon-gen1/sounds/rest.wav +0 -0
- package/themes/pokemon-gen1/sounds/save-game.wav +0 -0
- package/themes/pokemon-gen1/sounds/screech.wav +0 -0
- package/themes/pokemon-gen1/sounds/self-destruct.wav +0 -0
- package/themes/pokemon-gen1/sounds/shrink.wav +0 -0
- package/themes/pokemon-gen1/sounds/silph-scope.wav +0 -0
- package/themes/pokemon-gen1/sounds/slots-new-spin.wav +0 -0
- package/themes/pokemon-gen1/sounds/slots-stop.wav +0 -0
- package/themes/pokemon-gen1/sounds/splash.wav +0 -0
- package/themes/pokemon-gen1/sounds/start-menu.wav +0 -0
- package/themes/pokemon-gen1/sounds/substitute.wav +0 -0
- package/themes/pokemon-gen1/sounds/swap.wav +0 -0
- package/themes/pokemon-gen1/sounds/teleport.wav +0 -0
- package/themes/pokemon-gen1/sounds/tink.wav +0 -0
- package/themes/pokemon-gen1/sounds/trade-machine.wav +0 -0
- package/themes/pokemon-gen1/sounds/turn-off-pc.wav +0 -0
- package/themes/pokemon-gen1/sounds/withdraw-deposit.wav +0 -0
- package/themes/pokemon-gen1/theme.json +0 -212
- package/themes/portal/sounds/announcer-post.wav +0 -0
- package/themes/portal/sounds/button-positive.wav +0 -0
- package/themes/portal/sounds/button-press.wav +0 -0
- package/themes/portal/sounds/button-release.wav +0 -0
- package/themes/portal/sounds/core-attach.wav +0 -0
- package/themes/portal/sounds/core-complete.wav +0 -0
- package/themes/portal/sounds/emancipation-grill.wav +0 -0
- package/themes/portal/sounds/fizzler-shutdown.wav +0 -0
- package/themes/portal/sounds/fizzler-start.wav +0 -0
- package/themes/portal/sounds/invalid-surface.wav +0 -0
- package/themes/portal/sounds/klaxon-alarm.wav +0 -0
- package/themes/portal/sounds/portal-close-alt.wav +0 -0
- package/themes/portal/sounds/portal-close.wav +0 -0
- package/themes/portal/sounds/portal-enter.wav +0 -0
- package/themes/portal/sounds/portal-exit.wav +0 -0
- package/themes/portal/sounds/portal-fizzle.wav +0 -0
- package/themes/portal/sounds/portal-open.wav +0 -0
- package/themes/portal/sounds/portal-whoosh-close.wav +0 -0
- package/themes/portal/sounds/portalgun-powerup.wav +0 -0
- package/themes/portal/sounds/shoot-blue-portal.wav +0 -0
- package/themes/portal/sounds/shoot-orange-portal.wav +0 -0
- package/themes/portal/sounds/synth-negative.wav +0 -0
- package/themes/portal/sounds/synth-positive.wav +0 -0
- package/themes/portal/sounds/test-chamber-complete.wav +0 -0
- package/themes/portal/sounds/test-chamber-start.wav +0 -0
- package/themes/portal/sounds/turret-activated.wav +0 -0
- package/themes/portal/sounds/turret-alert.wav +0 -0
- package/themes/portal/sounds/turret-are-you-still-there.wav +0 -0
- package/themes/portal/sounds/turret-deploy.wav +0 -0
- package/themes/portal/sounds/turret-done.wav +0 -0
- package/themes/portal/sounds/turret-goodbye.wav +0 -0
- package/themes/portal/sounds/turret-hello.wav +0 -0
- package/themes/portal/sounds/turret-hellooo.wav +0 -0
- package/themes/portal/sounds/turret-i-see-you.wav +0 -0
- package/themes/portal/sounds/turret-no-hard-feelings.wav +0 -0
- package/themes/portal/sounds/turret-ow.wav +0 -0
- package/themes/portal/sounds/turret-ping.wav +0 -0
- package/themes/portal/sounds/turret-retract.wav +0 -0
- package/themes/portal/sounds/turret-searching.wav +0 -0
- package/themes/portal/sounds/turret-target-lost.wav +0 -0
- package/themes/portal/sounds/turret-whos-there.wav +0 -0
- package/themes/portal/sounds/ui-click.wav +0 -0
- package/themes/star-wars/sounds/bad-feeling.wav +0 -0
- package/themes/star-wars/sounds/blaster-firing.wav +0 -0
- package/themes/star-wars/sounds/chewie-chatting.wav +0 -0
- package/themes/star-wars/sounds/chewie-roar.wav +0 -0
- package/themes/star-wars/sounds/dark-side.wav +0 -0
- package/themes/star-wars/sounds/darth-maul-reveal-ourselves.wav +0 -0
- package/themes/star-wars/sounds/decided-to-rescue-you.wav +0 -0
- package/themes/star-wars/sounds/destiny-fulfilled.wav +0 -0
- package/themes/star-wars/sounds/destroy-you.wav +0 -0
- package/themes/star-wars/sounds/force-is-strong-with-this-one.wav +0 -0
- package/themes/star-wars/sounds/force-is-strong.wav +0 -0
- package/themes/star-wars/sounds/force-will-be-with-you.wav +0 -0
- package/themes/star-wars/sounds/great-disturbance.wav +0 -0
- package/themes/star-wars/sounds/i-am-your-father.wav +0 -0
- package/themes/star-wars/sounds/its-a-trap.wav +0 -0
- package/themes/star-wars/sounds/jabba-laughing.wav +0 -0
- package/themes/star-wars/sounds/lightsaber-ignite.wav +0 -0
- package/themes/star-wars/sounds/lightsaber-off.wav +0 -0
- package/themes/star-wars/sounds/lord-vader-rise.wav +0 -0
- package/themes/star-wars/sounds/luke-dont-do-that.wav +0 -0
- package/themes/star-wars/sounds/r2d2-beep.wav +0 -0
- package/themes/star-wars/sounds/r2d2-hey-you.wav +0 -0
- package/themes/star-wars/sounds/r2d2-woo-hoo.wav +0 -0
- package/themes/star-wars/sounds/r2d2-yeah.wav +0 -0
- package/themes/star-wars/sounds/vader-breathing.wav +0 -0
- package/themes/star-wars/sounds/vader-what-is-thy-bidding.wav +0 -0
- package/themes/star-wars/sounds/vader-yes-my-master.wav +0 -0
- package/themes/star-wars/sounds/wilhelm-scream.wav +0 -0
- package/themes/star-wars/sounds/yoda-900-years-old.wav +0 -0
- package/themes/star-wars/sounds/yoda-always-two.wav +0 -0
- package/themes/star-wars/sounds/yoda-dangerous-disturbing.wav +0 -0
- package/themes/star-wars/sounds/yoda-do-or-do-not.wav +0 -0
- package/themes/star-wars/sounds/yoda-laughing.wav +0 -0
- package/themes/star-wars/sounds/yoda-much-fear.wav +0 -0
- package/themes/star-wars/sounds/yoda-twisted-by-dark-side.wav +0 -0
- package/themes/star-wars/sounds/you-were-the-chosen-one.wav +0 -0
- package/themes/wc3-peon/sounds/anything-you-want.wav +0 -0
- package/themes/wc3-peon/sounds/be-happy-to.wav +0 -0
- package/themes/wc3-peon/sounds/concentrate-and-ask-again.wav +0 -0
- package/themes/wc3-peon/sounds/dabu.wav +0 -0
- package/themes/wc3-peon/sounds/death.wav +0 -0
- package/themes/wc3-peon/sounds/finally.wav +0 -0
- package/themes/wc3-peon/sounds/for-the-horde.wav +0 -0
- package/themes/wc3-peon/sounds/get-em.wav +0 -0
- package/themes/wc3-peon/sounds/grunt-death.wav +0 -0
- package/themes/wc3-peon/sounds/headhunter-death.wav +0 -0
- package/themes/wc3-peon/sounds/hmmm.wav +0 -0
- package/themes/wc3-peon/sounds/how-can-i-help.wav +0 -0
- package/themes/wc3-peon/sounds/i-can-do-that.wav +0 -0
- package/themes/wc3-peon/sounds/i-can-wait-no-longer.wav +0 -0
- package/themes/wc3-peon/sounds/ill-try.wav +0 -0
- package/themes/wc3-peon/sounds/immediately.wav +0 -0
- package/themes/wc3-peon/sounds/it-is-certain.wav +0 -0
- package/themes/wc3-peon/sounds/me-busy-leave-me-alone.wav +0 -0
- package/themes/wc3-peon/sounds/me-not-that-kind-of-orc.wav +0 -0
- package/themes/wc3-peon/sounds/no-time-for-play.wav +0 -0
- package/themes/wc3-peon/sounds/not-easy-being-green.wav +0 -0
- package/themes/wc3-peon/sounds/of-course.wav +0 -0
- package/themes/wc3-peon/sounds/ok.wav +0 -0
- package/themes/wc3-peon/sounds/okie-dokie.wav +0 -0
- package/themes/wc3-peon/sounds/outlook-not-so-good.wav +0 -0
- package/themes/wc3-peon/sounds/peon-death.wav +0 -0
- package/themes/wc3-peon/sounds/ready-to-work.wav +0 -0
- package/themes/wc3-peon/sounds/reply-hazy-try-again.wav +0 -0
- package/themes/wc3-peon/sounds/right-away.wav +0 -0
- package/themes/wc3-peon/sounds/someone-call-for-the-doctor.wav +0 -0
- package/themes/wc3-peon/sounds/something-need-doing.wav +0 -0
- package/themes/wc3-peon/sounds/taste-the-fury.wav +0 -0
- package/themes/wc3-peon/sounds/understood.wav +0 -0
- package/themes/wc3-peon/sounds/well-done.wav +0 -0
- package/themes/wc3-peon/sounds/what-you-want-me-to-do.wav +0 -0
- package/themes/wc3-peon/sounds/what-you-want.wav +0 -0
- package/themes/wc3-peon/sounds/what.wav +0 -0
- package/themes/wc3-peon/sounds/whatever-you-say.wav +0 -0
- package/themes/wc3-peon/sounds/who-you-want-me-kill.wav +0 -0
- package/themes/wc3-peon/sounds/why-not.wav +0 -0
- package/themes/wc3-peon/sounds/why-you-poking-me.wav +0 -0
- package/themes/wc3-peon/sounds/work-work.wav +0 -0
- package/themes/wc3-peon/sounds/yes.wav +0 -0
- package/themes/wc3-peon/sounds/you-seek-me-help.wav +0 -0
- package/themes/wc3-peon/sounds/zug-zug.wav +0 -0
- package/themes/zelda-oot/sounds/dialogue-done.wav +0 -0
- package/themes/zelda-oot/sounds/dialogue-next.wav +0 -0
- package/themes/zelda-oot/sounds/error.wav +0 -0
- package/themes/zelda-oot/sounds/ganondorf-laugh.wav +0 -0
- package/themes/zelda-oot/sounds/get-heart.wav +0 -0
- package/themes/zelda-oot/sounds/get-item.wav +0 -0
- package/themes/zelda-oot/sounds/get-rupee.wav +0 -0
- package/themes/zelda-oot/sounds/great-fairy-laugh.wav +0 -0
- package/themes/zelda-oot/sounds/hello.wav +0 -0
- package/themes/zelda-oot/sounds/hey.wav +0 -0
- package/themes/zelda-oot/sounds/item-fanfare.wav +0 -0
- package/themes/zelda-oot/sounds/link-attack.wav +0 -0
- package/themes/zelda-oot/sounds/link-hurt.wav +0 -0
- package/themes/zelda-oot/sounds/link-strong-attack.wav +0 -0
- package/themes/zelda-oot/sounds/listen.wav +0 -0
- package/themes/zelda-oot/sounds/look.wav +0 -0
- package/themes/zelda-oot/sounds/low-health.wav +0 -0
- package/themes/zelda-oot/sounds/menu-select.wav +0 -0
- package/themes/zelda-oot/sounds/open-chest.wav +0 -0
- package/themes/zelda-oot/sounds/open-small-chest.wav +0 -0
- package/themes/zelda-oot/sounds/pause-close.wav +0 -0
- package/themes/zelda-oot/sounds/pause-menu.wav +0 -0
- package/themes/zelda-oot/sounds/secret-discovered.wav +0 -0
- package/themes/zelda-oot/sounds/snore.wav +0 -0
- package/themes/zelda-oot/sounds/song-correct.wav +0 -0
- package/themes/zelda-oot/sounds/song-error.wav +0 -0
- package/themes/zelda-oot/sounds/spin-attack.wav +0 -0
- package/themes/zelda-oot/sounds/sword-draw.wav +0 -0
- package/themes/zelda-oot/sounds/watch-out.wav +0 -0
- 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
|
+
[](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
|
|
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
|
|
50
|
-
npx claude-code-sounds --
|
|
51
|
-
npx claude-code-sounds --
|
|
52
|
-
npx claude-code-sounds --
|
|
53
|
-
npx claude-code-sounds --
|
|
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
|
-
| **
|
|
61
|
-
| **
|
|
62
|
-
| **
|
|
63
|
-
| **
|
|
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
|
|
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
|
-
| **
|
|
68
|
-
| **
|
|
69
|
-
| **
|
|
70
|
-
| **
|
|
71
|
-
| **
|
|
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.
|
|
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
|
-
|
|
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
|
+

|
|
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
|
-
|
|
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
|
-
// ───
|
|
10
|
+
// ─── Library ─────────────────────────────────────────────────────────────────
|
|
12
11
|
|
|
13
|
-
const
|
|
14
|
-
const
|
|
15
|
-
const
|
|
16
|
-
const
|
|
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
|
-
//
|
|
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
|
-
|
|
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
|
-
|
|
112
|
-
previewProcess
|
|
113
|
-
|
|
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
|
|
339
|
+
// ─── Install / Uninstall ─────────────────────────────────────────────────────
|
|
426
340
|
|
|
427
|
-
|
|
428
|
-
|
|
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
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
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
|
|
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();
|