{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "impact-metal-000",
  "type": "registry:block",
  "title": "Impact Metal 000",
  "author": "Kenney <https://kenney.nl>",
  "description": "A general metallic impact sound, suitable for standard button clicks, item interactions, or generic feedback in a UI.",
  "files": [
    {
      "path": "registry/soundcn/sounds/impact-metal-000/impact-metal-000.ts",
      "content": "import type { SoundAsset } from \"@/lib/sound-types\";\n\nexport const impactMetal000Sound: SoundAsset = {\n  name: \"impact-metal-000\",\n  dataUri: \"data:audio/mpeg;base64,SUQzBAAAAAAAIlRTU0UAAAAOAAADTGF2ZjYyLjMuMTAwAAAAAAAAAAAAAAD/+1DAAAAAAAAAAAAAAAAAAAAAAABJbmZvAAAADwAAABoAABYJABISEhwcHBwlJSUlLy8vLzg4ODhCQkJCS0tLVVVVVV5eXl5oaGhocXFxcXt7e3uEhISOjo6Ol5eXl6GhoaGqqqqqtLS0tL29vb3Hx8fQ0NDQ2tra2uPj4+Pt7e3t9vb29v///wAAAABMYXZjNjIuMTEAAAAAAAAAAAAAAAAkBWEAAAAAAAAWCTq18HoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//tQxAAACURXSFWRgAGeImorONAAAEbzdXCExEMa0ByTHE8ayBlDGIEZY5ihgIMuOiuoOsdr8+HFxE3d/+u7uiAAAACEOcQAmH/WH/icEP/y5//8EOn/SJwfD6QQ//SAAoBAggGBAIBQEAa3phkgbmUkeEP4vsYrDxh0DmEwoLAeGYZ9AMYNCE5X/x/A9fDwMYcf4xDUfRMf8fg5xJF1L/y6iO4ew7SV//Ha5gbuak3//JIvEs5ipSzn//6JNKKjZmSRYvf/WgAAKP6FjDJNJP/7UsQEgghcHR094QAg7wThgf9oQNVHHo+hkVDCifpMTIHMxBgpzA4BJMEwAEDAPF9RUAJWKBsAC4paE0f1e1OjdsX/Z/9v/ev//R2/+5BiKRp6YRx9CGUxkqJjw7cMcRgMZhpgpHsPm5CFB1D5DFnTu0u7ONSWkRb+7Z/+v9iv/v+7v936P/7vjVUySIN9N7eCcjPnjkQzNPm9MsID8TCTQQQ5EYTVoEOoeMQsGDYVAOKHNPLC8NJjzLEIlkIjD44CSCkvN3sfPoJGTT5pMcUm//tSxCMCDKQbBA/zRAEug6Hl7+gIGPHndiXJHCdULnxzlrug0JG3WPPirEPSPeNFjCibChqUUyphINNGOqbQaF08OmDoDJpkcIKWYJUAhH5Jm8EGZFgEKgkaXSenHPJV3PsAX3pWC/GfQ6MZ0dwOEGH91XqR0rTpcP9n7+7MI6EAN/mGkckec9IJjW7kHgnEAb24yxgXA4jtwXTLYKaDXPpaDs0yxT3vpY1SO1D12pt7Ur203Nf7xR1CtrTGwCfqWbt7FNqIvUS5Cjs82QBjGHP/+1LEKIIJlBsMr2XkQXGDYMXv5AhmUc1kZTZENm2phXhkIYK+YCoBGH/6dkhqpmSGEANvRH1hogokSeeWH0qua9oqpVUFsXe1bilpF9dhlXUl1KxWPjTSY1I2z3HlLpc9Y1/etTRKwulB/1IqI4yqDpzUB0nM5UQwzSAAZMx9kGjMBlAnDhSTNnEUV1IDV7URi5hoix4kMGhZIASwQWrqzzlO+eo/fupYeFNHiw6OW6MurV1OxhX7l9DeqjSBBjcE9nH8zyYi1jxyiVWHHqS4YP/7UsQyAwoEGwovf0BBOYNhBe1ggJgYYFnDCEKKSQRjW7IgkHw4FmCiS6a1NF2JTVf7Fan10632xzGvYxpH327bLUo66PXnmo4p6scyxKbFABId20lsjbZiEGRktExlSJx6vVh3zBb8AglmCx8bUaPbxdbN1k130L9HX8U9H3O3+X+/Zsv/1fUAAAJdXJG0mzUGw2uvPH0lNT6DPDQTAQJcsBV79k1Y5Ft9WjtT2//V9f17/R/6VV/e36fyXsUA0CysYYwYZrltam/vaaat4lhr//tSxECABwQXI67pgiDVguQ1vuwEVgchgAAGywvAwlzG/U9NP7Kq19uVsmmqsOe7V9ynU/19GM/pknPPSLm16hZQjW1VxoQsJ0J35m5svGH2XEeEjQHCeUAQq9xIhN6bTJ05szUbrvT9d/z96HWffQr/sUj0556p2mQQwM6t3X9y6QBI2YdQ8hrnFSmMqEqbSAGRhmuGAyuORDpaExgjH4OnmlXWAEPTG3hfLs7vrV7uley5rPX+v60IQ3/F9T1f2zEAVlkw5BbjVNPBOPQmczn/+1LEZ4IH9BMOz3mAQQGDImXfdAB0FzqISBIKVnQKLcIFXdetK3VVehNNrrFLdxRsWc5tFTBvpZX1Gvf1JxXFWV0Ib6aPShYAAXnGkkmzXzpFayYPwvQ9Gafw6mLChatTBh7vxS25DFa00pJJKjqbzX79Pb3/v7bv9Ff0/8j//9CjQkzJoQIBX4hidoXmCqGydDLoqAVUmfwxLKO8KNQ62pTW7dHej/zXp0/bp2//XGaK6b33/19v3zGqFkNFEfA0Qh8TUpHRP3xeMNwBLWKbgf/7UsSFggf8GwyvcyIBCAMh2e6MSAEh+kJMBvmB81WYa3bCMkRodSZlvb3jN16hy0Le1G/pffsudJq0J9f06HWPRlrhDPOPU5rZDMmHDitzDp94WBXfiE3XsD1CwcFC0qeuWS0bsUXspbxdLtder8WX7bVXfJs5NR0UwNL7dBdy6csjUlX/SKwToIwDlVfTJUQzvhDJggJmRQQigGccY9jWJbQSXXmWr5m6zkKEY+z4lqFnp4zeu8RK6kWKoZTXSu8C97tDa9FB1UkR4rzRzEjB//tSxKKCBxwZF057YADgAyIl33AAo6Jpx++GcRMeDQWnQwyDaALWBjtLC4maYKU/P/pP6YxFkfLwveJqa/dX+d5k1X/uV55h3I8xsxuPOTT194CfI7kxPzcTn85vaf+EpHOiINNiEUTp5ZC56TUP4yoLjI0CNMUUVcynCKDAiUVNF5gEJrod8YYyGN3K2oKDYq0QxlDxRSJhwAQ+xRZwsI10l7Vl73YFnawyyfKuS0KBSRALYfPF8UHJBhCrih5YeGwqInSHeJXMMqooUMC1Tcb/+1LEyAKI0BsID3WCQQMC4VXO7AC2B+ZLQmaEpEcBpAC3YUDRZ7qBZOBcVKXnkR0lk0SSxgbQLhpRFc8qxgFKqaae159va5KG1ItESJs6eHK1qDYrQga8yYdCwJkxYpF6zDH3OLokKgAiqsx8YYG6CwbUwwZHSiapEmAgGZTKpuuNCCa29Jx46p+R55ZOcZ1pSm3KXox/lFmRdIn8u28/N5d/aLmUn/Gv+WZTt8vR/iDfMvOkf3ly3yv9nM6edn78eoRVCqgiiEyISWoQPqFnEf/7UsTiAwhUEQwu8SIBkgwgQd2MWQAJ0wTGaW8ZFAByrSnwfQSGjLbTCs62kmf12wdVVe/d053OJpBuVvQ7B7fiE77sIWT9a1O8+RztmTDp1Et/lbcQw6ULrHd3D3h/HSm7SVdw0dtGBaKc0Xp4NXfuAACK8D6gszs0MBlPp7BdIr2XHQy42Sta+s+2ZbbYs3kaWb1QXDpcVNpG29VkJbjQSlFWOXWXorR2M/Sd7UfahS6j6wIDdZMzRDqjWN+zg4uSzjjxB34vCZJhhxSfGqAC//tSxOwCC3QrBi9swkFaguGl3hhIDihq6RwGQqMyVehQ61ZYXTIG+7ubw1VPWdUqXBRYMyMS/kREJ8kC6wk3MnNOi3pVPLLfU0dMio7k7Qj8Eim0d/Lsud9czD/DM7mTpGZi+CgbhUPR0NCxWZdi4s5MEAzlD044lAuDhZGMwafGH/2AOhmORySSEVS5K5cK5lqdmY18HIfk6r/u4nRunKu22b5em6vN+KZ1+H2+gWbLizQ9PomgPbp6bGhtq3TNef/tM3oX9ae2ZYOAf+G+JAj/+1LE8IIM8X0IznRgwXUCYZnNJEWqsseYGojPRq7gnRGedAJMFHlR48hlOI32QxnCf8Ntr3d5H7w7+LZl4fZ//f3W0tCZ3XdOufo7Gxr7vdfn7xv9etdaff75P3/27zjkS1vS2yATKUxSgfnVACJIvNJqEMRmSN5oGrBtUC8JnIuDGMbBwa1OdumVsE7OZvFddFmUew2yIjJwu7f1jZ2qHziOTrYdz1NoyZGxOzRLMIT2rCOXM1L1irteRfpcXoOGj+krxmMuWykxP5GWpo66Tf/7UsTsAggwDxMN62Ah4TTfwdMNEdGYuRgiKQc2kGL/VTZkAcKA0ZahcdxTBoZVmog+rEEdQMMAUCnWkTR6tF4VMLF1QZH9LJ/uICuwfNSIrUbZe83tWHT0el7O100ZG2jWK2jrErpxzj52gikpuLnGKj6IMTFMODc+U5XVIhFGOQT85DlfuMo0xKYQayQGgowYjCEvqVcEYRTsItYQfzTYUqyPlN6OxvoZ7Mh1CpDg87giRhBndpz8zcFc0jAzpE+gOT8p9mPHL0349fO5kK9G//tSxO0CDBRjBC7wYMliAiFlzaRBeAiSkumbZgwhA5pUWipdDK0gkQgcA82TKgDzJDMN7xUeF8aCTJSi2Nxjd2K192bOiNDlXoWa+PRKxiVwl14m1/yR9KPU58bpLmvvKy7n9g6233wn1n9mvynnH/9rJsn77uzNr6/E3kh3ubMeh/XOdoIOagOMXR9PasEPUPFqwD45pWutWrBYJEhUVkRiC46GBEROpF1kkhtYzSnMPPC7XLLDKHqc+GBCKBylo+SeWNzrXqalK63Uk5w6fQj/+1LE7gIOLZEArphnCTsC4MXeJAjatUudvvAAstnTAHr6YNlKYWrnFMgKEmmhSh6ZK0K2rajQarUV24uCKFp8s8h3XHwP/r9ON7s4phfI3Gb8wP/mE9l9U51ZrH/1erZPBzrK5uQZ2eLs9b3/Ck7Vy6D7rekf/fzolgBACGsKYrCsYU4LqA6jdYC7Z5qfJFVks2KMHKsptTM3ceEhrl2HvSLtfb57yRmLbv5UqXd9HIoWiHPM9fyl7FKzmR9n91yP/X420vfkt05lmfhX6Y1yn//7UsTrg451eP4O7GFJbIdghd4YCS5lwio+5ok+2G8SA1ERlK8wCguZwudcMPxDhUTBgCxUVF4tFjRpWRS+nbFNyWPi7WaIi7lMsQ18pomC6lrAel3kpkvbRXX0d7FUW30ShBMDQFcGUz4HznAV8XZiPTpNbGkco5ckyi3L8PRwWa7Fa9tJloHmQd8L0jBUrvEGb7JNspshzIKLufz4/3eViUax8z396xb6vb07n02tGPv10+gbR5q4DgiIIWfMuJOLisMquGMJy6HQp1+qcBXb//tSxOIDirwhBC7pIEFrhSBF3ZgJ8nDXs3hCEAIsqsEhgVA8OGDCocoA2At3KzGIjTN1ea8hXyQy6XT7eHonCPWIad7bfdnQORQzIzzzMiq9jZsX5vCnwvJcy2N2e0iKnnP/y+Fm67ll5+5J5ZtEejaa48hh7qn/b98H0AAziPmiPA8Z+uYAAUAcspuItcE+JUMyF1Hkp4ymqFU/ucP5PLp673TJ0bnrxVQ6brcqNUtGW9Vds+R+v9rr6re1r7ED5us70O+Vjq0peinRnKZdc4X/+1LE54IMaYMCruRhCP2BYUnNYAC7SEgdnFncP/vAmWRUOj+viqJJisSFOAChYGIE5gzMyKgxRqABgM6xCwkAHRBzhtfw8QwnAHJFVyOulMVjFZqjpu/xtju6ZfN3OC68VZNZiHUd7vszRi7m3PZcb/8KBvY33fSpW67pbeKqAECqVjbFWgHTGAiQIgeBR1L2Xh825+m5dbUmV010nf9binRpN6K0L6FopE4tJvVT/T9b7EaLzlZCkCSow0MDAwFD7KV3C6gbCNFOm01iM5vpkf/7UsT0Ag7A+PwPaMDJg6xg8d0MCUruiHjF01jD4Vwiu2lilTQ13eQoql088zpcO/JC1LX97j5Gb3VWbOPaZXgU3XtjeZatdsLr9aFBRlDRHa3kjKmXDNTzxjHZFEaTRMVaagAAiBFrw0MDA0BhyhxC1LGCUFQSqOUp9eK6F2D27KldDNj56U9Tp0jK/1DKGxOfpq857GvCf6xdBsSGVRf/3Bm7R47kTvKS4Quu7ES4PpQzzbnhJCr5ZfT+ZGmavbaQNkcklyNheXRgACxHKANB//tSxOaCC9CzBK7oYIl/CWAB3QwJIeHcwPBRi2gM8MouTxM4sDWca9nvpu9Is0d94am6z0Ei46k2Vc25NXh7Vzad/MOID+lhfL+d0V35cPO7jblVczaElkYpFjMzVbR2k9/XOqQgMZVi7rflJk3zebmaOepVAyEYGKbJ81RYDCgUQMFBaIHT0lRbBHve5SzXc6hvkxdlcnGlVxIVoobvvRT6Li59bnbqd7fvlMDyQAI2BqzQgDxGECACO4zhrEH3H2i1DEdIQCGxQQxTk2rSFRP/+1LE5QIG/A0MzmBAAZ6voN3cjAlhoUDShTKtKcvuKd5M21KUri0HVgTAlIzQV7iTeu+VGhjqdzlMxPMUPqFIHVLQHembw8jVmNrPXPAitufQqospng1BBjKkdbMOTiU1QEQQzodSwqqvTiM6GlIU+SHmtXvJAM++EUw+GIxKAxTBXKfbX7Wcot3tRO9fltPKSB5gZAt2xE8uOhcazaWcrPu3u3X+Y75qHFFCp9wMRVJ9xJBx8utKm3h7mZzbcdDLtlrmrFUCEWCgJuY2aNYrDP/7UsTzAgztewcu4GBJlxVgCdMMuQCHPP2SLwEmoAABACAgEBgMCAQAfVbxww6YaCgkOBw1U8MB1WQW+3cFM1ruNM1hYCMeh+qMHY4BDKSoujjBPIw3jrRSPI8flo7x/OjvSPIpHq+vJ50lk86S0XWi64j+MnnTc+03PoutGLR666/abn2m59pufi0YtsbY/j6/abn5Nz8m75N42xtjb9f/H//vk++T4XD4nHg7OlZ0Sr//wOH//zolTEFNRVVVLsEeCRD+YzROmAh0yeQ5XRs1//tSxOoABywJEy2wQCINsd8J5I1514GAgagqDQNB1YLKBp4leoOrOyzxLkVnaniXIrO8S9Z3iXrO8S9Z3iXrO8S9Z3iXrO8S+dVMQU1FMy4xMDBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVX/+1LE6YAMcH78NdMAAm4tIus2sABVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVf/7UsTFA8jQKtQc8YAAAAA0gAAABFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV\",\n  duration: 0.635,\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.635,
    "format": "mp3",
    "sizeKb": 6,
    "license": "CC0",
    "tags": [
      "impact",
      "metal",
      "000"
    ],
    "keywords": [
      "impact",
      "metal",
      "general",
      "metallic",
      "button",
      "click",
      "item",
      "interaction",
      "generic",
      "feedback",
      "short",
      "crisp",
      "subtle",
      "positive",
      "ui",
      "tap",
      "navigation",
      "acknowledge",
      "standard",
      "effect"
    ]
  },
  "categories": [
    "impact"
  ]
}