メインコンテンツへスキップ

msykn

ToneSynth

ToneSynth

概要

ブラウザで動く 4×4 パッドシンセサイザー(PWA)。
Ionic + Tone.js で作っています。
パッドをタップして音を鳴らし、スライダーでエフェクトを調整できます。

技術スタック

  • フロント: Angular 19 / Ionic 8 / TypeScript
  • オーディオ: Tone.js 15 / Web Audio API
  • 配信: Netlify(PWA)

できること

  • 4×4(16音)のタッチ/クリックパッド
  • 7 本のエフェクトスライダー(Filter / Vibrato / Chorus / Delay / Reverb)
  • スマホ・PC ブラウザ対応(PWA としてホーム画面に追加可能)

シンセ仕様

項目
オシレーター三角波(triangle)
同時発音数6 音(7 音目以降は最も古い音が止まる)
エンベロープattack 0.04s / decay 1s / sustain 1 / release 4s

パッド(16音)

| C4 | D4 | E4 | F4 |
| G4 | A4 | B4 | C5 |
| D5 | E5 | F5 | G5 |
| A5 | B5 | C6 | D6 |

シグナルチェーン

PolySynth → Filter → Vibrato → Chorus → Delay → Reverb → 出力

エフェクトスライダー

名前範囲説明
Filter40〜400オートワウフィルターの基準周波数。低いほどこもった音、高いほど明るい音
Vibrato0〜10ビブラート(音程の揺れ)の速さ
Chorus0〜1コーラス(厚み・うねり)の強さ
DelayTime0〜1ディレイ(エコー)の遅延時間(秒)
DelayFeedback0〜1ディレイのフィードバック量。高いほどエコーが長く残る
ReverbRoomSize0〜0.9リバーブの部屋の大きさ。高いほど広い空間感
ReverbWet0〜100リバーブの混合量(%)。高いほど残響が強くなる

工夫した点

PolySynth とエンベロープ、7 種類のエフェクトを組み合わせ、リアルタイムに音色を変更できる UI を構築しました。
同時発音数を 6 音に制限し、古い音から自動で止めることでモバイルでも安定して動作します。
PWA 対応により、スマホ・PC のホーム画面からアプリのように利用できます。