{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "voiceover-pack-female-round",
  "type": "registry:block",
  "title": "Voiceover Pack Female Round",
  "author": "Kenney <https://kenney.nl>",
  "description": "A female voice states \"Round\", which can be used as part of a round announcement or to indicate progression in a game.",
  "files": [
    {
      "path": "registry/soundcn/sounds/voiceover-pack-female-round/voiceover-pack-female-round.ts",
      "content": "import type { SoundAsset } from \"@/lib/sound-types\";\n\nexport const voiceoverPackFemaleRoundSound: SoundAsset = {\n  name: \"voiceover-pack-female-round\",\n  dataUri: \"data:audio/mpeg;base64,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\",\n  duration: 0.657,\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.657,
    "format": "mp3",
    "sizeKb": 6,
    "license": "CC0",
    "tags": [
      "voiceover",
      "pack",
      "female",
      "round"
    ],
    "keywords": [
      "voiceover",
      "female",
      "round",
      "stage",
      "game",
      "phase",
      "turn",
      "sequence",
      "competition",
      "match",
      "interval",
      "segment",
      "progression",
      "indicator",
      "short",
      "clear",
      "section",
      "chapter",
      "level",
      "cycle",
      "announcement"
    ]
  },
  "categories": [
    "voiceover"
  ]
}