{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "jingles-steel-16",
  "type": "registry:block",
  "title": "Jingles Steel 16",
  "author": "Kenney <https://kenney.nl>",
  "description": "A clean, bright steel jingle that provides clear positive feedback, perfect for successful transactions or minor achievements.",
  "files": [
    {
      "path": "registry/soundcn/sounds/jingles-steel-16/jingles-steel-16.ts",
      "content": "import type { SoundAsset } from \"@/lib/sound-types\";\n\nexport const jinglesSteel16Sound: SoundAsset = {\n  name: \"jingles-steel-16\",\n  dataUri: \"data:audio/mpeg;base64,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pdL/5cRNzxmbrN1G6lJOp0a0Vo//80SMGQZM0MzdZuXFJ4OkWiUS//4ZDH/6ywANWsFgBAaDTSoVDLSpKzUtuJqAiQ0Ig4DQ8NCIBA1+JVnf/nhE/6zpLEqw1+IlHvxL50r+o8IvI1neJVhpTEFNRTMuMTAwVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVf/7UsTsggvodRYtmHJBUQlkXrTwAFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//tSxPCAFsV1I5mpgAD2hZyLkjAAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVU=\",\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",
      "16"
    ],
    "keywords": [
      "jingle",
      "steel",
      "clean",
      "bright",
      "positive",
      "success",
      "feedback",
      "notification",
      "transaction",
      "achievement",
      "chime",
      "reward",
      "game ui",
      "confirmation",
      "metallic",
      "short",
      "satisfying",
      "alert",
      "complete"
    ]
  },
  "categories": [
    "jingles"
  ]
}