{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "impact-mining-001",
  "type": "registry:block",
  "title": "Impact Mining 001",
  "author": "Kenney <https://kenney.nl>",
  "description": "This sound offers a powerful, sustained impact evocative of heavy excavation, well-suited for game mechanics involving resource gathering or large-scale destruction.",
  "files": [
    {
      "path": "registry/soundcn/sounds/impact-mining-001/impact-mining-001.ts",
      "content": "import type { SoundAsset } from \"@/lib/sound-types\";\n\nexport const impactMining001Sound: SoundAsset = {\n  name: \"impact-mining-001\",\n  dataUri: \"data:audio/mpeg;base64,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\",\n  duration: 0.869,\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.869,
    "format": "mp3",
    "sizeKb": 7,
    "license": "CC0",
    "tags": [
      "impact",
      "mining",
      "001"
    ],
    "keywords": [
      "impact",
      "mining",
      "powerful",
      "sustained",
      "excavation",
      "resource gathering",
      "destruction",
      "game sfx",
      "heavy",
      "deep",
      "rumble",
      "earth",
      "crush",
      "build",
      "action",
      "fantasy",
      "industrial",
      "strong",
      "environmental",
      "breaking"
    ]
  },
  "categories": [
    "impact"
  ]
}