{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "voiceover-pack-female-10",
  "type": "registry:block",
  "title": "Voiceover Pack Female 10",
  "author": "Kenney <https://kenney.nl>",
  "description": "A clear, professional female voice delivering a short spoken phrase, ideal for game prompts, tutorial instructions, or informational alerts in a UI.",
  "files": [
    {
      "path": "registry/soundcn/sounds/voiceover-pack-female-10/voiceover-pack-female-10.ts",
      "content": "import type { SoundAsset } from \"@/lib/sound-types\";\n\nexport const voiceoverPackFemale10Sound: SoundAsset = {\n  name: \"voiceover-pack-female-10\",\n  dataUri: \"data:audio/mpeg;base64,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\",\n  duration: 0.570,\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.57,
    "format": "mp3",
    "sizeKb": 5,
    "license": "CC0",
    "tags": [
      "voiceover",
      "pack",
      "female",
      "10"
    ],
    "keywords": [
      "voiceover",
      "female",
      "spoken",
      "speech",
      "dialogue",
      "narration",
      "ui",
      "game",
      "prompt",
      "instruction",
      "tutorial",
      "alert",
      "confirmation",
      "announcement",
      "informative",
      "professional",
      "clear",
      "human",
      "feedback"
    ]
  },
  "categories": [
    "voiceover"
  ]
}