{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "impact-punch-heavy-000",
  "type": "registry:block",
  "title": "Impact Punch Heavy 000",
  "author": "Kenney <https://kenney.nl>",
  "description": "A deep, powerful thud indicating a heavy punch, excellent for game feedback like strong hits, impactful UI errors, or substantial damage dealt.",
  "files": [
    {
      "path": "registry/soundcn/sounds/impact-punch-heavy-000/impact-punch-heavy-000.ts",
      "content": "import type { SoundAsset } from \"@/lib/sound-types\";\n\nexport const impactPunchHeavy000Sound: SoundAsset = {\n  name: \"impact-punch-heavy-000\",\n  dataUri: \"data:audio/mpeg;base64,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7Jg6SyRkqGJJ417199POz4TaUiM/4bRaIDLy0Q4aoKzwV7LwHrJ/mRY/uH7+VTBuyN5ARGVhMVv+rf+FoBIcTZnZpDMuf0idnNb00pKdJlDbFnzIaJgmeBCYsyM27b2y4dqhau0sOfZKFM+9qblIyd6IMKXnifLaulyMm5qhxNzZ/cFvFKPBpxVFoLX/+1LE6QILNJsGDjBiiVypYhmwiXliMtphPhS+dUJxilWMctag5ppErbRjrwlNKfDImjcrGbd/5kvKbZUy9Wa+cR2MnuyfcvXTmfMSuErUNlDp6zWyqnm1cu1PPKuNDnF91yaoKBJuHjF+M2wOC7fMAAJBVQaISwbMXad0LsSaYWjovEMzM9pdoxnbYquI/Jd3TNv+TPdgRuk34RHIhl3suTZUGU1PL/XudYxjz6QEvq7sSf59W2+e5niuI1HboGCK95+jxsCCnDfdHABRuNtpSf/7UsTuggvNkQsuMGKBkKmg1ceMGQuMP8BhkGKZmw3a6mx8Ga9/hOPl1bfy69utzXXYh28X41WzPOf7rJGX37z9+/PonU5SiVNell63k7e7F2HNkcVxtb3Nf3p/6gDKsU+y164moY0+fgiUzglYIWTIIpmnjMDlQn7Qm6VbiFcSUznNxOY1abXR2hH1AsMhVEDHUN8u2bOJBibPqHxmZmp6kzMey+czyPpHZcyLs/K7gj6h9kM5mykvIzAhKDlhSbCrC5ghyzOGzGcJ7MiMmwMQ//tSxOsDS819BA4wYQFqKeDFtgxZOkhJCQDQpKAJFwdiSeGSUMSPSNUSLROTIlokrRO1ErAbCQFBIiEgKCQbCQMgIShoKgIkFAqAiTAqAipE6MAqW1liQUAvlkMCYCQwYWRjkMOj0caltXqRrR/UmkxBTUUzLjEwMKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqr/+1LE7IALWPMLLaRiiTgBoqmUiAGqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqv/7UsT2A431ewItGGnZe4leBYYYYKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq\",\n  duration: 0.649,\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.649,
    "format": "mp3",
    "sizeKb": 6,
    "license": "CC0",
    "tags": [
      "impact",
      "punch",
      "heavy",
      "000"
    ],
    "keywords": [
      "impact",
      "punch",
      "heavy",
      "deep",
      "powerful",
      "thud",
      "game hit",
      "ui error",
      "damage dealt",
      "strong feedback",
      "forceful",
      "ominous",
      "combat",
      "warning",
      "collision",
      "solid",
      "weighty",
      "fight",
      "attack",
      "epic"
    ]
  },
  "categories": [
    "impact"
  ]
}