{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "impact-plate-heavy-000",
  "type": "registry:block",
  "title": "Impact Plate Heavy 000",
  "author": "Kenney <https://kenney.nl>",
  "description": "A deep, resonant impact of heavy metal plate, perfect for critical errors, strong game feedback, or marking a significant, unchangeable action.",
  "files": [
    {
      "path": "registry/soundcn/sounds/impact-plate-heavy-000/impact-plate-heavy-000.ts",
      "content": "import type { SoundAsset } from \"@/lib/sound-types\";\n\nexport const impactPlateHeavy000Sound: SoundAsset = {\n  name: \"impact-plate-heavy-000\",\n  dataUri: \"data:audio/mpeg;base64,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\",\n  duration: 0.489,\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.489,
    "format": "mp3",
    "sizeKb": 4,
    "license": "CC0",
    "tags": [
      "impact",
      "plate",
      "heavy",
      "000"
    ],
    "keywords": [
      "impact",
      "plate",
      "heavy",
      "metal",
      "deep",
      "resonant",
      "critical error",
      "game feedback",
      "significant action",
      "thud",
      "clank",
      "rumble",
      "warning",
      "alert",
      "strong",
      "powerful",
      "final",
      "destructive",
      "system"
    ]
  },
  "categories": [
    "impact"
  ]
}