{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "power-up-8",
  "type": "registry:block",
  "title": "Power Up 8",
  "author": "Kenney <https://kenney.nl>",
  "description": "A bright, short ascending melody, perfect for indicating a successful action, gaining an item, or a level up in a game.",
  "files": [
    {
      "path": "registry/soundcn/sounds/power-up-8/power-up-8.ts",
      "content": "import type { SoundAsset } from \"@/lib/sound-types\";\n\nexport const powerUp8Sound: SoundAsset = {\n  name: \"power-up-8\",\n  dataUri: \"data:audio/mpeg;base64,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kn0v/9H2PpL/9//ntTY1kbb4exr+fYfP6pMGAlX58rMf7NWMKX9U/uu0VdSY43+vsyOhL5qHfRjv/jpH/iMS/1BaSIASieDzMVamnmt91orGuvqmjlT0lR/+qLbqwEFBkfYysvYyoqsZWMqL9yoqo5forGXZOjlT9JUfq3/ymQ7P/KhymX5gZBQUd/n/+1LEmQJJ6DkjJ5hggTyx4ZDRHvgk01VMQU1FMy4xMDBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUxBTUUzLjEwMFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVf/7UsSng0k5jwQIDPXBLa9axPAJUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//tSxKGDwAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVU=\",\n  duration: 0.596,\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.596,
    "format": "mp3",
    "sizeKb": 5,
    "license": "CC0",
    "tags": [
      "power",
      "up",
      "8"
    ],
    "keywords": [
      "success",
      "gain",
      "achievement",
      "level up",
      "upgrade",
      "item acquired",
      "positive feedback",
      "reward",
      "magical",
      "sparkle",
      "short",
      "bright",
      "chime",
      "fanfare",
      "unlock",
      "quest complete",
      "progress",
      "powerup",
      "boost",
      "game ui"
    ]
  },
  "categories": [
    "power"
  ]
}