Web Audio APIで生成する6つのチャネル
このツールは,ブラウザのWeb Audio APIを使って,ホワイトノイズ,ピンクノイズ,ブラウンノイズ,雨,風,波の6チャネルをその場で合成して再生します.用意された音声ファイルを選ぶプレーヤーではなく,AudioContext内で短いモノラル波形バッファを作り,AudioBufferSourceNodeでループ再生する構成です.
ページを開いただけで自動再生せず,利用者が再生操作をした時点でAudioContextと必要なノードを準備します.
各チャネルは独立してオンまたはオフにでき,複数のチャネルを同時に鳴らせます.二つだけを選ぶ固定レイヤー方式ではなく,6種類のうち必要なチャネルを任意の数だけ有効にするミキサーです.個別チャネルのGainNodeが共通のマスターGainNodeへ接続され,最終的に端末の音声出力へ送られます.左右位置を変えるパン,低域や高域を利用者が調整するEQは備えていません.
ブラウザやOSは,自動再生,バックグラウンド動作,省電力,利用できる音声デバイスについて独自の制約を持ちます.そのため,操作後に音が出ない場合は,タブのミュート,端末音量,出力先,ブラウザの音声許可を確認してください.音の質感や連続再生の挙動も利用環境によって差が生じます.
ホワイト,ピンク,ブラウンノイズの近似生成
ホワイトノイズは,AudioContextのサンプルレートに合わせた2秒分のバッファを作り,各サンプルへMath.randomから得た値を配置します.そのバッファをループすることで連続音として再生します.これは有限長の疑似乱数バッファによる実装であり,測定機器として周波数特性を校正した信号や,暗号学的乱数を利用する信号源ではありません.
ピンクノイズは,白色乱数を複数の状態変数へ通し,固定係数で加算するフィルター式によって低い帯域ほど成分が多い質感を近似します.ブラウンノイズは,直前のサンプルへ小さな白色乱数を加えて減衰させる一次的な積分処理で,低域が目立つ質感を近似します.どちらも2秒の生成済みバッファをループします.厳密な周波数勾配,音圧,標準試験信号への適合を測定する機能はありません.
画面上の説明は三種類の相対的な音色の違いを選ぶ目安です.スピーカーやイヤホンの周波数特性,端末の音声処理,聴取音量によって聞こえ方は変わります.音響測定,機器校正,聴力検査など一定の出力条件が必要な用途には,校正された専用機器と信号源を使用してください.
雨,風,波を作るフィルターとLFO
雨チャネルは,ピンクノイズを800Hzのローパスフィルターへ通した成分と,ランダムな位置に短い減衰波形を置いて1500Hzのハイパスフィルターへ通した水滴成分を混ぜます.実際の雨を録音した素材ではなく,二つの生成波形で雨らしい質感を作る近似です.雨量,水滴の大きさ,屋根材などを選ぶパラメーターはありません.
風チャネルは,ピンクノイズをQ値2.5のバンドパスフィルターへ通し,低周波オシレーターで中心周波数をゆっくり変化させます.波チャネルは,ブラウンノイズを300Hzのローパスフィルターへ通し,別の低周波オシレーターで音量を周期的に揺らします.風と波では,それぞれ一つのLFOが一つのパラメーターへ接続されます.これらも録音された自然環境音ではなく,ノイズ,フィルター,周期変化を組み合わせた合成音です.
フィルターの周波数,Q値,LFO速度や深さは実装内の固定値です.画面から変更できるのは各チャネルの有効状態と音量であり,パン,低音,高音,残響などの編集機能はありません.自然音を忠実に再現することより,異なる揺らぎを持つ背景音を簡単に混ぜることを目的とした構成です.
個別音量,マスター音量,ミュートの信号経路
各チャネルのスライダーは0〜100%で表示され,内部では0〜1のGainNode値として扱います.スライダーを0より大きくすると対応チャネルを有効にし,0にすると停止します.チャネルのオンボタンで有効化した際に音量が0なら,初期値として30%を設定します.再生中に音量を変えた場合は,短い時間定数でゲインを目標値へ近づけ,急な値変更による違和感を抑えます.
すべてのチャネルはマスターGainNodeへ集約されます.マスター音量も相対値で,ミュート時はマスターゲインを0にします.ミュートは各チャネルの選択状態や音量設定を消す操作ではないため,解除するとそれまでの組み合わせへ戻ります.一方,停止ボタンは各音源と補助ノードを停止,切断し,AudioContextも閉じます.再び再生すると新しいコンテキストと波形を作ります.
画面のパーセント値はデシベル,音圧レベル,端末のシステム音量ではありません.同じ50%でも,端末,アンプ,スピーカー,イヤホン,装着状態によって耳へ届く大きさは異なります.マスターと複数チャネルの値を同時に上げると合成後の出力も変わるため,端末側を含めて低い音量から調整してください.
5〜120分の停止タイマーと後片付け
停止タイマーは5分から120分まで,5分刻みで設定します.開始時に現在時刻と設定時間から終了予定時刻を記録し,画面の残り時間を更新します.残り時間が0になると通常の停止処理を呼び,各チャネルのAudioBufferSourceNodeやOscillatorNodeを停止して接続を外し,AudioContextを閉じます.タイマーだけを解除した場合は音の再生を継続します.
ブラウザのタブがバックグラウンドへ移動した場合や端末が画面ロック,スリープ,省電力状態になった場合,画面更新やタイマー処理が間引かれたり,音声処理自体が停止したりすることがあります.終了予定は時刻差から計算しますが,指定時刻どおりの停止やバックグラウンド再生を保証するものではありません.厳密なアラームや時間管理が必要な場面では,OSのタイマーなどを併用してください.
コンポーネントが画面から外れる場合にも,タイマーを解除し,音源を停止してAudioContextを閉じる後片付けを行います.ただし,ブラウザの強制終了や端末側の音声処理など,ページの制御外にある状態まで管理するものではありません.再生状態に違和感がある場合は停止し,必要に応じてページを再読み込みしてください.
対応しない機能と聴取時の注意
本ツールは生成音をその場で再生するミキサーです.音声ファイルのアップロード,マイク入力,録音,波形編集,生成音のダウンロード,ストリーミング配信,設定の保存には対応していません.利用者の声や周囲の音を取り込む処理もありません.ページの配信やサイト全体の仕組みとは別に,このコンポーネントの音源はWeb Audio APIで合成されます.
名称に含まれるヒーリングやページタイトルの集中用という表現は,医学的または心理的な効果を示す測定結果ではありません.睡眠の改善,集中力の向上,ストレスの軽減,自律神経の調整,耳鳴りの緩和などを判定または保証する機能はありません.音の好みや感じ方には個人差があり,特定の音色が利用目的に適するかは実際に低音量で確かめる必要があります.
周囲の警報,呼びかけ,車両音などを聞く必要がある場所では,背景音で重要な音を覆わないようにしてください.運転中,歩行中,機械操作中など注意を要する場面でのイヤホン利用には適しません.再生開始時だけでなく,チャネルを追加したときや端末の出力先を変えたときにも音量を確認します.
大きな音を長時間聞くことは耳への負担になり得ます.再生前に端末音量を下げ,イヤホンやヘッドホンでは特に小さな音から始めてください.長時間連続して使わず,休憩を挟み,不快感,耳鳴り,痛み,頭痛などの異常を感じた場合は直ちに停止してください.聴覚や体調に懸念がある場合は,音響ツールの使用を続ける前に専門家へ相談してください.