{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "voiceover-pack-male-war-medic",
  "type": "registry:block",
  "title": "Voiceover Pack Male War Medic",
  "author": "Kenney <https://kenney.nl>",
  "description": "A male voiceover urgently calling \"Medic!\", suitable for requesting medical assistance or revival in a combat game.",
  "files": [
    {
      "path": "registry/soundcn/sounds/voiceover-pack-male-war-medic/voiceover-pack-male-war-medic.ts",
      "content": "import type { SoundAsset } from \"@/lib/sound-types\";\n\nexport const voiceoverPackMaleWarMedicSound: SoundAsset = {\n  name: \"voiceover-pack-male-war-medic\",\n  dataUri: \"data:audio/mpeg;base64,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Jovy1QAKFQAQhkJliV4dnmSJEiRIsf/sYYCNVVYyqX/9VVCgKriUFYLbjwKuEoKuLHjuJRoTBaoOxL+IqOwS7Id4i1/UDT9AiUxBTf/7UsR2AAosg0VmIG7BSBcmbPMM8EUzLjEwMFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//tSxIIDyJhpIwSYYYAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVU=\",\n  duration: 0.667,\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.667,
    "format": "mp3",
    "sizeKb": 6,
    "license": "CC0",
    "tags": [
      "voiceover",
      "pack",
      "male",
      "war",
      "medic"
    ],
    "keywords": [
      "voice",
      "male",
      "war",
      "medic",
      "urgent",
      "request",
      "assistance",
      "help",
      "combat",
      "game",
      "revival",
      "healing",
      "teammate",
      "critical",
      "alert",
      "audio",
      "command",
      "support",
      "military",
      "injured",
      "emergency"
    ]
  },
  "categories": [
    "voiceover"
  ]
}