High Performance WebAssembly Waveform Renderer
import { initIrontide, Waveform } from 'irontide'; // Initialize the WASM module await initIrontide(); // Create waveform instance const waveform = new Waveform({ container: '#waveform', src: 'audio.mp3', waveColor: '#464340', progressColor: '#e1b728', height: 100, decoder: 'wasm', // 'wasm' (default) or 'web' interact: true, momentum: true, // Enable inertial scrolling (default) onLoading: (progress, stage) => { console.log(`Loading: ${progress}% (${stage})`); }, onReady: (wf) => console.log('Ready!'), onSeek: (time) => console.log('Seeked to:', time), }); // Control playback position waveform.setCurrentTime(30); // 30 seconds // Zoom in/out waveform.zoom(200); // 200 pixels per second // When zoomed in, navigate using: // - Middle-click and drag // - Two-finger swipe on touch // - Mouse wheel / trackpad scroll