{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "impact-plate-light-001",
  "type": "registry:block",
  "title": "Impact Plate Light 001",
  "author": "Kenney <https://kenney.nl>",
  "description": "This sound is a crisp, light metal plate ring, useful for confirming successful minor actions or drawing attention to a new, non-critical notification.",
  "files": [
    {
      "path": "registry/soundcn/sounds/impact-plate-light-001/impact-plate-light-001.ts",
      "content": "import type { SoundAsset } from \"@/lib/sound-types\";\n\nexport const impactPlateLight001Sound: SoundAsset = {\n  name: \"impact-plate-light-001\",\n  dataUri: \"data:audio/mpeg;base64,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qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqv/7UsTrABWGEPW56QACPLQhpzUgAKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq//tSxKGDwAABpBwAACAAADSAAAAEqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqo=\",\n  duration: 0.655,\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.655,
    "format": "mp3",
    "sizeKb": 6,
    "license": "CC0",
    "tags": [
      "impact",
      "plate",
      "light",
      "001"
    ],
    "keywords": [
      "impact",
      "plate",
      "light",
      "crisp",
      "metal",
      "ring",
      "successful action",
      "minor action",
      "non-critical notification",
      "ui alert",
      "confirmation",
      "ping",
      "chime",
      "short",
      "bright",
      "positive",
      "feedback",
      "app notification",
      "subtle",
      "interface"
    ]
  },
  "categories": [
    "impact"
  ]
}