{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "jingles-steel-10",
  "type": "registry:block",
  "title": "Jingles Steel 10",
  "author": "Kenney <https://kenney.nl>",
  "description": "A bright, short steel jingle sound, ideal for indicating a successful action or small reward in a UI.",
  "files": [
    {
      "path": "registry/soundcn/sounds/jingles-steel-10/jingles-steel-10.ts",
      "content": "import type { SoundAsset } from \"@/lib/sound-types\";\n\nexport const jinglesSteel10Sound: SoundAsset = {\n  name: \"jingles-steel-10\",\n  dataUri: \"data:audio/mpeg;base64,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\",\n  duration: 0.909,\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.909,
    "format": "mp3",
    "sizeKb": 8,
    "license": "CC0",
    "tags": [
      "jingles",
      "steel",
      "10"
    ],
    "keywords": [
      "jingle",
      "steel",
      "chime",
      "success",
      "reward",
      "positive",
      "feedback",
      "notification",
      "alert",
      "achievement",
      "level up",
      "item acquired",
      "satisfying",
      "bright",
      "short",
      "metallic",
      "game ui",
      "confirmation",
      "completion"
    ]
  },
  "categories": [
    "jingles"
  ]
}