{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "question-001",
  "type": "registry:block",
  "title": "Question 001",
  "author": "Kenney <https://kenney.nl>",
  "description": "A short, light, inquisitive chime, well-suited for prompting user input, presenting a quiz question, or indicating a new query in an interactive experience.",
  "files": [
    {
      "path": "registry/soundcn/sounds/question-001/question-001.ts",
      "content": "import type { SoundAsset } from \"@/lib/sound-types\";\n\nexport const question001Sound: SoundAsset = {\n  name: \"question-001\",\n  dataUri: \"data:audio/mpeg;base64,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\",\n  duration: 0.491,\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.491,
    "format": "mp3",
    "sizeKb": 4,
    "license": "CC0",
    "tags": [
      "question",
      "001"
    ],
    "keywords": [
      "query",
      "prompt",
      "quiz",
      "interactive",
      "question",
      "chime",
      "light",
      "short",
      "user input",
      "decision",
      "feedback",
      "inquire",
      "subtle",
      "sound effect",
      "game ui",
      "dialog",
      "new event",
      "request"
    ]
  },
  "categories": [
    "question"
  ]
}