Lab/wavesurfer.js Showcase

オーディオUI・ショーケース公開中2026

音声波形ライブラリ wavesurfer.js の実力を、実際に触って確かめる1ページのショーケース。波形はすべて本物のWeb Audioで、クリック・ドラッグ・録音まで動きます。

サイトを開く
wavesurfer.js ショーケース(波形で魅せるWebオーディオ)

Screenshots

wavesurfer.js ショーケース(波形で魅せるWebオーディオ) スクリーンショット 1
wavesurfer.js ショーケース(波形で魅せるWebオーディオ) スクリーンショット 2

Overview

概要

wavesurfer.jsは、Web Audio APIの上にCanvas波形描画とプラグイン群を載せたオープンソースのオーディオUIライブラリです。本サイトはその『何ができるか』を読むのではなく体感してもらうことを狙い、リージョン・タイムコメント・スペクトログラム・Web Audio EQ・エンベロープ・ズーム+ミニマップ・描画スタイル・録音という8つのデモを、スタジオ調の暗いトーンでまとめています。再生される音源はすべてプログラムで合成したロイヤリティフリー素材です。

How to use

遊び方・使い方

上から順に各セクションのデモを触れます。波形上をドラッグして区間(リージョン)を作る、再生位置にタイムコメントのピンを立てる、スペクトログラムのスケール(Mel/Log/Linear)を切り替える、5バンドEQのフェーダーを動かして音色とスペクトラムの変化を見る、音量カーブ(エンベロープ)をドラッグで編集する、ホイール/ピンチでズームしてミニマップで俯瞰する、同じ音源を6種の見た目で見比べる、マイクからライブ録音して再生・保存する——いずれもその場で動作します。ヒーローのプレイヤーは波形をフォーカスしてキーボード(Space/矢印)でも操作できます。

Tech stack

技術スタック

wavesurfer.js 7Web Audio APINext.js 16React 19TypeScriptTailwind CSS v4

Next.js 16(App Router)上で wavesurfer.js 7.12 と公式プラグイン(regions/spectrogram/timeline/minimap/hover/zoom/envelope/record)を利用。EQデモはwavesurferのmedia要素をcreateMediaElementSource→BiquadFilter5段→AnalyserNode→destinationに接続し、フィルタ後のスペクトラムをcanvasにライブ描画します。波形はCanvasGradientで着色し、各デモはブラウザ専用処理をuseEffect内に閉じてSSR(静的生成)と両立させています。

Highlights

工夫した点

  • wavesurferのインスタンス生成・イベント購読・破棄を共通フックに集約し、Strict Modeの二重マウントやdestroy時のAbortErrorを安全に処理
  • デモが多いため各wavesurferをIntersectionObserverで遅延マウントし、初回ロードで十数個の音源が一斉にデコードされるのを回避(スケルトンで高さ予約しレイアウトシフトも抑制)
  • スペクトログラムのデコード既定sampleRate(8000Hz/Nyquist4000)で生じる高域の空白帯を、16kHzデコードに上げて解消。スケール/配色の切替はプラグインのみ差し替えて再デコードのちらつきを回避

To improve

改善したい点

  • トラック切替や再生速度・音量が一部のデモに限られ、全デモ共通のトランスポートUIには未統一
  • ピーク事前計算(peaks)を渡せば描画パフォーマンスをさらに削減できる余地
  • リージョンのドラッグ作成色のローテーションなど細部の磨き込み

What's next

今後の展望

  • マルチトラック・ミキサーや波形からのAnalyserNode連携ビジュアライザの追加
  • 波形クリックでのコメント編集・共有リンク化など実用UIへの発展
  • ピーク事前計算によるデコードレス描画の導入

Category

音楽・サウンド

Genre

オーディオUI・ショーケース

Year

2026

Status

公開中