{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "voiceover-pack-male-war-get-down",
  "type": "registry:block",
  "title": "Voiceover Pack Male War Get Down",
  "author": "Kenney <https://kenney.nl>",
  "description": "A male voiceover commanding \"Get Down!\", suitable for urgent warnings or tactical instructions in a combat game, indicating immediate danger.",
  "files": [
    {
      "path": "registry/soundcn/sounds/voiceover-pack-male-war-get-down/voiceover-pack-male-war-get-down.ts",
      "content": "import type { SoundAsset } from \"@/lib/sound-types\";\n\nexport const voiceoverPackMaleWarGetDownSound: SoundAsset = {\n  name: \"voiceover-pack-male-war-get-down\",\n  dataUri: \"data:audio/mpeg;base64,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P/FCUMpiM0hTEktK//tSxNGACsiTV6ekT3FLDmj1hhhwNFIsH6xzAoIrHicPa9FeytYay/rjrOtOoLsjlBUPC3aVmarGG5vrVeBa80Ubndi0PutDPid7Gn4z3Fg+GWNSQSdys/Qxn6MhjsyZ3R9HkOpCyIhD5hQW65ooPU6p7UQs5BFNv+V9b9JB5pbZZu2qBBBiDgLIIIqYp0D1oYeSRJKhyHIS3M6RQxno0NZfnrMQvRRgbYjD+44QsTpxCGY+BjMeH8+HmdfhjBVdJERbgdZgsBcqxnakKCI6fR7/+1LE2wAMaSlN57BRIVoTKPT2FTCmqPSSgI3DbvczTfrAQIEIDswAGGZ7UxOsJKh7PxUtcJINSoWjpHXLSNuMGBKUFIOQEewYc1X26XGan+CY+s2rZr1XsZ/ewb5Szfyugmjodny/0FAxnUo0q5jtglWd1lu1sOt8nQIAAaVBQUgGm0OMQZWbY1BCgJyAmb1/WNSDEGcBBDqQZQoIUFOzuJTtp4qSIndZ0RFpYSr4lATsOnlKDss/5IRFgLU8jh1T8KB3WFXBoOiYAAWVSm5pCv/7UsTcAAqIoUOsPGPBZ6YotYYVWSVLHEZg+SioKgsDoKg4FyQ+ZJiEsWLoG3PjK7Iy5GZf/oRkR/////yMiMv//8IjIs//kZEZf//2ERkVcaikRFAYGYeBqqlZXf/qg1VKTEFNRTMuMTAwqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq//tSxOKACyiJNYekcMFho+RgwYpoqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqr/+1LE54EJ+GUPIyRgQU+t1siQmvmqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqg==\",\n  duration: 0.854,\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.854,
    "format": "mp3",
    "sizeKb": 7,
    "license": "CC0",
    "tags": [
      "voiceover",
      "pack",
      "male",
      "war",
      "get",
      "down"
    ],
    "keywords": [
      "voice",
      "male",
      "war",
      "get down",
      "warning",
      "urgent",
      "combat",
      "game",
      "danger",
      "tactical",
      "command",
      "protection",
      "evade",
      "action",
      "alert",
      "audio",
      "threat",
      "military",
      "immediate",
      "defensive",
      "cover"
    ]
  },
  "categories": [
    "voiceover"
  ]
}