This component no longer exists. It was in ondo-ui’s manifest when we first indexed it and is not there now — the registry served its inventory on 2026-08-09 and this item was not on it. The install command below will fail. It is kept here because a tutorial somewhere still tells people to run it.
live-waveform
ondo-ui/live-waveformRemovedComponent
A canvas-based real-time audio waveform visualizer with microphone input and customizable rendering modes.
Install it
npx shadcn@latest add https://ui.ondo.dou.so/r/live-waveform.jsonSource
1"use client"23import * as React from "react"45import { cn } from "@/lib/utils"67export type LiveWaveformProps = React.HTMLAttributes<HTMLDivElement> & {8 active?: boolean9 processing?: boolean10 stream?: MediaStream | null11 deviceId?: string12 barWidth?: number13 barHeight?: number14 barGap?: number15 barRadius?: number16 barColor?: string17 fadeEdges?: boolean18 fadeWidth?: number19 height?: string | number20 sensitivity?: number21 smoothingTimeConstant?: number22 fftSize?: number23 historySize?: number24 updateRate?: number25 mode?: "scrolling" | "static"26 onError?: (error: Error) => void27 onStreamReady?: (stream: MediaStream) => void28 onStreamEnd?: () => void29}3031function prefersReducedMotion() {32 return (33 typeof window !== "undefined" &&34 typeof window.matchMedia === "function" &&35 window.matchMedia("(prefers-reduced-motion: reduce)").matches36 )37}3839export const LiveWaveform = ({40 active = false,41 processing = false,42 stream = null,43 deviceId,44 barWidth = 4,45 barGap = 2,46 barRadius = 2,47 barColor,48 fadeEdges = true,49 fadeWidth = 24,50 barHeight: baseBarHeight = 4,51 height = 64,52 sensitivity = 1,53 smoothingTimeConstant = 0.8,54 fftSize = 256,55 historySize = 60,56 updateRate = 30,57 mode = "static",58 onError,59 onStreamReady,60 onStreamEnd,61 className,62 ...props63}: LiveWaveformProps) => {64 const canvasRef = React.useRef<HTMLCanvasElement>(null)65 const containerRef = React.useRef<HTMLDivElement>(null)66 const historyRef = React.useRef<number[]>([])67 const analyserRef = React.useRef<AnalyserNode | null>(null)68 const audioContextRef = React.useRef<AudioContext | null>(null)69 const streamRef = React.useRef<MediaStream | null>(null)70 const lastUpdateRef = React.useRef<number>(0)71 const lastActiveDataRef = React.useRef<number[]>([])72 const transitionProgressRef = React.useRef(0)73 const staticBarsRef = React.useRef<number[]>([])74 const needsRedrawRef = React.useRef(true)75 const gradientCacheRef = React.useRef<CanvasGradient | null>(null)76 const lastWidthRef = React.useRef(0)77 // Wakes the render loop when it has parked itself in the idle state.78 const wakeRef = React.useRef<(() => void) | null>(null)7980 // Keep the latest callbacks in refs so the microphone effect does not81 // re-acquire the stream every time an inline callback identity changes.82 const onErrorRef = React.useRef(onError)83 const onStreamReadyRef = React.useRef(onStreamReady)84 const onStreamEndRef = React.useRef(onStreamEnd)85// … truncated
What it pulls in
Other registry items
