{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "voiceover-pack-female-its-a-tie",
  "type": "registry:block",
  "title": "Voiceover Pack Female Its A Tie",
  "author": "Kenney <https://kenney.nl>",
  "description": "A female voice announces \"It's a Tie\", ideal for indicating a drawn result in a game or competition.",
  "files": [
    {
      "path": "registry/soundcn/sounds/voiceover-pack-female-its-a-tie/voiceover-pack-female-its-a-tie.ts",
      "content": "import type { SoundAsset } from \"@/lib/sound-types\";\n\nexport const voiceoverPackFemaleItsATieSound: SoundAsset = {\n  name: \"voiceover-pack-female-its-a-tie\",\n  dataUri: \"data:audio/mpeg;base64,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qqqqqqqqqqqqqqqqqqqqqqqqqqqqqkxBTUUzLjEwMKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqv/7UsTpAsuRiQwGGKnJabGfVIGXI6qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq//tSxKGDwAABpAAAACAAADSAAAAEqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqo=\",\n  duration: 0.889,\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.889,
    "format": "mp3",
    "sizeKb": 8,
    "license": "CC0",
    "tags": [
      "voiceover",
      "pack",
      "female",
      "its",
      "a",
      "tie"
    ],
    "keywords": [
      "voiceover",
      "female",
      "its a tie",
      "draw",
      "stalemate",
      "equal",
      "result",
      "competition",
      "game",
      "neutral",
      "outcome",
      "match",
      "even",
      "feedback",
      "balanced",
      "finish",
      "close",
      "announcement",
      "undecided",
      "shared",
      "fair"
    ]
  },
  "categories": [
    "voiceover"
  ]
}