{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "voiceover-pack-fighter-2",
  "type": "registry:block",
  "title": "Voiceover Pack Fighter 2",
  "author": "Kenney <https://kenney.nl>",
  "description": "A male voice announces \"Two\", often used as a count, sequence indicator, or part of a multi-stage instruction in a game or app.",
  "files": [
    {
      "path": "registry/soundcn/sounds/voiceover-pack-fighter-2/voiceover-pack-fighter-2.ts",
      "content": "import type { SoundAsset } from \"@/lib/sound-types\";\n\nexport const voiceoverPackFighter2Sound: SoundAsset = {\n  name: \"voiceover-pack-fighter-2\",\n  dataUri: \"data:audio/mpeg;base64,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\",\n  duration: 0.915,\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.915,
    "format": "mp3",
    "sizeKb": 8,
    "license": "CC0",
    "tags": [
      "voiceover",
      "pack",
      "fighter",
      "2"
    ],
    "keywords": [
      "voiceover",
      "male",
      "fighter",
      "two",
      "count",
      "sequence",
      "number",
      "indicator",
      "instruction",
      "game",
      "numerical",
      "stage",
      "step",
      "item",
      "clear",
      "short",
      "prompt",
      "label",
      "enumeration",
      "second"
    ]
  },
  "categories": [
    "voiceover"
  ]
}