Interactive Playground

Experiment with different plugins and configurations. See live code generation and test various WaveSurfer Vue features.

Configuration

1 Active

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

Preview

See your configuration in action with a live preview

00:1502:45
timeline

Generated Code

Vue 3

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'

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 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

Summary

Overview of your current settings and active plugins

Active Plugins (1)

timeline

Visual Settings

Height: 48px
Bar Width: 3px
Bar Gap: 2px
Bar Radius: 4px

Audio Settings

Volume: 80%
Auto-play: No
Loop: No
Responsive: Yes