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