tone
English | 日本語

概要
- ToneSynth だけを使い、単音または3和音で波形、envelope、reverb の違いを確認するサンプルです。
- AudioSynth や GameAudioSynth の SE catalog / BGM 機能を通さず、ToneSynth.playTone() が受け取る最小の音響パラメータを直接操作します。
- sine、triangle、square、sawtooth の波形、percussion、brass、woodwind、organ、piano、guitar の envelope profile、room、hall、plate の reverb impulse を同じ画面で切り替えられます。
画面の見方
画面は Play、Envelope、Reverb、What To Listen For に分かれています。まず Audio Start を押して AudioContext を開始し、Play で root、wave、mode、gain を選びます。Envelope では発音の立ち上がりと減衰を調整し、Reverb では残響量と空間の種類を調整します。
Hold Single は押している間だけ現在の root を鳴らします。Hold Triad は押している間だけ root、3rd、5th の3音を同時に鳴らします。ボタンを離すと、選択中 envelope の release で音が止まります。Mode が minor のときは minor triad、それ以外のときは major triad を鳴らすので、同じ波形と envelope が単音と和音でどう違って聞こえるかを比較できます。
実行方法
- 実行ファイルは ./tone.html です
- WebGPU に対応したブラウザで開き、必要に応じて help panel や HUD と合わせて確認してください
使用している webg 機能
- ToneSynth: 単音の再生、停止、envelope preset、reverb impulse、volume 調整を担当します。
- ToneSynth.playTone(): 周波数、wave type、profile、gain、pan を指定して1 voice を鳴らします。duration を null にすることで、ボタンを離すまで sustain します。
- ToneSynth.setSeEnvelopePreset(): 現在選択中の envelope profile を slider の値で更新します。
- ToneSynth.setSeReverb() と ToneSynth.setSeReverbImpulse(): 残響量と impulse response の性格を切り替えます。
確認ポイント
最初に Audio Start を押し、Hold Single を押している間だけ単音が鳴り、離すと release で止まることを確認します。次に Wave を sine から triangle、square、sawtooth へ切り替えると、同じ envelope でも倍音の量によって明るさや硬さが変わることが分かります。
Envelope の Profile を切り替えると、同じ root と wave でも時間変化が変わります。percussion はほとんど sustain しない短い打撃音、organ はほぼ一定に鳴り続ける持続音、piano と guitar は押し続けてもすぐ減衰する撥弦/打弦系の音、brass と woodwind は立ち上がりが遅く、押し続けると息の持続が見える音として比較しやすくしています。Attack、Decay、Sustain、Release を動かすと、選択中 profile の次の発音から変化します。
Reverb では Dry、Room、Hall、Plate を切り替えて、残響が音の輪郭に与える影響を確認します。短い envelope では reverb tail が特に目立ち、長い envelope では原音と残響の重なり方が変わって聞こえます。
Hold Triad を押すと、単音では分かりにくい reverb のにじみや、square / sawtooth の倍音の混み方を確認しやすくなります。和音では各 voice の pan を少し分けているため、左右の広がりも聞き取れます。
操作方法
- Audio Start: AudioContext を開始します。
- Hold Single: 押している間だけ root の単音を鳴らします。
- Hold Triad: 押している間だけ major または minor の3和音を鳴らします。
- Stop All: 現在鳴っている tone を短い release で停止します。
- Root: 基準音を選びます。
- Wave: OscillatorNode の波形を選びます。
- Mode: 単音、major triad、minor triad を選びます。
- Tone Gain: playTone() に渡す voice gain を調整します。
- Profile: envelope preset を選びます。
- Attack / Decay / Sustain / Release: 選択中 profile の ADSR を調整します。
- Reverb Mix: convolver への send と return の量をまとめて調整します。
- Kind / Length / Decay: reverb impulse の性格、長さ、落ち方を調整します。
- Dry / Room / Hall / Plate: 代表的な reverb 設定へ切り替えます。
つまずきやすい点
Audio Start を押していないと音は鳴りません。これは browser の自動再生制限に合わせた動きです。
Tone Gain は1 voice あたりの音量の基準です。3和音では音が重なるため、サンプル側で各 voice の gain を少し下げ、単音との音量差が大きくなりすぎないようにしています。
Reverb Mix が大きい状態で Release を長くすると、原音と残響が重なって輪郭がぼやけやすくなります。まず Dry で envelope の形を確認し、そのあと Room、Hall、Plate を切り替えると違いを追いやすくなります。
関連文書