Home / Function/ BarVisualizerComponent() — ui Function Reference

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 () => {

Subdomains

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