{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "orc-male-yes-04",
  "type": "registry:block",
  "title": "Orc Male Yes 04",
  "author": "Kenney <https://kenney.nl>",
  "description": "Orc Male Yes 04 sound effect.",
  "files": [
    {
      "path": "registry/soundcn/sounds/orc-male-yes-04/orc-male-yes-04.ts",
      "content": "import type { SoundAsset } from \"@/lib/sound-types\";\n\nexport const orcMaleYes04Sound: SoundAsset = {\n  name: \"orc-male-yes-04\",\n  dataUri: \"data:audio/mpeg;base64,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\",\n  duration: 0.482,\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.482,
    "format": "mp3",
    "sizeKb": 4,
    "license": "CC0",
    "tags": [
      "orc",
      "male",
      "yes",
      "04"
    ]
  },
  "categories": [
    "warcraft",
    "voice"
  ]
}