Vue3 Waveform
Visualizer
A modular Vue 3 package for wavesurfer.js with individual plugins. Import only what you need for optimal bundle sizes, complete with TypeScript support and modern Vue 3 patterns.
Modular Plugins
Import only what you need
Tree-shaking
Smaller bundle sizes
TypeScript
Full type safety
Key Features
Built with modern Vue 3 patterns and designed for optimal performance. Experience the power of modular audio visualization.
Modular Architecture
Our modular design separates core functionality from plugins, allowing you to import only what you need. This results in smaller bundle sizes and better performance for your applications.
Key Benefits
Code Example
import { useWaveSurfer } from '@meersagor/wavesurfer-vue'
import { useWaveSurferTimeline } from '@meersagor/wavesurfer-vue'
const { waveSurfer } = useWaveSurfer({ containerRef, options })
const { timelinePlugin } = useWaveSurferTimeline({ waveSurfer })Individual Plugins
Choose from 8 carefully crafted plugins that provide specialized functionality. From timeline navigation to audio recording, each plugin is designed to work seamlessly together.
Key Benefits
Code Example
// Available plugins:
// Timeline, Zoom, Minimap, Hover
// Envelope, Spectrogram, Regions, Recorder
const { zoomPlugin } = useWaveSurferZoom({ waveSurfer })
const { regionsPlugin } = useWaveSurferRegions({ waveSurfer })Tree-shaking Friendly
Built with modern bundlers in mind, our package supports tree-shaking out of the box. Unused plugins are automatically excluded, keeping your bundle size minimal.
Key Benefits
Code Example
// Only imports what you use
import { useWaveSurfer } from '@meersagor/wavesurfer-vue'
import { useWaveSurferTimeline } from '@meersagor/wavesurfer-vue'
// Unused plugins are not included in bundleAvailable Plugins
Choose from 8 specialized plugins to enhance your audio visualization experience
Timeline
Time markers and navigation
Zoom
Zoom in/out functionality
Minimap
Overview of entire waveform
Hover
Hover effects and interactions
Envelope
Audio envelope visualization
Spectrogram
Frequency spectrum display
Regions
Audio region management
Recorder
Audio recording functionality
Ready to Get Started?
Start building amazing audio experiences with our modular plugin system
Get Started in Minutes
Install and start using WaveSurfer Vue in your Vue 3 project with just a few commands
Installation
Choose your preferred package manager and install the package
npm install @meersagor/wavesurfer-vueyarn add @meersagor/wavesurfer-vuepnpm add @meersagor/wavesurfer-vuePackage Stats
Community adoption and package information
Basic Usage
Get started with a simple audio player implementation
<script setup lang="ts">
import { ref } from 'vue'
import { useWaveSurfer } from '@meersagor/wavesurfer-vue'
const containerRef = ref<HTMLElement | null>(null)
const { waveSurfer, currentTime, totalDuration, isPlaying } = useWaveSurfer({
containerRef,
options: {
height: 48,
waveColor: '#4F4A85',
progressColor: '#383351',
barWidth: 3,
barGap: 2,
barRadius: 4
}
})
</script>
<template>
<div>
<div ref="containerRef"></div>
<button @click="waveSurfer?.playPause()">
{{ isPlaying ? 'Pause' : 'Play' }}
</button>
</div>
</template>Quick Links
Essential resources to help you get started
Interactive Playground
Experiment with different plugins and configurations. See live code generation and test various WaveSurfer Vue features.
Configuration
Configure plugins, visual settings, and audio behavior
Plugin Selection
Visual Configuration
Audio Configuration
Quick Actions
Use these presets to quickly set up common configurations
Live Demo
See your configuration in action with a live preview
Generated Code
Copy the generated Vue 3 code for your project
<script setup lang="ts">
import { ref } from 'vue'
import { useWaveSurfer } from '@meersagor/wavesurfer-vue'
import { useWaveSurferTimeline } from '@meersagor/wavesurfer-vue'
import { useWaveSurferZoom } from '@meersagor/wavesurfer-vue'
const containerRef = ref<HTMLElement | null>(null)
const options = {
"height": 48,
"waveColor": "#4F4A85",
"progressColor": "#383351",
"barWidth": 3,
"barGap": 2,
"barRadius": 4,
"volume": 0.8,
"autoplay": false,
"loop": false,
"responsive": true,
"fillParent": true
}
const { waveSurfer, currentTime, totalDuration, isPlaying } = useWaveSurfer({
containerRef,
options
})
const { timelinePlugin } = useWaveSurferTimeline({ waveSurfer })
const { zoomPlugin } = useWaveSurferZoom({ waveSurfer })
const formatTime = (seconds: number): string =>
[seconds / 60, seconds % 60]
.map((v) => `0${Math.floor(v)}`.slice(-2))
.join(':')
</script>
<template>
<div>
<div ref="containerRef"></div>
<div class="controls">
<button @click="waveSurfer?.playPause()">
{{ isPlaying ? 'Pause' : 'Play' }}
</button>
</div>
<p>Current Time: {{ formatTime(currentTime) }}</p>
<p>Duration: {{ formatTime(totalDuration) }}</p>
</div>
</template>Configuration Summary
Overview of your current settings and active plugins
Active Plugins (2)
Visual Settings
Audio Settings
Ready to Build Something Amazing?
Start building powerful audio experiences with our modular WaveSurfer Vue components
Why Choose @meersagor/wavesurfer-vue?
A modern, modular approach to audio visualization that gives you the flexibility and performance you need for your Vue 3 applications.
Modular Architecture
Core functionality separated from plugins. Import only what you need for optimal bundle sizes.
Modern Vue 3
Built with Vue 3 Composition API and TypeScript for type safety and modern development patterns.
Multiple Usage Patterns
Flexible usage with core + plugins, standalone plugins, core only, or component patterns.
Rich Plugin Ecosystem
8 specialized plugins for timeline, zoom, minimap, hover, envelope, spectrogram, regions, and recording.
Key Benefits
Bundle Optimization
Tree-shaking ensures only used plugins are included in your final bundle.
Type Safety
Full TypeScript support with comprehensive type definitions.
Flexible Architecture
Choose between composables, components, or standalone plugins.
Performance Features
Lazy Loading
Plugins are loaded only when needed, reducing initial bundle size.
Modular Design
Each plugin is independent and can be used separately or together.
Modern Standards
Built with latest Vue 3 patterns and ES6+ features.
Ready to get started?
Join developers who are already using @meersagor/wavesurfer-vue to build amazing audio experiences.
Package Information
Everything you need to know about @meersagor/wavesurfer-vue
Package Details
@meersagor/wavesurfer-vueVue 3 composables and components for WaveSurfer.js with modular plugin architecture
Installation
Using npm:
npm install @meersagor/wavesurfer-vueUsing yarn:
yarn add @meersagor/wavesurfer-vueKeywords
Package Stats
Dependencies
Ready to install?
Get started with @meersagor/wavesurfer-vue in your Vue 3 project.
Installation GuideContribute to the Ecosystem
Join our community and help improve both the WaveSurfer Vue package and this documentation site. Every contribution, big or small, makes a difference.
Package Contributions
Help improve the @meersagor/wavesurfer-vue package
Bug Reports
Report issues
Feature Requests
Suggest improvements
Code Changes
Submit PRs
Documentation
Improve docs
Stars
Forks
Contributors
Documentation Site
Help improve this documentation website
Content Updates
Improve docs
Code Examples
Add examples
UI/UX Improvements
Enhance design
Bug Fixes
Fix issues
Pages
Examples
Contributors
Join Our Community
Connect with other developers and stay updated with the latest features