{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "metal-pot-3",
  "type": "registry:block",
  "title": "Metal Pot 3",
  "author": "Kenney <https://kenney.nl>",
  "description": "A brief, sharp metal pot sound, useful for a quick, percussive feedback when an item is tapped or a small impact occurs.",
  "files": [
    {
      "path": "registry/soundcn/sounds/metal-pot-3/metal-pot-3.ts",
      "content": "import type { SoundAsset } from \"@/lib/sound-types\";\n\nexport const metalPot3Sound: SoundAsset = {\n  name: \"metal-pot-3\",\n  dataUri: \"data:audio/mpeg;base64,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\",\n  duration: 0.907,\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.907,
    "format": "mp3",
    "sizeKb": 8,
    "license": "CC0",
    "tags": [
      "metal",
      "pot",
      "3"
    ],
    "keywords": [
      "metal",
      "pot",
      "clang",
      "sharp",
      "brief",
      "impact",
      "game ui",
      "item tap",
      "small collision",
      "ui feedback",
      "percussive",
      "distinct",
      "light",
      "object interaction",
      "quick",
      "crisp",
      "subtle",
      "short"
    ]
  },
  "categories": [
    "metal"
  ]
}