音楽プレーヤーのコード生成
Web処理はすべてブラウザ内で完結します。データは送信されません
1行に1曲(`タイトル|URL`、URL だけでも可)を書くと、自己完結した HTML が出ます:ネイティブの `<audio>` と再生リスト、スタイルは `<style>`、動作は短い `<script>` に収まり、依存もビルド手順もありません。ネイティブの `<audio>` は再生・シーク・音量・再生速度をすでに備えているので、JS で描き直せばむしろ劣化します。生成されるスクリプトはページ上のすべての `.mp` を初期化するため、同じページに2つ貼っても id を変えずにそれぞれ動きます。
機能
- 1行に1曲「タイトル|URL」。全角の縦棒やタブも区切りとして扱います(入力方式・表からの貼り付け)
- 自己完結した出力:`<audio>` 1つ、`<ol>` の再生リスト、`<style>`、`<script>`。依存なし
- スクリプトはページ上のすべての `.mp` を初期化。2つ貼っても共存します
- 1曲終わると次へ進み、最後で停止(または1曲リピート)
- タイトルと URL は `data-` 属性にのみ入る —— データが JS のソースを通らないぶん、エスケープが1層減ります
- タイトルと URL の引用符・山括弧・& は HTML エスケープします
- アクセント色は選択行に使い、その文字色はコントラストから計算して黒か白を選びます
- javascript: などの擬似プロトコルは拒否します(生成されるページにそのまま書き込まれるため)
使い方
- 1行に1曲「タイトル|音声URL」を書きます(URL だけでも可)
- 再生リスト・自動再生・リピートを切り替え、先読み方法を選びます
- アクセント色を選びます
- 生成された HTML をコピーし、ページの好きな場所に貼ります
よくある質問
- 自動再生が動かないことが多いのはなぜですか?
- ブラウザが音声つきの自動再生を既定でブロックするからです —— 操作なしに音を出すのは迷惑行為と見なされます(だからこの項目は既定でオフです)。生成されるコードは `audio.play().catch(() => {})` と書いてあり、ブロックされたときに NotAllowedError をコンソールに出さずに握りつぶします。本当に自動再生したい場合は `<audio>` に `muted` を付けてください(ミュートなら許可されます)。
- audio 要素の複数ファイル対応を使わず、リストを自作するのはなぜですか?
- そんな機能がないからです —— `<audio>` が再生するのは1つの `src` だけです。HTML に再生リストを作れるネイティブ要素はありません(`<video>` にもありません)。そこで短いスクリプトがリストを駆動します:行をクリックすると `src` を差し替えて再生し、終われば次の曲へ進みます。出力にタグだけでなくスクリプトが必要な理由です。
- 同じページに2つ置くと干渉しますか?
- しません。生成されるスクリプトは `document.querySelectorAll(".mp")` を走査し、見つかった各プレーヤーが自分の `<audio>` とリストを保持するため、2つでも10個でもそれぞれ動きます。ただし片方が再生を始めても他方は止まりません(相互排他はしません)—— それが欲しい場合は数行ご自身で追加してください。生成器がその判断を代行することはしません。
- 音声ファイルに条件はありますか?
- ネイティブの `<audio>` は MP3・AAC/M4A・WAV・FLAC・Opus を再生します(ブラウザ差が少しあり、MP3 と M4A が最も安全です)。ストリーミング配信(HLS / DASH)には対応しません —— それは `<video>` と JS ライブラリの領域です。URL は http(s)://、`//` で始まるもの、または同一サイトの相対パスに限ります。クロスオリジンの音声は再生できますが、波形表示のような処理には相手側の CORS 許可が必要です。
関連ツール
音声を WAV に
メディアMP3 / M4A / FLAC などを WAV に変換。サンプリング周波数(音声なら 16k、映像なら 48k)、モノラル化、ピーク正規化に対応。すべてブラウザ内で完結します。
音声のトリミング
メディア開始・終了時刻を指定して音声の一部を切り出します。切り口のクリック音を消すフェードにも対応。試聴しながら位置を記録し、WAV で書き出します。
HTML ↔ JS
WebHTML を JS の文字列リテラルへエスケープ(`</script>` の分断、引用符・改行の処理つき)。逆に、エスケープされた文字列を HTML に戻すこともできます。
URL 解析
WebURL を解析し、スキーム・ホスト・ポート・パス・クエリパラメータ・アンカーに分解します。パラメータは元の値とデコード値を並記。すべてブラウザ内で処理します。
UA 解析
WebUser-Agent を解析し、ブラウザ・バージョン・OS・デバイス種別・エンジンを判定します。判定はパターン照合による概算です。すべてブラウザ内で処理します。
HTTP ステータスコード
WebHTTP ステータスコードの検索。番号から意味を、キーワードから番号を引けます。1xx〜5xx の分類・利用場面・確認のポイント付き。すべてブラウザ内で処理します。