{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "impact-plate-medium-003",
  "type": "registry:block",
  "title": "Impact Plate Medium 003",
  "author": "Kenney <https://kenney.nl>",
  "description": "This sound features a resonant, medium metallic plate thud, well-suited for confirming critical selections, submitting forms, or indicating a successful level transition.",
  "files": [
    {
      "path": "registry/soundcn/sounds/impact-plate-medium-003/impact-plate-medium-003.ts",
      "content": "import type { SoundAsset } from \"@/lib/sound-types\";\n\nexport const impactPlateMedium003Sound: SoundAsset = {\n  name: \"impact-plate-medium-003\",\n  dataUri: \"data:audio/mpeg;base64,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\",\n  duration: 0.654,\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.654,
    "format": "mp3",
    "sizeKb": 6,
    "license": "CC0",
    "tags": [
      "impact",
      "plate",
      "medium",
      "003"
    ],
    "keywords": [
      "impact",
      "plate",
      "medium",
      "resonant",
      "metallic",
      "thud",
      "critical selection",
      "form submit",
      "level transition",
      "ui confirmation",
      "feedback",
      "solid",
      "weighty",
      "deep",
      "satisfying",
      "game sfx",
      "action complete",
      "important",
      "interface",
      "positive"
    ]
  },
  "categories": [
    "impact"
  ]
}