{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "cards-pack-open-1",
  "type": "registry:block",
  "title": "Cards Pack Open 1",
  "author": "Kenney <https://kenney.nl>",
  "description": "A distinct ripping or tearing sound indicating the opening of a virtual card pack, often used for revealing new items.",
  "files": [
    {
      "path": "registry/soundcn/sounds/cards-pack-open-1/cards-pack-open-1.ts",
      "content": "import type { SoundAsset } from \"@/lib/sound-types\";\n\nexport const cardsPackOpen1Sound: SoundAsset = {\n  name: \"cards-pack-open-1\",\n  dataUri: \"data:audio/mpeg;base64,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\",\n  duration: 0.937,\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.937,
    "format": "mp3",
    "sizeKb": 8,
    "license": "CC0",
    "tags": [
      "cards",
      "pack",
      "open",
      "1"
    ],
    "keywords": [
      "cards",
      "pack",
      "open",
      "reveal",
      "unbox",
      "game",
      "ui",
      "distinct",
      "ripping",
      "tearing",
      "new",
      "item",
      "reward",
      "discovery",
      "feedback",
      "start",
      "engage",
      "surprise",
      "loot",
      "collectible",
      "action"
    ]
  },
  "categories": [
    "cards"
  ]
}