BarVisualizerComponent() — ui Function Reference
Architecture documentation for the BarVisualizerComponent() function in elevenlabs.tsx from the ui codebase.
Entity Profile
Dependency Diagram
graph TD 4f0ce0c3_b28f_faad_b08d_1c0dda7f7918["BarVisualizerComponent()"] 140880de_8350_c565_0d8f_48f12ee18f06["elevenlabs.tsx"] 4f0ce0c3_b28f_faad_b08d_1c0dda7f7918 -->|defined in| 140880de_8350_c565_0d8f_48f12ee18f06 309376d6_42d7_5ee3_cee2_ca32001fcef1["useMultibandVolume()"] 4f0ce0c3_b28f_faad_b08d_1c0dda7f7918 -->|calls| 309376d6_42d7_5ee3_cee2_ca32001fcef1 99e32cfe_6579_f8b1_789e_99248441897b["useBarAnimator()"] 4f0ce0c3_b28f_faad_b08d_1c0dda7f7918 -->|calls| 99e32cfe_6579_f8b1_789e_99248441897b style 4f0ce0c3_b28f_faad_b08d_1c0dda7f7918 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
apps/v4/registry/bases/radix/blocks/elevenlabs.tsx lines 480–619
(
{
state,
barCount = 15,
mediaStream,
minHeight = 20,
maxHeight = 100,
demo = false,
centerAlign = false,
className,
style,
...props
},
ref
) => {
// Audio processing
const realVolumeBands = useMultibandVolume(mediaStream, {
bands: barCount,
loPass: 100,
hiPass: 200,
})
// Generate fake volume data for demo mode using refs to avoid state updates
const fakeVolumeBandsRef = useRef<number[]>(new Array(barCount).fill(0.2))
const [fakeVolumeBands, setFakeVolumeBands] = useState<number[]>(() =>
new Array(barCount).fill(0.2)
)
const fakeAnimationRef = useRef<number | undefined>(undefined)
// Animate fake volume bands for speaking and listening states
useEffect(() => {
if (!demo) return
if (state !== "speaking" && state !== "listening") {
const bands = new Array(barCount).fill(0.2)
fakeVolumeBandsRef.current = bands
setTimeout(() => {
setFakeVolumeBands(bands)
}, 0)
return
}
let lastUpdate = 0
const updateInterval = 50
const startTime = Date.now() / 1000
const updateFakeVolume = (timestamp: number) => {
if (timestamp - lastUpdate >= updateInterval) {
const time = Date.now() / 1000 - startTime
const newBands = new Array(barCount)
for (let i = 0; i < barCount; i++) {
const waveOffset = i * 0.5
const baseVolume = Math.sin(time * 2 + waveOffset) * 0.3 + 0.5
const randomNoise = Math.random() * 0.2
newBands[i] = Math.max(0.1, Math.min(1, baseVolume + randomNoise))
}
// Only update if values changed significantly
let hasChanged = false
for (let i = 0; i < barCount; i++) {
if (Math.abs(newBands[i] - fakeVolumeBandsRef.current[i]) > 0.05) {
hasChanged = true
break
}
}
if (hasChanged) {
fakeVolumeBandsRef.current = newBands
setFakeVolumeBands(newBands)
}
lastUpdate = timestamp
}
fakeAnimationRef.current = requestAnimationFrame(updateFakeVolume)
}
fakeAnimationRef.current = requestAnimationFrame(updateFakeVolume)
return () => {
Domain
Subdomains
Source
Frequently Asked Questions
What does BarVisualizerComponent() do?
BarVisualizerComponent() is a function in the ui codebase, defined in apps/v4/registry/bases/radix/blocks/elevenlabs.tsx.
Where is BarVisualizerComponent() defined?
BarVisualizerComponent() is defined in apps/v4/registry/bases/radix/blocks/elevenlabs.tsx at line 480.
What does BarVisualizerComponent() call?
BarVisualizerComponent() calls 2 function(s): useBarAnimator, useMultibandVolume.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free