• Blog
  • Docs
  • Pricing
  • We’re hiring!
Log inSign up
drewmcdonald

drewmcdonald

promptCompare

Public
Like
promptCompare
Home
Code
7
.claude
3
backend
2
docs
1
frontend
4
shared
.mcp.json
deno.json
Environment variables
2
Branches
1
Pull requests
Remixes
History
Val Town is a collaborative website to build and scale JavaScript apps.
Deploy APIs, crons, & store data – all from the browser, and deployed in milliseconds.
Sign up now
Code
/
.claude
/
skills
/
ai-elements
/
references
/
audio-player.md
Code
/
.claude
/
skills
/
ai-elements
/
references
/
audio-player.md
Search
…
Viewing readonly version of main branch: v145
View latest version
audio-player.md

Audio Player

A composable audio player component built on media-chrome, with shadcn styling and flexible controls.

The AudioPlayer component provides a flexible and customizable audio playback interface built on top of media-chrome. It features a composable architecture that allows you to build audio experiences with custom controls, metadata display, and seamless integration with AI-generated audio content.

See scripts/audio-player.tsx for this example.

Installation

npx ai-elements@latest add audio-player

Features

  • Built on media-chrome for reliable audio playback
  • Fully composable architecture with granular control components
  • ButtonGroup integration for cohesive control layout
  • Individual control components (play, seek, volume, etc.)
  • Flexible layout with customizable control bars
  • CSS custom properties for deep theming
  • Shadcn/ui Button component styling
  • Responsive design that works across devices
  • Full TypeScript support with proper types for all components

Variants

AI SDK Speech Result

The AudioPlayer component can be used to play audio from an AI SDK Speech Result.

See scripts/audio-player.tsx for this example.

Remote Audio

The AudioPlayer component can be used to play remote audio files.

See scripts/audio-player-remote.tsx for this example.

Props

<AudioPlayer />

Root MediaController component. Accepts all MediaController props except audio (which is set to true by default).

PropTypeDefaultDescription
styleCSSProperties-Custom CSS properties can be passed to override media-chrome theming variables.
...propsOmit<React.ComponentProps<typeof MediaController>,-Any other props are spread to the MediaController component.

<AudioPlayerElement />

The audio element that contains the media source. Accepts either a remote URL or AI SDK Speech Result data.

PropTypeDefaultDescription
srcstring-The URL of the audio file to play (for remote audio).
dataSpeechResult[-AI SDK Speech Result audio data with base64 encoding (for AI-generated audio).
...propsOmit<React.ComponentProps<-Any other props are spread to the audio element (excluding src when using data).

<AudioPlayerControlBar />

Container for control buttons, wraps children in a ButtonGroup.

PropTypeDefaultDescription
...propsReact.ComponentProps<typeof MediaControlBar>-Any other props are spread to the MediaControlBar component.

<AudioPlayerPlayButton />

Play/pause button wrapped in a shadcn Button component.

PropTypeDefaultDescription
...propsReact.ComponentProps<typeof MediaPlayButton>-Any other props are spread to the MediaPlayButton component.

<AudioPlayerSeekBackwardButton />

Seek backward button wrapped in a shadcn Button component.

PropTypeDefaultDescription
seekOffsetnumber10The number of seconds to seek backward.
...propsReact.ComponentProps<typeof MediaSeekBackwardButton>-Any other props are spread to the MediaSeekBackwardButton component.

<AudioPlayerSeekForwardButton />

Seek forward button wrapped in a shadcn Button component.

PropTypeDefaultDescription
seekOffsetnumber10The number of seconds to seek forward.
...propsReact.ComponentProps<typeof MediaSeekForwardButton>-Any other props are spread to the MediaSeekForwardButton component.

<AudioPlayerTimeDisplay />

Displays the current playback time, wrapped in ButtonGroupText.

PropTypeDefaultDescription
...propsReact.ComponentProps<typeof MediaTimeDisplay>-Any other props are spread to the MediaTimeDisplay component.

<AudioPlayerTimeRange />

Seek slider for controlling playback position, wrapped in ButtonGroupText.

PropTypeDefaultDescription
...propsReact.ComponentProps<typeof MediaTimeRange>-Any other props are spread to the MediaTimeRange component.

<AudioPlayerDurationDisplay />

Displays the total duration of the audio, wrapped in ButtonGroupText.

PropTypeDefaultDescription
...propsReact.ComponentProps<typeof MediaDurationDisplay>-Any other props are spread to the MediaDurationDisplay component.

<AudioPlayerMuteButton />

Mute/unmute button, wrapped in ButtonGroupText.

PropTypeDefaultDescription
...propsReact.ComponentProps<typeof MediaMuteButton>-Any other props are spread to the MediaMuteButton component.

<AudioPlayerVolumeRange />

Volume slider control, wrapped in ButtonGroupText.

PropTypeDefaultDescription
...propsReact.ComponentProps<typeof MediaVolumeRange>-Any other props are spread to the MediaVolumeRange component.
FeaturesVersion controlCode intelligenceCLIMCP
Use cases
TeamsAI agentsSlackGTM
DocsShowcaseTemplatesNewestTrendingAPI examplesNPM packages
PricingNewsletterBlogAboutCareers
We’re hiring!
Brandhi@val.townStatus
X (Twitter)
Discord community
GitHub discussions
YouTube channel
Bluesky
Open Source Pledge
Terms of usePrivacy policyAbuse contact
© 2026 Val Town, Inc.