{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "voiceover-pack-female-war-get-down",
  "type": "registry:block",
  "title": "Voiceover Pack Female War Get Down",
  "author": "Kenney <https://kenney.nl>",
  "description": "A female voice urgently commands \"Get down!\", ideal for a tactical warning to take cover in a combat game.",
  "files": [
    {
      "path": "registry/soundcn/sounds/voiceover-pack-female-war-get-down/voiceover-pack-female-war-get-down.ts",
      "content": "import type { SoundAsset } from \"@/lib/sound-types\";\n\nexport const voiceoverPackFemaleWarGetDownSound: SoundAsset = {\n  name: \"voiceover-pack-female-war-get-down\",\n  dataUri: \"data:audio/mpeg;base64,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\",\n  duration: 0.623,\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.623,
    "format": "mp3",
    "sizeKb": 5,
    "license": "CC0",
    "tags": [
      "voiceover",
      "pack",
      "female",
      "war",
      "get",
      "down"
    ],
    "keywords": [
      "voiceover",
      "female",
      "war",
      "get down",
      "cover",
      "evasive",
      "warning",
      "danger",
      "urgent",
      "tactical",
      "command",
      "military",
      "game",
      "combat",
      "alert",
      "instruction",
      "threat",
      "protective",
      "immediate",
      "duck",
      "action"
    ]
  },
  "categories": [
    "voiceover"
  ]
}