Waveform
The main waveform visualization component that uses theWaveformPlaylistProvider context. Composes PlaylistVisualization (waveform + tracks) and PlaylistAnnotationList (annotation text list).
Package: @waveform-playlist/browser
Requires: WaveformPlaylistProvider context
Props
Custom render function for track controls panel. Receives the track index.
Custom render function for timescale timestamps. Receives time in milliseconds and pixel position.
Custom playhead render function. Receives position (pixels) and color from theme.
Action controls to show on each annotation item (e.g., delete, split). Only rendered when annotations are editable.
Configuration options for the annotation list behavior.
Height in pixels for the annotation text list below the waveform.
Custom render function for annotation items in the text list. Use this to completely customize how each annotation is displayed.
Custom function to generate the label shown on annotation boxes in the waveform. Receives the annotation data and its index, returns a string label. Default: annotation.id
Where to position the active annotation when auto-scrolling.
Which scrollable containers to scroll: ‘nearest’ (only the annotation list) or ‘all’ (including viewport).
Additional CSS class name.
Show headers on clips for visual organization.
Enable dragging/trimming interactions on clips (requires @dnd-kit setup).
Show fade in/out overlays on clips.
Enable mobile-optimized touch interactions. When true, increases touch target sizes for clip boundaries. Use with
useDragSensors({ touchOptimized: true }) for best results.Callback when a track’s close button is clicked. Only renders close button when provided.
Live recording state for real-time waveform preview.
Usage
MediaElementWaveform
Simplified waveform component for theMediaElementPlaylistProvider context. A stripped-down version that works with the MediaElement context for single-track visualization with annotations.
Package: @waveform-playlist/browser
Requires: MediaElementPlaylistProvider context
Use case: Single track visualization, click to seek, annotation display and click-to-play, playhead animation. For multi-track editing, use the full Waveform component.
Props
Height in pixels for the annotation text list.
Custom function to generate the label shown on annotation boxes.
Custom render function for annotation items in the text list. When provided, completely replaces the default annotation item rendering. Use this to customize the appearance of each annotation (e.g., add furigana).
Whether annotation boundaries can be edited by dragging.
Whether dragging one annotation boundary also moves the adjacent annotation’s boundary.
Callback when annotations are updated (e.g., boundaries dragged). Called with the full updated annotations array.
Where to position the active annotation when auto-scrolling.
Which scrollable containers to scroll: ‘nearest’ (only the annotation list) or ‘all’ (including viewport).
Additional CSS class name.
Usage
PlaylistVisualization
Standalone playlist visualization component (WebAudio version). Renders the waveform tracks, timescale, annotation boxes, selection, playhead, loop regions, and track controls — everything inside<Playlist> plus wrapping providers.
Package: @waveform-playlist/browser
Requires: WaveformPlaylistProvider context
Note: Does NOT render the annotation text list. Pair with PlaylistAnnotationList for a full annotation editing UI, or use the Waveform component which includes both.
Props
Accepts the same props asWaveform except for annotation list-specific props (annotationTextHeight, renderAnnotationItem, scrollActivePosition, scrollActiveContainer).
Custom render function for track controls panel.
Custom render function for timescale timestamps.
Custom playhead render function.
Action controls for annotations.
Custom function to generate annotation box labels.
Additional CSS class name.
Show headers on clips.
Enable dragging/trimming interactions on clips.
Show fade in/out overlays.
Enable mobile-optimized touch interactions.
Callback when track close button is clicked.
Live recording state for real-time waveform preview.