{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "power-up-5",
  "type": "registry:block",
  "title": "Power Up 5",
  "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-5/power-up-5.ts",
      "content": "import type { SoundAsset } from \"@/lib/sound-types\";\n\nexport const powerUp5Sound: SoundAsset = {\n  name: \"power-up-5\",\n  dataUri: \"data:audio/mpeg;base64,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4ByILlHEv/+sfwhAh6RJuml+4/wAACzaAnsPXYyqWuy1/zWLCvOxTvpf155jVEZZH5ajhuK0Xatrf/+ZIomYQXDTy0lokVBhqP////qS0v1I//3///////zg1imMqmaAYcCSFZT//8jQSKPImlmJqqyAAAggdgSw2MyL//tSxAcAC52NTeoCnkF9sOm4vdJBplxNMvPQQ5mi63M6xnhkDEZUAm+AW1IsNYDloB7b2/9alqSYvgDAQWdkIXi4iYgGiQRCVL//0P/9/t////jnmC0EwMBLElJf//2cNtMTzrLVF1bgBBg4C9p1dILsemyZ4NEmIZM6NgMQc6IVjww9hojQNoRIOls7//UzpFEZwARwBYcLjSMbACCRUWT////////////q////UdGUFwGY6AhDgbE4H3Nj7f/84GQlqmiIeJlgAMAeyBkjKg7/+1LEBoALAV9t57TwUX4d8TWW4jKGCAwqORPoJGMyABNgEYoiIip9zce1MKEp0Ofn2//6sD4sn///CoBZIaMeNzgeC+0yelvQcGgkDcme9T6mjd///////9L2BAnE4MW////gCgD8AczlFDTTs/GJXHY1IZG/jc1tKIFmzFzPtkRFKA/3/hsBIC6bGhfq//X////LHOkr1LtNepK9S7TXrdS7M2pyXyibrTsPw3KHjdJqLJwI4MgXXVKq/////upmaWVTMgKCFQoRJsNMIgqgTP/7UsQIgAvZXW/k6mxRR6ur/BxMs9IYKjSOo/pZEVOnyLKa1jE1RoqI4rUElcjgGNGx9To//pFAtsj///84izomSnuip//XrRUsawGXgsBcKn/////62MnRUlUlRNTI4TNE1BmiHUAIALBQGuR5VtyYrDbeS93F74QtxhgBmbMblNXVZKZH6q+mBgOS7eg/9SzwW6G+iOc////lIx////6RMgPuHulIyR////////UZGx1AyS0Aq5tQABAtGAjy/kK5Vghn9SPt0gtmDvAEIBdM//tSxA4ASgjzT+Bug4EoHejwDdSzTBcHFY1etanR0D6JiHCAB2EYZqXu3/WovJot///9L///+pZgL8DCdwDk4+RYTz////nmh0AW1gBBBuB6aAoddaTO8rmGgwJCAUKI52FMWtcqM02OSNqpkNwmS8QIbwGN0WCIWDiJ02atX//////////1HSTCBLgKN4MQg4AjFUBZ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\",\n  duration: 0.466,\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.466,
    "format": "mp3",
    "sizeKb": 4,
    "license": "CC0",
    "tags": [
      "power",
      "up",
      "5"
    ],
    "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"
  ]
}