{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "voiceover-pack-male-war-sniper",
  "type": "registry:block",
  "title": "Voiceover Pack Male War Sniper",
  "author": "Kenney <https://kenney.nl>",
  "description": "A male voiceover warning \"Sniper!\", suitable for tactical communication in a combat game, alerting to an enemy sniper presence.",
  "files": [
    {
      "path": "registry/soundcn/sounds/voiceover-pack-male-war-sniper/voiceover-pack-male-war-sniper.ts",
      "content": "import type { SoundAsset } from \"@/lib/sound-types\";\n\nexport const voiceoverPackMaleWarSniperSound: SoundAsset = {\n  name: \"voiceover-pack-male-war-sniper\",\n  dataUri: \"data:audio/mpeg;base64,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UgggAD7LRAO2hCD4//tSxK0AClkzV6ecT3lPEGg08YpI+LpBHU99a+tJvj0JQVPOiStxA6Qcg2DFBJ/swJQmYJbA4ER4qjWspNBtiwhRNCHTnz9KFm17rkkKikYbFarWXpJOTWLT3UKAAZNjryVo2ghbPankilIoHDE1XFKHLraWv2EQ69K/AaNCRqDU6dY0WWWFoq4ssyNbXovgU9bDpHBsap7CURWIlSs9gLKk6j0OzxJMQU1FMy4xMDCqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqr/+1LEt4AKGH9Tp6ROMUaQp3T0iZAAC+mSmmnAIOM4SQKGgqnWwy1yAKK8ChQ09ISIjP9aQELmewyLf8BC/+KIpGEXf/qJGgqSNUxBTUUzLjEwMFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVf/7UsTEAApsXS+nsGPBOo5lZJMMeFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//tSxLwDxpwJGUEIIAAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVU=\",\n  duration: 0.818,\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.818,
    "format": "mp3",
    "sizeKb": 7,
    "license": "CC0",
    "tags": [
      "voiceover",
      "pack",
      "male",
      "war",
      "sniper"
    ],
    "keywords": [
      "voice",
      "male",
      "war",
      "sniper",
      "warning",
      "alert",
      "combat",
      "game",
      "enemy",
      "threat",
      "tactical",
      "command",
      "team",
      "action",
      "audio",
      "urgent",
      "danger",
      "military",
      "communication",
      "long range"
    ]
  },
  "categories": [
    "voiceover"
  ]
}