{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "voiceover-pack-male-power-up",
  "type": "registry:block",
  "title": "Voiceover Pack Male Power Up",
  "author": "Kenney <https://kenney.nl>",
  "description": "A male voiceover announcing \"Power Up!\", perfect for indicating the activation of a special ability, item, or temporary boost in a game.",
  "files": [
    {
      "path": "registry/soundcn/sounds/voiceover-pack-male-power-up/voiceover-pack-male-power-up.ts",
      "content": "import type { SoundAsset } from \"@/lib/sound-types\";\n\nexport const voiceoverPackMalePowerUpSound: SoundAsset = {\n  name: \"voiceover-pack-male-power-up\",\n  dataUri: \"data:audio/mpeg;base64,SUQzBAAAAAAAIlRTU0UAAAAOAAADTGF2ZjYyLjMuMTAwAAAAAAAAAAAAAAD/+1DAAAAAAAAAAAAAAAAAAAAAAABJbmZvAAAADwAAACAAABrvAA8PDxcXFx4eHiYmJi4uLjY2Nj4+PkVFRU1NTU1VVVVdXV1kZGRsbGx0dHR8fHyDg4OLi4uLk5OTm5uboqKiqqqqsrKyurq6wcHBycnJydHR0dnZ2eDg4Ojo6PDw8Pj4+P///wAAAABMYXZjNjIuMTEAAAAAAAAAAAAAAAAkBGcAAAAAAAAa79C8UWgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//tQxAAABrgBFaCETcF/syKGnjAAAJQFbIEkSSDi7yjlBhAnKAg7EBykEAQ/QH8TgQEAx5cH+p3B966jkP/Ln/+sP///+D4Pn2h9AAVY/14WwNQLgdETUeff1rVKO59td0QlVSIs/JSIjPMzOI7va7v/9dzju7uf/oiIiF/l8R/k93REnM3RE78j34RF+iT7/M5yO7vXd3///3NpPXmZChDm+SrxgITgIEFibNotVrttitVhtVhkICJNMXm4McmG4j96jFHH292S+dVjoWAXev/7UsQSgA8VmVm49oARdpStNzBgAN0jMuBfhMjCmyaDJ5mSZuzoOuZqTZNBZcQ2S90q25unWf969SCZcLho9ak6dfUtbqbdBBk03QW9P/r/Umm6adBBm0y/////+brL6dTFw0QTdAlC4gLJSU3CUBAIkwEAwGCOCaUyGdbJWnIpK6tN9eK2succgVRNx6IJWlvFYYg2ZE+GgnUvWxvnW/96zN7jf/cf+27KPmXlHxEHk2jQgKbLayCwUAL2UO/6VFUHViVn+qotWIplAEoAqB+T//tSxAUAC4ClZbzFgAFiEO1wxJkQQ9Wp3hSrVHFCotVWKhu0eDcnRFMqWmkvZCJPh74rtJBBTa9r99bX3vvaVsOsd87/mJqkGHC6xcWvVWhRwe1HicRgKt4vNdKrOYotm1xYwhZrm19GgjCCKNmBBAHKpoqOR6PQKFxvDzjgoLg1XiyoSfb1vYlbVX38zmCmBUu+vp6cQ9f14hQurhlQDLqDx5LfLvCAU4SJoDJg7KPSZQwUdRW3af55R96hPvmqZrZyRFRCQnEpj0DZBuNYejT/+1LECIAMgYVz54xRQXqiLnmEieTOxdDJIWoW9WHM0Q1epT+VKubAyIMihjClUECMk3iBnVz/9shbuxGcdVMZO/t6FVnsMBvf/qtpj/0dkkZP1RUV921fVm6r9rfytc5WylLLc+hwx4SFAiU1IJ4XbmrGODeJURCsePDcQdeNrYhMzDb2vdNC7KNPG2Fd9Sy7Vin3nfijfseGc3r1LtRzAZnldPf7u1nde6fRd1Smv3JNb9DKwUeBG3mxK4pDvOa4lOo1calF7rCACABmbUhkHv/7UsQFAAuUjW2npQ7BdZGudYMKGmbqMZRORNCWpIMgZ0LlwVJ6og/hwtDOlJOVSyaagZSmDIJnhwiOuUbZMcN6Pf2rOvBI+QCRRdxy30EWVjUOD/QkO/aJSVbTQgHlYK6g763FtCtfnYJUZAMjTcQyLJUKAVNdkcPqMdZkkHb22WER13R6GFd15Yw0Nvj99o5PSQCWy7/5EM/5BfM6sUrnEx+4QoEBEadvWnsLwwKt1Xh3sbtLg8HXhu/v70OK5EOS5w8Ww4EQAmMQDtHG0JDk//tSxAYAC+UBZ+wk8MFwsK99g5Yj5uBfcmZaBei4ZLOqqnS7oEq83zTRafSwn21s8YWsQoQUBA/1yTfb1b8CLG21cgjpsrtnNR5jnHlH6Pon9FU1DzrId+bshctR+Jpdf+n/LgQEJA3DUiiRspAS2yOKZPlEQYUvIOHlK+YCtIo39qy4am0fn4pIOIhROBI6rUqyF1LEqvxCeUO/CQH31opkdO37nKQ8zpo/P/qXKV2N/9DaKNurE/////tf1/+zus41nBWSgDAAYxAcsSJdFkP/+1LEBgAL+RFj7LyrgXaw7rT1FmOnSli5/a5JYEN+iEHsFLJio8TfdF+Gv+ladtm+1ffBZDr6hSurJlw8owPlb6uEhAhe6RBjoO1JR33iB7u/fun9Syt//uj9zHYTh7//h57v3rInnG8+2EpWApZG5YgGDtMEOqGSvJsgSPTpMRWB9rR95Z9rXbwrnCVHLGYuc5y+rZcm/xUDUhcq+ebIgiHyHqc/LVHRFsb+qbtmdJpsv/r9H9u///+/pmov/8rjSGZo4CFKhWQAEVUQFLrLG//7UsQFAEqte3vniLMRWaKvNYeUOkGlFFeP84D3G5pvGNbB/tp+XomcnJbrspIvpqZBUfbt/xwrEN2yMcxrX+pzAUiIZv7vZkV2tv/+7K/vvJWit/t/7d5L//+jjbhxIh5sATIwZLMkA8FhiElWhe1PUtIDUSTDLFqv0T/jQ7m31YzARKNw4X+gkHRB/1qyFV2/uKkMUit/UV3Wqnqzf/kQe/VMhB41Dr798hpmhEbbo8BgoC6IktKwA4yAnZEnTIBJOPHblYXw+2n1IizTYB/k//tSxA0AChB3b6w8qpFLlDA88bYOP9M6gpE3vESehMTYaJBGo/xIy/0cSKepgoVa9dIu6lWKrSJmBA034oGn8GRPq//TMfw8GAbQmGhjAFVVTmsRbqHEepKC/HgSYSBKHO45squ4Osdfe6dip8gVpRRTDaFclyeaJvnTZL+US+YsnqfQep/ZBBMuH1fl/Z/kGyiyJa2GfRxh0lZ/vfGVonMAA1MQn/IpbKycHMljoMtdKElVpkChCBqxpD7FE7Vzc2ZGaqcVAtIO5xhi+XD+aoX/+1LEGQAKQHFn7CWpAT0hbvT0iZL/NRCKax7UXnQ0z+njBRf6niKlJgMMb8o3+gIqTtbzK+4ypbUFNrZK2KU7EDDJ2KM82AuyWhjAVeQWpE2LaotbCKmXQpVIwEjvmLVvhmgi2RiNK/75F7f/2t2oVmZv/rXneJngAb0+zivqSbQ8/frVxIALTIDliTcco2iWarxvPKWFERX00DE2EOYIq9S7tPy7U9G0sPKT584Wb1YYMaMDrzU2piRwaAvOTwd4hcR+oqHwQW5QsUZ4eFCRfP/7UsQmAAo8d2esIKuRRhBsPPMVaOIoqObP3UAgACSqAMtqMkZHlRhmHoQRlAuCtPkScLgfTig1WBAEOaPbTUkUK3tJnkMbNIIgRf1uSYo+74v6mSfYpH8s4cQHg8EAZY/eSU5oqM8gWS5HVYrMohVotuWQuMw8BXmXj6J2hxO3kY6EIYUsrHFGlpkow0H1o2fF6+5OZLXnyAz/y1V5FdVu+T0Mn+v0byujIZi//9Zn001/8K11Uiz3uIiLIlXtkAAAA0InE/YE0wPkjbGpAwRM//tSxDIACkEpbaeYTxFOEGv89gmYTuBHrkGGJqN0rpxpP4kMYk4YpApZtBTe9xVdSyKM/MoU7p9yJhkSx82pYlt4MsYnhINf4HLAk5QVBPwASf/oT/667ISDbutnsUpMwMwVDO1NKmOxBKYpV0i5uMif1gi58MxuJi2sZLatQMNG/Vlqjfx3XgbnEq2t4SRjf+UqCk5QgcZ/lliz5Xxx8WPLrdyyXf0aLMAEAIomb3RGYoyRD/YbIUSUY+kk4uIJERiAXmN+d5DtiTBjiINZ7YL/+1LEPQAKKL9zp4xREUwT7XzxigwXI/ORzICG9FB+DRxLf0QFd8cQYpJ8x911dGIgrqPDBZ4z5OKh7o2SskbqwQACAAVt44yHRgiul4kXIrzwauV5UxS8l1XR4uvkgZrdZVWsf6lcbhcXGIbvqUoj0Vn73B30X3Ov3+xzpRH4yXep6K2OCOC/DiXiqV9bfy7qMKVWYAZiATm9lhN6jQ8f+YJ1Gsa1j4RlS0EkQ+33iqN+s4lcp/GL/qJKJgYPlv/OIvWPaNFhGJZnCTrOs5fIHv/7UsRIgAps0WfnnFDhOo2tvPYVZP8Jy03W3nSz7CntnuLgDI4ikgAyABXL9c27z1HmcG2tCjUVMZMFkuOiEHhNjTqEMZTkM8kgWpl3zwiMJF+ZtUD6dUvORnKJnVlMc/98/OAYPr+EWFBGQzAn7r4olm/8JpD3i8kIGIADTtZs5MXaC9kvhkFAFhYXjPC8+B4D6vomSxzlJUgQIHW9IXUtO97IhG6b3S7CDc/92W7rdPVrk7HkZd/9bVYcgMNan4ZfzC//YCFut1+TAREAGp+t//tSxFWACkSJb+ewqWFHIC38w4oc1cuiDIAp8hgwAGThygOosGyUMD6xiSTnpiUjjazsXU4UWFI356uhH825rEK5017Hc5Tf69ucrqioNfT/gDPPE3s9N63hAeT1fmdP10IAIEAHWklhLrCI4QKmBuoxtKTaLmhD6Uhfhr2MKFHfK4yAUe6e7+8kpE3H++d4E0b/nHWB1cYFHtkxCHnohXfO4zI9zywEOh3+sHrmdf7Ya36lsQIAAABG0Uk5VhmzMPajJArIM4lBPam6SxxE7PD/+1LEYYAKXQFv5iRF4UqRLXzzDhw0hPkejCTrUBoixaCKPSPLxypmL/u9dBR7VC4ELGKMhcqKiemoeTHMX9Imj1nvrheJg0cVc39anStgo9fAYAANrYaUe03dbNnAZqClXRImeOQFngAlUwcKqTyLZJE8Ttbne0kf2EOojQoSFKRFCjA+Nb/mNI1v+5CkbSyHqr/bEz0T1/9RiodGIc7HQrf9uRnO2v//27/bI5yDzZ3BABIAABzCKRuqodmE5ZDDXOtqPNTo1kM3jyZT6VHjEv/7UsRsgAsca2HsPGWBf7AsdYeUuZCHxIk2DT+2+uj6GZcQ6leAKTttnOqXb+hAQcODDDvSPE6iS7haWJk1G7PkwIKiIaMS/qPw0Ka0D3eVd0sLrk1YQgSCACaSLbW9WUPi0zJVFAZeeIuJGGZNyjDPgi8CTmYNI0sFaCIIQQ/K9/syzERR400m8vn/+hrmVG/9EMhUPMU7W0pQiocjq//b1I6Okzwpfz0Lol1pWo4rLfkjJws5CrFgIgAQBBOJu6kf+qohIUhSWMilS3k1ItGk//tSxG4ADAyDY+wkTwGEIWz9gwnomKcLbLkPZHHFqygx01eFSSf83lauG50mJD2GJmm9O//84wp9Sf6yGRDKzXYzfZTB3VXM//4KavsUKDb/403hAeUnFa/xMloMvZCIJiICZMKNuWwAYaYAfeSxAMjMsj5IiK1GCtkkFcoJz9XmvtI2LJBINTlfzcJHEStB08ft9Lyqn/xImQiKrrX89dUPJ/0cjyhxnCjscWoeSv/58ni5oIiZNAJHWfKHEiGFqsJgQAAiAAVFu6IuB6yINZz/+1LEawAMbQdj7CxRAYenrjz1ibII4K0JXrIUtwlwwRvuu2ySiUd2Kk/UvEq76J//+mgORIwKOkoQvL/ob6NcGv0liv6BGCccW8QCUafMKAh0k5n0XYOHR794A/W4SPeVcoAgACUAAUC3cqlZO2FJMLSK4NYeco/PzoVQtxjWQXrvmFE7UKq2M/1cMxlB/F18n7CbCpL/BbDlnzBnxYb/p/9bpvtQH+eqaP/+xTODAoCBNh9n/3sOJOcQ/wmcAoPVlGIjElQ0DLJLlEP2GIUYwf/7UsRmAAuAh2PsJE9BfZ7r/YeJsMIs5ExUyI5iEBbvjg60WxzIlIHtmw7SD6/RsQZ6URf3UEX/5Su+6EeozP7HmoU3/1czlKRWVwRj/v//+zK8Eu/9DfX+RgHMG6zBqJEImZEFuNyrIk1BemQCzCE1iCdhEwKByR8mVR5It9+5azPDpuxuh8PY6QKdzFajG+iPb/5WoIiYjExNT1FzCC3voCB0oBAySb/77zo4DfxJyxsNnouhhFEUAEMyDHJJW4ScskmwHeUDnAEjDhWcI3ty//tSxGYACyV7eeewStlelO588ZZSUqbuXzJuodTeBdVRS+jnGjiDWr/zIJhQqS//c0Oh04qESOdYt734lqMuNTSZFIEY7+eRT/W0nuPThZXsxiYgSogXa28fwjpsEPnNwYsEwBClEbg9KhbyFo2KMIXsUMvO7lgBjO1DVCRY7OZ+v9y6BH/0zQyCmAnwEm/dUrsvERAofFP7AC8c/8q9qwG4D8IqhEQBQjU0eldWjmFkGckRSzwJQVDKuz7ThzEIhjlWqEvm0YEr6X1cn7+QIpv/+1LEa4AKvKl154ywkVIVrfzzCczvcqM8RBldZ2Z/Wj7yFHihmb/nDXIyEOgmj/jBs5WOjf9Ub+SY5yu6lYUmP7EJvZ/ULkwQATMUzJAZMQASabm1kbyiyeLxEHhEQNRUJIdhLgsXkNoiaKpWnk7zYhf2OClSQSKFCwdDKt/f0cudv9MccYOFkGM5UUYff6vNgoOQw2CH+Ag7T87qScIKJfKi4HGAGUSps9C23Ms1ZFzQggmxPjLOgTY5a8WdjagdUtq5UHaexQ5VDlt8+rvVWP/7UsR0AAxhFXXHpLLxU5XttPGWUsS///Yilm/1sVVne/+/9Z9N2Q6f//VFsRyV/zc+kEJkxTnLGSQE0gFE3LkqCbHcMV6fzcJ+JKXxmfumwu6b4ODzRLTXZym3waJZFe514UWEkMv78jD12KLAQX3+5n6K/T/QyGD6TpxGRX000W+59RFwo8S/EUsOQJUdys0iiG2D0L3E4Wj0gH+cKkMsmSrN97FJcgnLB4rD3HmnjJcWLQxQUgo4+K3g5Hv/3AQMUOoYXIjy/X1UyosGI/7q//tSxHYAClFveaeYTnFfmi308xXiZy/+j/0M7WrUwNRzu3yIVQS1/oeZXIkGAZABbZv+ZjOl4BcW8hSnHmc7TZxVJPK5RCX1kT6bs+VXQAj1rz0neuR2/3sZIkGR2mf+vtDVYqF/67MKv+Uk2H7AkMS/nhbSOANseBf1NPCKrLAALIAUsu9SROJwrhyLCph2lOimk6T4gkycMohTS0svPjZHIihYKQWiOdnUcDD/EJYCEzn8DIaFuIntBZ4n8pctxt9LgSBb1H8Pi70L3J+k0bP/+1LEfoAK1RVxh5RS8UybLLTzCeB3JpcClG5JI0jgLQ+SFovJRkdgNeITo11w0XvPFXF6/Lhv8Q0ELl598MLSrfXhwooEggIUb/vB2IowLt/6UY7kt/9+swJ8u6M8rf2OwydXBk1OfYc/uESRBY8gUDgAnJddKaSrRJPTeTDgLw4ElHP1ajG9PxTq1FJJXO0VQCgxRUPvWeBkr/XiQlFSmKJt//iAucOfetJQCoUf9kkXADQun8tUxJoY/hz9cuIIjKoJDmQFc/38AvBtHqb6sf/7UsSHgApsW2GnvMGBYSgsqMMKGoCMlhYnqta1adRz0nKIkVGo1vx92qAPOIobUpjj2KM/l8yCLSCzP/9EcIAcqsjfzZqsIgIxFmet9yztXsWNhNtnkmf3lQVBJRwAAGgAS23AEuBmB3m7UvwhwdxGziNIhShJcwkAAmlxKUNY9RW7tVYBbg+I0HVXfpsEQIPFrfSXVDIyxRzf+bYWl3fXLFpVzPG4rJ7uRXQLPkQGBS5SCrP9Qz4xmLlNaa1NylfQRbYpwiSYmKKxyw9YCcBV//tSxI+ACnitW6eYrkFbGqs08xXYW7GqrhhSr1SNjVf/y/VRJURHX/OuMA0dfRJkwSlRCdKgJBBoBFGDhEk7WnfXHwDtAGpcBySSAM8NWvK0XMY6PkYGcUMFhdSTT4IEGkygAMPUTbPzydxGX+xhAfyoJDktmb8rDCp2jWHAkExMJBMJAAgDFpmZqFh5t75kykMBIEiI7P/YPE5/h2Zv2MyWT36TRZ1IT+yyr7EXNqzg871nLK3gqdx5TV8azl/nB5alb3vudq+xws5Y424nV07/+1LEmAAKOK1Dp6StQUkPqDWGDOC8DJm5oIdZ9Lj4Q/JhgBWRARYAg/DBkKj4kjq7yGerVx7RhatULMGUZi+Mx/w/zkX59WvzVSJlKcZjt43f/Itj/jfSvlesRCiQlSJQWNHV7tvVrxK6W9X0+CoOQGgGVgBxCbMlmJgShWEzGumYBmIw824nCzGWeDtJ3KzHtEBp7++a10562mX3A3b2YmHcKVE+QsN2M1RQ2RlSVq3uSevmiCs9cssOUNABJqkTPUAXWP3gkwjyRXaMVY0i0v/7UsSkABMxVz9HmYnBMZsoJYYMMMDWBRGmIJKAwsXGRRZ7H1jPncBogRKWyyGa8WFOqj/WCtOfeBjoVvw+GQWQgBmrTsR1m/YNKNg4Hi7j3dTbjtJWptU1wBlVBFOpsFzZT8T5fScsReoAjodKmP8ybiEdmGkU3RNMp9WwCBgJN//GsCkf+bNVyPVybUvhf+q3J1aGYUUeQDT/4pDR5tbp0Vf6nqbaX3VB0EkJkxU3wAMOEGZzP0Jwg17ISECVSUqIQRJo5FYu0usKuHEBXpkx//tSxI8ACkyLOSeYTwFHESek9iCwfQdBCv+HfQkY03/FOAmSxQokHZo3SOaReeLB59plXb6P0a6BNT/m7eRVAAG6u+7RAKO6sAmVS9mZgESXG4y/Qp1CwVDSwWeCoKgqewVBYGga/6j3T4dnfwaxK6HfxFET//yNPLPVTEFNRTMuMTAwVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVX/+1LEmoAKULc5p6RsgT8RZPGEjHhVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVf/7UsSnA8doQSEkhGIAAAA0gAAABFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV\",\n  duration: 0.797,\n  format: \"mp3\",\n  license: \"CC0\",\n  author: \"Kenney\",\n};\n",
      "type": "registry:lib"
    },
    {
      "path": "registry/soundcn/lib/sound-types.ts",
      "content": "export interface SoundAsset {\r\n  /** Unique identifier for the sound */\r\n  name: string;\r\n  /** Base64-encoded data URI (data:audio/mpeg;base64,...) */\r\n  dataUri: string;\r\n  /** Duration in seconds */\r\n  duration: number;\r\n  /** Audio format */\r\n  format: \"mp3\" | \"wav\" | \"ogg\";\r\n  /** License identifier */\r\n  license: \"CC0\" | \"OGA-BY\" | \"MIT\";\r\n  /** Original author/creator */\r\n  author: string;\r\n}\r\n\r\nexport interface UseSoundOptions {\r\n  /** Volume level from 0 to 1. Default: 1 */\r\n  volume?: number;\r\n  /** Playback speed multiplier. Default: 1 */\r\n  playbackRate?: number;\r\n  /** If true, calling play() stops current playback first. Default: false */\r\n  interrupt?: boolean;\r\n  /** If false, play() does nothing. Useful for user preferences. Default: true */\r\n  soundEnabled?: boolean;\r\n  /** Called when playback starts */\r\n  onPlay?: () => void;\r\n  /** Called when playback ends naturally */\r\n  onEnd?: () => void;\r\n  /** Called when pause() is called */\r\n  onPause?: () => void;\r\n  /** Called when stop() is called */\r\n  onStop?: () => void;\r\n}\r\n\r\nexport type PlayFunction = (overrides?: {\r\n  volume?: number;\r\n  playbackRate?: number;\r\n}) => void;\r\n\r\nexport interface SoundControls {\r\n  stop: () => void;\r\n  pause: () => void;\r\n  isPlaying: boolean;\r\n  duration: number | null;\r\n  sound: SoundAsset;\r\n}\r\n\r\nexport type UseSoundReturn = readonly [PlayFunction, SoundControls];\r\n",
      "type": "registry:lib"
    },
    {
      "path": "registry/soundcn/lib/sound-engine.ts",
      "content": "let audioContext: AudioContext | null = null;\nconst bufferCache = new Map<string, AudioBuffer>();\n\nexport function getAudioContext(): AudioContext {\n  if (!audioContext) {\n    audioContext = new AudioContext();\n  }\n  return audioContext;\n}\n\nexport async function decodeAudioData(dataUri: string): Promise<AudioBuffer> {\n  const cached = bufferCache.get(dataUri);\n  if (cached) return cached;\n\n  const ctx = getAudioContext();\n  const base64 = dataUri.split(\",\")[1];\n  const binaryString = atob(base64);\n  const bytes = new Uint8Array(binaryString.length);\n  for (let i = 0; i < binaryString.length; i++) {\n    bytes[i] = binaryString.charCodeAt(i);\n  }\n\n  const audioBuffer = await ctx.decodeAudioData(bytes.buffer.slice(0));\n  bufferCache.set(dataUri, audioBuffer);\n  return audioBuffer;\n}\n\nexport interface PlaySoundOptions {\n  volume?: number;\n  playbackRate?: number;\n  onEnd?: () => void;\n}\n\nexport interface SoundPlayback {\n  stop: () => void;\n}\n\nexport async function playSound(\n  dataUri: string,\n  options: PlaySoundOptions = {}\n): Promise<SoundPlayback> {\n  const { volume = 1, playbackRate = 1, onEnd } = options;\n  const ctx = getAudioContext();\n  if (ctx.state === \"suspended\") {\n    await ctx.resume();\n  }\n\n  const buffer = await decodeAudioData(dataUri);\n  const source = ctx.createBufferSource();\n  const gain = ctx.createGain();\n\n  source.buffer = buffer;\n  source.playbackRate.value = playbackRate;\n  gain.gain.value = volume;\n\n  source.connect(gain);\n  gain.connect(ctx.destination);\n\n  source.onended = () => {\n    onEnd?.();\n  };\n\n  source.start(0);\n\n  return {\n    stop: () => {\n      try {\n        source.stop();\n      } catch {\n        // No-op if already stopped.\n      }\n    },\n  };\n}\n",
      "type": "registry:lib"
    }
  ],
  "meta": {
    "duration": 0.797,
    "format": "mp3",
    "sizeKb": 7,
    "license": "CC0",
    "tags": [
      "voiceover",
      "pack",
      "male",
      "power",
      "up"
    ],
    "keywords": [
      "voice",
      "male",
      "power up",
      "boost",
      "activate",
      "item",
      "ability",
      "game",
      "special",
      "temporary",
      "enhancement",
      "positive",
      "energetic",
      "audio",
      "exciting",
      "reward",
      "bonus",
      "gain",
      "upgrade",
      "advantage",
      "charge"
    ]
  },
  "categories": [
    "voiceover"
  ]
}