{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "voiceover-pack-male-time-over",
  "type": "registry:block",
  "title": "Voiceover Pack Male Time Over",
  "author": "Kenney <https://kenney.nl>",
  "description": "A male voiceover announcing \"Time Over!\", perfect for signaling the expiration of a timer, a time-limited task, or the end of a round.",
  "files": [
    {
      "path": "registry/soundcn/sounds/voiceover-pack-male-time-over/voiceover-pack-male-time-over.ts",
      "content": "import type { SoundAsset } from \"@/lib/sound-types\";\n\nexport const voiceoverPackMaleTimeOverSound: SoundAsset = {\n  name: \"voiceover-pack-male-time-over\",\n  dataUri: \"data:audio/mpeg;base64,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oZhPlIzmqumsB3DiLeRKNVdWvnuMUSamHvFQOGmE63GDEP+rk1IYMcylLNY6cFpJho6LnUd4K3hkaqPAK/vp11Zjt6FqBQFsActSRIAQkL01Wd8P4wjrlJudKeUSoYpjlVpZooJSTobZOn1qa8Q7x6nP2OHWdr+Cgl0f/9gjDlQ6kn+TPSmXTgoOgrvDZiz0KemGqiV4f7/5a+2Q2f/7UsTdgArUiVmnpOzRbSTnqYMKILqhytQoOBVwNEAJ6hcUXj5yiOmIpxus5cVaaMm4U6tPcfqIJcozJmsUVRnCsOw58SD6iXUTQzf//t/VErPkAgJpU9F3FTqCs8tyVJpHkUZidYKt1NeauyvNnWswg8rqD9VMQU1FMy4xMDBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUjQUVjC/lo4kwDyc+s9q12nrSqPo9DslU2qjPQ2US5SlQztM5cqP9Hl//tSxOKACtUJN0yMssFnEWb09IpQblyoZubf6sWb/bUqGcvmM9QE5epUMVjPmMpvpAXUrKVHqUsxjczsZyiWylCsGFGo/QwMxwpMQU1FMy4xMDBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVX/+1LE6AALfK01p5hywXETJSmHjHhVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVf/7UsTQg8vBfQ4MMEPIAAA0gAAABFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV\",\n  duration: 0.952,\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.952,
    "format": "mp3",
    "sizeKb": 8,
    "license": "CC0",
    "tags": [
      "voiceover",
      "pack",
      "male",
      "time",
      "over"
    ],
    "keywords": [
      "voice",
      "male",
      "time over",
      "expired",
      "timeout",
      "end",
      "finish",
      "game",
      "warning",
      "urgent",
      "critical",
      "deadline",
      "audio",
      "feedback",
      "negative",
      "loss",
      "challenge",
      "round",
      "conclusion",
      "finality",
      "urgent"
    ]
  },
  "categories": [
    "voiceover"
  ]
}