LiveWaveform() — ui Function Reference
Architecture documentation for the LiveWaveform() function in elevenlabs.tsx from the ui codebase.
Entity Profile
Dependency Diagram
graph TD 003723b7_1514_3611_09c0_2da10b5dc17a["LiveWaveform()"] a1a6ebaf_3f49_5bb2_b404_b9f06dce2cab["elevenlabs.tsx"] 003723b7_1514_3611_09c0_2da10b5dc17a -->|defined in| a1a6ebaf_3f49_5bb2_b404_b9f06dce2cab style 003723b7_1514_3611_09c0_2da10b5dc17a fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
apps/v4/registry/bases/base/blocks/elevenlabs.tsx lines 689–1155
export const LiveWaveform = ({
active = false,
processing = false,
deviceId,
barWidth = 3,
barGap = 1,
barRadius = 1.5,
barColor,
fadeEdges = true,
fadeWidth = 24,
barHeight: baseBarHeight = 4,
height = 64,
sensitivity = 1,
smoothingTimeConstant = 0.8,
fftSize = 256,
historySize = 60,
updateRate = 30,
mode = "static",
onError,
onStreamReady,
onStreamEnd,
className,
...props
}: LiveWaveformProps) => {
const canvasRef = useRef<HTMLCanvasElement>(null)
const containerRef = useRef<HTMLDivElement>(null)
const historyRef = useRef<number[]>([])
const analyserRef = useRef<AnalyserNode | null>(null)
const audioContextRef = useRef<AudioContext | null>(null)
const streamRef = useRef<MediaStream | null>(null)
const animationRef = useRef<number>(0)
const lastUpdateRef = useRef<number>(0)
const processingAnimationRef = useRef<number | null>(null)
const lastActiveDataRef = useRef<number[]>([])
const transitionProgressRef = useRef(0)
const staticBarsRef = useRef<number[]>([])
const needsRedrawRef = useRef(true)
const gradientCacheRef = useRef<CanvasGradient | null>(null)
const lastWidthRef = useRef(0)
const heightStyle = typeof height === "number" ? `${height}px` : height
// Handle canvas resizing
useEffect(() => {
const canvas = canvasRef.current
const container = containerRef.current
if (!canvas || !container) return
const resizeObserver = new ResizeObserver(() => {
const rect = container.getBoundingClientRect()
const dpr = window.devicePixelRatio || 1
canvas.width = rect.width * dpr
canvas.height = rect.height * dpr
canvas.style.width = `${rect.width}px`
canvas.style.height = `${rect.height}px`
const ctx = canvas.getContext("2d")
if (ctx) {
ctx.scale(dpr, dpr)
}
gradientCacheRef.current = null
lastWidthRef.current = rect.width
needsRedrawRef.current = true
})
resizeObserver.observe(container)
return () => resizeObserver.disconnect()
}, [])
useEffect(() => {
if (processing && !active) {
let time = 0
transitionProgressRef.current = 0
const animateProcessing = () => {
time += 0.03
transitionProgressRef.current = Math.min(
1,
transitionProgressRef.current + 0.02
)
const processingData = []
const barCount = Math.floor(
(containerRef.current?.getBoundingClientRect().width || 200) /
(barWidth + barGap)
)
if (mode === "static") {
const halfCount = Math.floor(barCount / 2)
for (let i = 0; i < barCount; i++) {
Domain
Subdomains
Source
Frequently Asked Questions
What does LiveWaveform() do?
LiveWaveform() is a function in the ui codebase, defined in apps/v4/registry/bases/base/blocks/elevenlabs.tsx.
Where is LiveWaveform() defined?
LiveWaveform() is defined in apps/v4/registry/bases/base/blocks/elevenlabs.tsx at line 689.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free