{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "scroll-005",
  "type": "registry:block",
  "title": "Scroll 005",
  "author": "Kenney <https://kenney.nl>",
  "description": "A smooth, continuous scrolling sound effect, ideal for indicating content navigation, a list moving, or a wheel spinning within a UI.",
  "files": [
    {
      "path": "registry/soundcn/sounds/scroll-005/scroll-005.ts",
      "content": "import type { SoundAsset } from \"@/lib/sound-types\";\n\nexport const scroll005Sound: SoundAsset = {\n  name: \"scroll-005\",\n  dataUri: \"data:audio/mpeg;base64,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\",\n  duration: 1.000,\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": 1,
    "format": "mp3",
    "sizeKb": 8,
    "license": "CC0",
    "tags": [
      "scroll",
      "005"
    ],
    "keywords": [
      "scroll",
      "navigation",
      "list",
      "wheel",
      "continuous",
      "smooth",
      "ui element",
      "feedback",
      "browsing",
      "menu",
      "selection",
      "content",
      "movement",
      "background",
      "subtle",
      "long",
      "interactive",
      "game ui",
      "transition"
    ]
  },
  "categories": [
    "scroll"
  ]
}