Skip to content

feat: audio visualizer configuration#316

Merged
thomasyuill-livekit merged 7 commits intomainfrom
thomyuill/lk-3566-extend-agent-starter-react-to-enable-audio-visualizers
Feb 13, 2026
Merged

feat: audio visualizer configuration#316
thomasyuill-livekit merged 7 commits intomainfrom
thomyuill/lk-3566-extend-agent-starter-react-to-enable-audio-visualizers

Conversation

@thomasyuill-livekit
Copy link
Contributor

@thomasyuill-livekit thomasyuill-livekit commented Jan 27, 2026

Summary

Resolves https://linear.app/livekit/issue/LK-3566/extend-agent-starter-react-to-enable-audio-visualizers-configuration

This PR significantly extends the agent-starter-react example by adding audio visualizer configuration capabilities.

Key Features

  • State-aware visualizations (idle, listening, thinking, speaking, etc.)
  • Real-time audio volume responsiveness
  • Animated transitions between states
  • configurable appearance and behavior
  • WebGL-based rendering for smooth performance

Configuration Updates

Added 8 new config options to app-config.ts:

  • audioVisualizerType?: 'bar' | 'wave' | 'grid' | 'radial' | 'aura';
  • audioVisualizerColor?: #${string};
  • audioVisualizerColorDark?: #${string};
  • audioVisualizerBarCount?: number;
  • audioVisualizerGridRowCount?: number;
  • audioVisualizerGridColumnCount?: number;
  • audioVisualizerRadialBarCount?: number;
  • audioVisualizerRadialRadius?: number;
  • audioVisualizerAuraColorShift?: number;
  • audioVisualizerWaveLineWidth?: number;

New Components

  • AudioVisualizer component
    • Wrapper that switches between visualizer types based on config
  • AgentAudioVisualizerAura
  • AgentAudioVisualizerWave
  • ReactShaderToy

Component Updates

  • Installed the latest components from our Agents UI shadcn registry

Screenshots

localhost_3000_(4_3) localhost_3000_(4_3) (1) localhost_3000_(4_3) (3) localhost_3000_(4_3) (5)

@vercel
Copy link

vercel bot commented Jan 27, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
sandbox-voice-assistant Ready Ready Preview Feb 13, 2026 4:28pm

Request Review

@thomasyuill-livekit thomasyuill-livekit force-pushed the thomyuill/lk-3566-extend-agent-starter-react-to-enable-audio-visualizers branch from 4fc7f63 to 9bb80b0 Compare February 11, 2026 14:56
@thomasyuill-livekit thomasyuill-livekit force-pushed the thomyuill/lk-3566-extend-agent-starter-react-to-enable-audio-visualizers branch from 9048af5 to f463bc0 Compare February 11, 2026 15:38
@thomasyuill-livekit thomasyuill-livekit force-pushed the thomyuill/lk-3566-extend-agent-starter-react-to-enable-audio-visualizers branch from f463bc0 to c23dc3c Compare February 11, 2026 15:59
@thomasyuill-livekit thomasyuill-livekit marked this pull request as ready for review February 11, 2026 16:52
@thomasyuill-livekit thomasyuill-livekit force-pushed the thomyuill/lk-3566-extend-agent-starter-react-to-enable-audio-visualizers branch from c23dc3c to 36e66c0 Compare February 11, 2026 17:46
@thomasyuill-livekit thomasyuill-livekit force-pushed the thomyuill/lk-3566-extend-agent-starter-react-to-enable-audio-visualizers branch from 36e66c0 to fcef900 Compare February 11, 2026 17:56
@thomasyuill-livekit
Copy link
Contributor Author

cc @rektdeckard for awareness on upcoming Agent Builder Appearance configuration (specifically for the sandbox)

@thomasyuill-livekit thomasyuill-livekit force-pushed the thomyuill/lk-3566-extend-agent-starter-react-to-enable-audio-visualizers branch from fcef900 to d827b2c Compare February 12, 2026 01:55
@codeSTACKr
Copy link

@thomasyuill-livekit is the grid visualizer supposed to match the audioVisualizerColor selected?

Copy link
Contributor

@bcherry bcherry left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i think this is great - but also (maybe as a follow-on is fine) we need to update the readme to describe what all this stuff is and how to use it

@thomasyuill-livekit
Copy link
Contributor Author

we need to update the readme

ah good point
I'll include that in this PR

just resolving the grid audioVisualizerColor issue atm
just need to release a fix to the registry components first for that to happen

@thomasyuill-livekit thomasyuill-livekit force-pushed the thomyuill/lk-3566-extend-agent-starter-react-to-enable-audio-visualizers branch from d827b2c to 7849339 Compare February 13, 2026 02:34
@thomasyuill-livekit
Copy link
Contributor Author

thomasyuill-livekit commented Feb 13, 2026

grid audioVisualizerColor issue resolved
README updated

cc @codeSTACKr @bcherry

@thomasyuill-livekit thomasyuill-livekit force-pushed the thomyuill/lk-3566-extend-agent-starter-react-to-enable-audio-visualizers branch from 57ce7e1 to 0fe373c Compare February 13, 2026 16:27
Comment on lines +17 to +26
audioVisualizerType?: 'bar' | 'wave' | 'grid' | 'radial' | 'aura';
audioVisualizerColor?: `#${string}`;
audioVisualizerColorDark?: `#${string}`;
audioVisualizerBarCount?: number;
audioVisualizerGridRowCount?: number;
audioVisualizerGridColumnCount?: number;
audioVisualizerRadialBarCount?: number;
audioVisualizerRadialRadius?: number;
audioVisualizerAuraColorShift?: number;
audioVisualizerWaveLineWidth?: number;
Copy link
Contributor

@1egoman 1egoman Feb 13, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nitpick: It might be nice to set this up so that the typescript logic will validate that all fields which are required for a certain audioVisualizerType value are non optional via something directionally like the below:

type Common = {
  audioVisualizerColor?: `#${string}`;
  audioVisualizerColorDark?: `#${string}`;
  audioVisualizerBarCount: number;
  audioVisualizerGridRowCount?: number;
  audioVisualizerGridColumnCount?: number;
  audioVisualizerRadialBarCount?: number;
  audioVisualizerRadialRadius?: number;
  audioVisualizerAuraColorShift?: number;
  audioVisualizerWaveLineWidth?: number;
};

type AudioVisualizerTypeBar = Common & {
  audioVisualizerType: 'bar'
  audioVisualizerBarCount: number;
};

type AudioVisualizerTypeRadial = Common & {
  audioVisualizerType: 'radial';
  audioVisualizerRadialBarCount: number;
  audioVisualizerRadialRadius: number;
};

// etc

type AudioVisualizer = AudioVisualizerTypeBar | AudioVisualizerTypeRadial;
export type AppConfig = AudioVisualizer & {
  // Rest of fields here
};

Then if somebody were configuring this locally they would be sure to have set all the right fields.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thats a great idea

I'm going to do that in the next PR tho so I have some time to test it thoroughly

@thomasyuill-livekit thomasyuill-livekit merged commit 97c2cc3 into main Feb 13, 2026
5 checks passed
@thomasyuill-livekit thomasyuill-livekit deleted the thomyuill/lk-3566-extend-agent-starter-react-to-enable-audio-visualizers branch February 13, 2026 21:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants