{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "voiceover-pack-male-10",
  "type": "registry:block",
  "title": "Voiceover Pack Male 10",
  "author": "Kenney <https://kenney.nl>",
  "description": "A male voiceover stating \"ten\", ideal for countdowns, numerical selections, or game round announcements.",
  "files": [
    {
      "path": "registry/soundcn/sounds/voiceover-pack-male-10/voiceover-pack-male-10.ts",
      "content": "import type { SoundAsset } from \"@/lib/sound-types\";\n\nexport const voiceoverPackMale10Sound: SoundAsset = {\n  name: \"voiceover-pack-male-10\",\n  dataUri: \"data:audio/mpeg;base64,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\",\n  duration: 0.672,\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.672,
    "format": "mp3",
    "sizeKb": 6,
    "license": "CC0",
    "tags": [
      "voiceover",
      "pack",
      "male",
      "10"
    ],
    "keywords": [
      "voice",
      "male",
      "number",
      "ten",
      "countdown",
      "game",
      "round",
      "selection",
      "instructional",
      "audio",
      "confirmation",
      "numeric",
      "clear",
      "direct",
      "informative",
      "short",
      "precise",
      "neutral",
      "sequential",
      "prompt"
    ]
  },
  "categories": [
    "voiceover"
  ]
}