01 / SYNTHESIS
シンセサイザーを設計する
音を発生させる方法、時間的な形、倍音の変化を分けて考えます。まず一つの声をつくり、位置や移動と音色の関係を加えます。
01ローカル実装
波形モーフ:音の輪郭を連続的に変える
正弦波・三角波・鋸歯状波・矩形波を混ぜ、一つの声の中で音色を変えます。音高と位置を保ったまま倍音の配分を動かすと、音源の同一性を残しながら表情を作れます。
信号と動きの流れ
位相を共有する4種の波形テーブル → 重み付き混合 → ローパスフィルター → 音量包絡 → 位置・広がりを持つ音声バス、という順序です。重みは合計1に正規化され、音高に応じて倍音数の異なるテーブルを選びます。
設計するパラメーター
- 波形の重み各0〜1、合計を正規化
- 正弦波を基準に、鋸歯状波を加えて明るさを変えるなど、比較する経路を決めます。
- 音高とベンドMIDIノート0〜127、ベンド±48半音
- 基音の移動と倍音の変化を分けて操作します。
制作手順
- 同じ音を同じ位置で持続させ、正弦波だけの状態を記録します。
- 8秒程度で三角波、鋸歯状波へ移り、同じ経路を逆向きに戻ります。音量は計測しながら調整します。
- 次に同じモーフを移動音源へ適用し、固定位置の記録と聴き比べます。
何を聴き比べるか
音高・包絡・移動を固定して波形だけを変える比較と、波形を固定して移動だけを変える比較を作ります。明るさの変化を距離の変化として受け取ったかも記録します。
実装の範囲と注意点
4基の独立した発振器ではなく、共通位相の波形混合です。独立デチューン、任意波形の取り込み、パルス幅変調はありません。倍音数を制限する実装がありますが、全ての変調条件に対する無エイリアシングを保証するものではありません。
02ローカル実装
減算合成:明るさと共鳴の動きを作る
倍音を含む波形から高い帯域を削り、フィルターの動きで音色を作ります。音源の軌道とは別に明るさの軌道を設計できるため、近づくほど明るい、遠ざかっても明るさを保つ、といった条件を比較できます。
信号と動きの流れ
波形とノイズの混合 → 状態変数型のローパスフィルター → tanhによる振幅整形 → ADSRです。レゾナンスはカットオフ付近の応答を変えます。距離からカットオフを変える場合は、合成側の変調であることを明示します。
設計するパラメーター
- カットオフ設定30〜20,000 Hz、処理時は標本化周波数でも制限
- 開く速さ、閉じる速さ、停止する帯域を音型として扱います。
- レゾナンス0〜1、内部Qは0.5〜8
- 輪郭を強める量です。上げるときは出力レベルも確認します。
制作手順
- 鋸歯状波を使い、カットオフを低く固定した短音を作ります。
- 発音ごとにカットオフの開閉を同じ形で繰り返し、音量包絡だけの場合との差を記録します。
- 軌道の通過点と開閉の頂点を一致させた条件、半周期ずらした条件を作ります。
何を聴き比べるか
音量差、レゾナンスによる強調、音源位置の変化を分けます。高域が増えたために目立ったのか、位置が変わったために追いやすくなったのかを一条件ずつ調べます。
実装の範囲と注意点
現在の音声経路はローパス1系統です。複数モードのフィルター切り替えや、実空間での空気吸収・遮蔽物の物理計算をこの処理に含めてはいません。
03ローカル実装
包絡の楽器:点、線、余韻を作り分ける
同じ発振器でも、立ち上がりと消え方で短い点にも、持続する線にもなります。空間の通過に対して音がいつ始まり、どこまで残るかを作曲するため、包絡と軌道の時間を分けて設定します。
信号と動きの流れ
発音でattack → decay → sustainへ進み、消音指示でその時点の振幅からreleaseへ移ります。attackとdecayは直線、releaseは二乗曲線です。発音の長さと余韻の長さは別々に制御できます。
設計するパラメーター
- ADSRA/D:2 ms〜10 s、S:0〜1、R:5 ms〜20 s
- 立ち上がりを位置の合図に使うか、ゆっくり浮かぶ音にするかを決めます。
- 発音強度と声部ゲイン各0〜1
- 音型の強弱とミックス上の音量を分けて記録します。
制作手順
- 同じ音高で、短い打音、緩い持続音、短い発音と長いreleaseの3種類を作ります。
- 同じ軌道を通し、発音の開始位置と消音指示の位置を揃えます。
- 余韻の間も音源を動かす条件と、位置を止める条件を書き出します。
何を聴き比べるか
動く点として追える長さと、複数の発音が重なって面のように聞こえる長さを比較します。これは聴取評価の設計であり、特定の閾値が測定済みという意味ではありません。
実装の範囲と注意点
ドラムの膜や弦を物理モデルで計算する音源ではありません。長いreleaseでも発音数の上限は変わらず、声部の再利用で余韻が途切れる場合はその割り当てを確認します。
04ローカル実装
ノイズ合成:息、摩擦、密度の素材
周期波とシード付きノイズを混ぜ、音高のある音から帯域の広い素材へ移行します。粒状処理の入力にも使えますが、ノイズ量、粒の密度、空間的な広がりは異なる変数として扱います。
信号と動きの流れ
声部IDまたは明示シード → 決定的なノイズ列 → 周期波との混合 → 同じローパスと包絡、という構成です。同じ開始状態とイベント列を使うと、ノイズの違いに邪魔されずに別の設計変数を比較できます。
設計するパラメーター
- ノイズ比率0〜1
- 0で周期波、1でノイズです。中間では音高の輪郭と粗さを共存させます。
- シードとフィルター整数シード、共通のカットオフとレゾナンス
- 乱数列を固定し、帯域と時間変化に集中して比較します。
制作手順
- 短いノイズを低いカットオフで鳴らし、柔らかい打音を作ります。
- attackを長くし、カットオフをゆっくり開いて息のような持続素材へ変えます。
- 同じシードで位置の分布だけを変え、狭い音源と広い分布を書き出します。
何を聴き比べるか
ノイズを増やした変化と、音源数を増やした変化を分けて記録します。高域の量で印象が変わるため、音量を揃えた比較と元のゲインを保つ比較の両方を用意します。
実装の範囲と注意点
収録した息や摩擦の再現モデルではなく、合成素材です。現在は専用のピンクノイズ、ブラウンノイズ、環境音サンプラーを備えていません。
05ローカル実装
変調の声部:音色と位置の周期を結ぶ
二つのLFOを使い、音高、カットオフ、音量、x位置、広がりを周期的に変えます。音を回す周期と音色の脈動を一致させる場合も、比率をずらして長い変化を作る場合も、変調の役割を明確にします。
信号と動きの流れ
声部ごとの正弦LFO → 選んだ一つの変調先 → 発振器・フィルター・位置の計算へ加算または乗算します。カットオフは2の累乗による倍率、音高は半音の変化として適用されます。
設計するパラメーター
- 速度LFOごとに0〜40 Hz
- 遅い形の変化と速い脈動を作ります。表示上の移動周期とは独立に設定できます。
- 深さと変調先深さは共通設定で±48、意味は変調先によって変化
- 音高では半音、x位置ではシーン単位です。広がりや音量は別の上限処理を受けます。
制作手順
- 音高と波形を固定し、音量LFOだけで1秒周期の脈動を作ります。
- もう一つのLFOをx位置へ送り、往復周期を同じにした記録を作ります。
- 位置の周期だけを変え、同じ音量周期が異なる場所で現れる過程を記録します。
何を聴き比べるか
音量だけ、位置だけ、両方の3条件で、どの変化を拍として追ったかを比較します。高速の位置変調では、音響上の変化と表示の更新頻度を混同しないようにします。
実装の範囲と注意点
各LFOの波形は正弦で、任意の変調マトリクスはありません。専用のFM音源は別モードとして実装しています。LFOのx変調は3D軌道の全体を生成する機能とは別です。
06ローカル実装
空間ポリフォニー:音色の差を場所へ配る
音高、音色、包絡、位置を声部ごとに保持し、複数の音の関係を作ります。一つの音を広げること、同じ音を複製すること、異なる声が応答することを作曲上の別の操作として扱います。
信号と動きの流れ
安定した声部IDを持つ発音列 → 最大16声の合成 → 各声の位置と幅 → 空間化するPCMバス、という構成です。エフェクトから生まれる声には親IDを保持し、元の声との関係を追跡します。
設計するパラメーター
- 音源数合成は1〜16声
- 同時発音と余韻を合わせて設計します。出力スピーカー数とは独立です。
- 幅と位置幅0〜1、位置はシーン座標
- 一点の移動と分布の広がりを別々に制御します。
制作手順
- 同じ三音の音型を一つの声で記録し、比較の基準にします。
- 三つの声へ分け、音高と位置の対応を固定します。次に位置だけを入れ替えます。
- 最後に包絡と音色も声部ごとに分け、受け渡しとして追えるかを記録します。
何を聴き比べるか
同時発音数を変える場合は合計レベルも確認します。声部の数が多い条件を単に大きな音にせず、どの声がどの場所にあるか、同じ声として認識できたかを比較します。
実装の範囲と注意点
標準構成の合成上限は16声です。エフェクト用空間バスにも上限があり、上限超過は計測値に残します。2chの試聴結果から、複数スピーカーを設置した会場での分離性能を断定することはできません。
07ローカル実装
FM・リング・AM合成:側帯波の動きを作る
FM専用モードでは、搬送波に対する変調波の周波数比と変調指数から側帯波を作ります。整数比で倍音の関係を変え、非整数比で周期の合いにくい響きを作れます。リング変調とAMも別モードとして実装し、FMで増える側帯波と、振幅の乗算で生まれる和・差の成分を比較できます。
信号と動きの流れ
FMは正弦波の位相変調式をBessel係数で展開し、k=−24〜24の最大49成分を合成します。搬送周波数f₍c₎に対し各成分はf₍c₎+k f₍m₎です。直流を除き、絶対周波数が標本化周波数の0.44倍から減衰し、0.49倍以上で除去します。その後、共通のノイズ混合、ローパス、tanh、ADSR、空間バスへ進みます。リングは和・差の2成分、AMは搬送波と和・差の3成分を同じ帯域規則で作ります。
設計するパラメーター
- FM比率と指数fmRatio 0.125〜16、fmIndex 0〜12
- 比率は変調周波数÷搬送周波数、指数は位相変調の深さです。指数0は搬送波のみです。変更値は12 msの時定数で平滑化します。
- リング比率とAM深さringRatio 0.125〜16、amDepth 0〜1
- ringRatioはringとamで共通です。AM深さ0は無変調、1では搬送波の振幅を周期的に0〜1へ変えます。リングは搬送波を残す項を持ちません。
制作手順
- FMを指数0、位置固定で鳴らし、搬送波だけの基準を記録します。
- 比率を1.75に固定して指数を0から2へ変え、次に指数を固定して比率を比較します。波形、スペクトル、実PCMレベルを同じ時刻で記録します。
- 同じ音高でringとamへ切り替え、ringRatio1.5、AM深さ0と1を比較します。最後に位置だけを変えた版を作ります。
何を聴き比べるか
自動テストでは、帯域内のFMと直接の正弦位相変調との最大誤差が10⁻⁹未満であること、指数0の搬送波、指数を上げた側帯波、リングの和・差、AM深さによる搬送波と側帯波の変化を確認しています。制作時は同じゲインの比較とレベルを揃えた比較を分け、明るさと大きさを混同しないようにします。
実装の範囲と注意点
FMは最大49成分の打切り展開で、多段オペレーター網や独立した変調包絡はありません。帯域制限は発振器の成分に対する処理で、後段の非線形処理や任意の高速変調まで無エイリアシングとはしていません。方式の切替は12 msでクロスフェードします。制作例は試す手順であり、全条件の動画収録済みを意味しません。旧LFO動画はFMの実証とは別です。
08ローカル実装
加算・モーダル合成:部分音の配分と減衰を作る
16本の正弦波を加えるadditiveモードと、各正弦波を発音からの経過時間で減衰させるmodalモードを実装しています。倍音の減り方と整数倍からのずれを分けて制御し、持続する響きと、上の成分から消える打音を同じ音源構成で比較できます。
信号と動きの流れ
部分音n=1〜16に対し、周波数fₙ=f₀n√(1+0.08b(n²−1))、重みn⁻ˢを使います。bはinharmonicity、sはpartialSlopeです。modalではさらにexp(−t(1+0.12(n−1))/D)を掛け、DはmodalDecay、tは発音からの秒数です。減衰前の重み合計で正規化し、共通のフィルターとADSRへ送ります。合成した一つの声に位置を与えます。
設計するパラメーター
- 部分音の傾斜と伸張partialSlope 0.25〜4、inharmonicity 0〜1
- 傾斜が大きいほど高い部分音が弱まり、伸張0では整数倍です。伸張を増やしても第1部分音は基音周波数を保ちます。
- モーダル減衰modalDecay 0.02〜8秒
- 第1部分音の振幅が1/eになる時間です。高い部分音ほど速く減衰します。各値は12 msの時定数で平滑化され、発音からの経過時間は再発音で0へ戻ります。
制作手順
- 位置固定のadditiveで、inharmonicity0、partialSlope1と3を比較し、第2部分音と基音の比を記録します。
- 傾斜を固定してinharmonicityを上げ、基音を保ったまま高い成分の周波数が変わる様子を記録します。
- modalへ切り替え、毎回発音し直して短い減衰と長い減衰を比較します。同じ減衰設定を、静止した声と移動する声へ適用します。
何を聴き比べるか
テストでは整数倍の場合の第2部分音比が傾斜1で1/2、傾斜3で1/8となること、非整数倍化による周波数移動、時間に沿う減衰、再発音時の経過時間リセットを確認しています。各方式はブロックサイズを変えても同一PCMを生成します。聴取では明るさ、打音の長さ、位置の追いやすさを別々に評価します。
実装の範囲と注意点
modalは減衰する正弦波群であり、外部の打撃信号を受ける物理共鳴器、板、弦のモデルではありません。16部分音の個別編集や個別位置・PCMバス出力は未実装です。DCと高域の成分はFMと同じ帯域規則で除去します。harmonicエフェクトは入力を分解する別のフィルターバンクです。制作例の全条件が収録済みとは限らず、動画ごとの条件と対応させます。
02 / EFFECTS
音の履歴と分岐を設計する
音をどの時点から読み出し、どこへ置き、どう減衰させるか。音声を変える処理と、処理後の音を空間に置く操作を対応づけます。
01ローカル実装
空間ディレイ:遅れた音を別の声にする
ディレイは時間をずらす処理であり、空間ディレイではその音の位置も指定します。反復を元の声の延長として置くか、別の場所から返事として置くかを、同じ遅延信号で比較できます。
信号と動きの流れ
声部の実PCM → 補間付き遅延バッファ → フィードバック → wet量とsend量 → 原位置またはオフセット位置です。signal_onlyは元の音声バスへ合流し、spatial_voiceは親IDを持つ独立バスへ出します。
設計するパラメーター
- 時間・反復・配分5 ms〜2 s、feedback 0〜0.88、wet/send 0〜1
- 時間は音の受け渡し、feedbackは残る反復、wet/sendは元音との比率を決めます。
- 空間オフセット3軸のシーン座標差
- 同じ時間でも移動先を変える比較に使います。
制作手順
- 短い合成音を1秒間隔で鳴らし、原音だけを記録します。
- 時間280 ms、feedback 0.35から始め、原位置の反復と別位置の反復を別々に記録します。
- 原音と遅延バスを個別に確認してから、同じレベル関係で重ねます。
何を聴き比べるか
反復回数、音量、音色を揃えて位置だけを変えます。動く親音源では、遅延音の位置が発音時の座標か現在の座標かによって結果が変わるため、対応規則も記録します。
実装の範囲と注意点
現在の独立ディレイは、現在の親位置に固定オフセットを足します。過去の軌道をそのまま遅らせる経路や、反復ごとに新しい自由軌道を作るグラフはありません。遅延線にはtanhがあり、厳密な線形ディレイではありません。
02ローカル実装
グラニュラー:粒の時間と分布を作曲する
過去のPCMを短い粒として読み出し、窓で立ち上がりと終わりを整え、別の位置へ配ります。粒の短さ、重なる数、分布の広さを分けると、点の反復から雲のような持続までを設計できます。
信号と動きの流れ
声部の履歴 → シードで選ぶ声部と読出位置 → Hann窓 → 粒ごとの位置とゲイン → 空間バスです。密度×粒長は平均的な重なりの目安になります。実装はこの値の平方根を使って粒のゲインを補正します。
設計するパラメーター
- 密度・粒長0〜240粒/秒、15〜500 ms
- 同じ密度で粒を長くする変化と、同じ長さで密度を増やす変化を分けます。
- 広がり・シード広がり0〜12シーン単位、決定的シード
- 分布を固定して音だけを比較し、後から分布の形を変えます。
制作手順
- 短い音を繰り返して履歴を用意し、12粒/秒、120 msの粒から始めます。
- 位置の広がりを固定し、粒長だけを変えた記録を作ります。
- 密度を24粒/秒以下と、それを超える条件に分け、個々の粒とクラスタの関係を記録します。
何を聴き比べるか
粒数の表示だけでなく、実PCMのバス数、同時粒数、破棄数を確認します。密度を上げた条件が音量だけで強く感じられないよう、計測と試聴の両方で比較します。
実装の範囲と注意点
現在は最大64粒を保持し、24粒/秒を超える密度では8クラスタへまとめます。各粒は生成時に決まる位置を持ち、粒の内部で自由軌道を積分する機構はありません。再生速度は等速で、粒ごとのピッチシフトやサンプル取り込みは未実装です。
03ローカル実装
フリーズと時間ループ:音の一部を残す
短い区間を捕まえて繰り返すと、発音後にも残る音を作れます。時間領域のフリーズは声部ごとの保持、audio_timeは合成音の混合を捕まえた再生として扱い、どの時点を残したかを明確にします。
信号と動きの流れ
freezeは声部履歴から窓をコピーし、境界を短くクロスフェードして等速ループします。audio_timeはdryのモノ混合を捕まえ、補間付き読出しの速度を変えます。後者は中央位置の一つのバスへ出ます。
設計するパラメーター
- 捕捉窓freeze:20〜500 ms、audio_time:50 ms〜1 s
- 短い周期が聞こえる長さと、元の音型が残る長さを比較します。
- 再生速度audio_time:−4〜4、freeze:等速
- 負の値は逆方向、0は読出位置停止です。速度変更では音高と尺が一緒に変わります。
制作手順
- 発音の直後と持続部分で別々に捕捉し、同じ長さでループを記録します。
- 声部ごとのfreezeを、元音と同位置に残します。
- audio_timeで等速、半速、逆方向を別々に書き出し、元の音型との関係を比較します。
何を聴き比べるか
捕まえた窓、ループ開始時刻、元音との混合量を揃えます。停止を聞かせたい場合は、読み出し速度0と音量0を区別します。繰り返し境界のクリックや低域の偏りも確認します。
実装の範囲と注意点
FFTによるスペクトルフリーズ、位相ボコーダー、音高を保つタイムストレッチではありません。audio_timeの速度0は一つのサンプル値を保持するため、持続する音楽的フリーズを保証しません。
04ローカル実装
グリッチとフィードバック:反復の傷と記憶
小さな切片の再読出しは連続した音の中へ細かな反復を入れます。フィードバックは過去の出力を入力へ戻し、次の音へ影響を残します。周期、深さ、帰還量を分けて、偶然の不具合ではなく保存できる処理として扱います。
信号と動きの流れ
glitchは約18 msの履歴切片を周期の一部で読み出し、元信号と混ぜます。feedbackはステレオ試聴の混合から約31 msの循環バッファへ送り、tanhを通して帰還させます。帰還音には固定位置のバスを与えます。
設計するパラメーター
- グリッチ速度と深さ0.1〜40 Hz、深さ0〜1
- 深さは混合量と周期内で切片を読む割合に関わります。
- 帰還量0〜0.85
- 音を残す量を調整し、停止後の減衰も確認します。
制作手順
- 一定の持続音で、処理なし、glitchのみ、feedbackのみを記録します。
- 短い音型へ変え、反復周期と音型の周期が一致する場合とずれる場合を作ります。
- 最後に入力を止め、残る音の長さとピークを確認します。
何を聴き比べるか
元の音型がどの程度認識できるか、反復が拍として聞こえるかを比較します。深さを変えたときは複数の内部量が動くため、他のパラメーターを固定して記録します。
実装の範囲と注意点
現在は決定的なバッファ切片処理と単一の帰還経路です。任意の再帰グラフや、複数地点を巡る帰還ネットワークはありません。tanhと係数上限は実装上の振幅制御であり、会場の安全音量を保証するものではありません。
05ローカル実装
帯域・倍音分配:一つの音の内部を空間へ開く
低・中・高域、または既知の音高に対応する帯域を別の位置へ送ります。音を複数に増幅して複製する操作と区別し、分割した信号と残差信号を合わせたときの関係を確認します。
信号と動きの流れ
3帯域は350 Hzと2,500 Hzの一次ローパスから、low、upperLow−low、input−upperLowを作ります。harmonicは指定ノートの基音周波数×整数比を中心とするバンドパスを最大4本使い、input−帯域合計を残差として保持します。
設計するパラメーター
- 帯域の配置3帯域の個別オフセット、またはspread 0〜12
- 低域を必ず下、高域を必ず上とせず、対応を替えた条件を作れます。
- 倍音番号とQ最大4帯域、番号1〜16、Q 2〜64
- 狭く取り出す量と、元の音に残る成分を確認します。
制作手順
- 倍音を含む一つの持続音で、3帯域を同じ位置へ戻した基準を作ります。
- 音を変えずに帯域だけを離し、帯域別のPCMと合成結果を記録します。
- 既知ノートのharmonic処理で、取り出した帯域と残差をそれぞれ確認します。
何を聴き比べるか
空間化の前には帯域と残差の和を確認し、空間化の後には位置ごとのレベルと位相の変化を確認します。音色の変化と位置の変化は、同位置へ戻す比較によって分けます。
実装の範囲と注意点
3帯域はFFT解析でも急峻なクロスオーバーでもありません。harmonicは入力から音高を推定せず、指定ノートを使います。分離した帯域は完全に独立した倍音抽出ではなく、残差には減算による成分も含まれます。
06ローカル実装
立ち上がり・持続分離:出来事と余韻の位置を分ける
一つの音から立ち上がりが強い部分と、その残りを作ります。打音の合図を狭い位置に置き、持続を広げるなど、出来事が起きた場所と響きが続く場所の関係を設計できます。
信号と動きの流れ
入力振幅の速い包絡と遅い包絡 → 差を正規化したマスク → input×maskとinput−attackの2バスです。しきい値と感度で検出を調整し、マスクの立ち上がりと戻りも平滑化します。
設計するパラメーター
- マスクの追従attack 0.5〜50 ms、release 5〜500 ms
- どこまでを立ち上がりとして扱うかを調整します。
- 検出と広がり感度0.1〜10、しきい値0〜0.9、spread 0〜12
- 小さな発音も拾う条件と、大きな変化だけを分ける条件を比較します。
制作手順
- 同じ音高で短音と持続音を用意し、マスクがどこで上がるかを確認します。
- attackとsustainを同位置へ戻し、分割前との関係を確かめます。
- attackを一点、sustainを広い音として配置し、配置だけを逆にした版も記録します。
何を聴き比べるか
攻撃的に聞こえるかという印象だけでなく、最初の発音位置を追えたか、余韻の位置を別に認識したかを比較します。小音量の区間とノイズ素材では検出の振る舞いも確認します。
実装の範囲と注意点
音源分離AIや楽器別分離ではなく、同一信号に掛ける補完的な振幅マスクです。結果を客観的に唯一のattack成分と呼ばず、設定によって変わる分解として扱います。
07ローカル実装
残響・ルームモーフ:響きの時間を変形する
4本の遅延線を結ぶネットワークから残響を作り、4つの位置へ配ります。ルームモーフは二つの手続き的な遅延構成と減衰設定の間を移り、音が消えるまでの時間と空間的な広がりを変えます。
信号と動きの流れ
入力を4遅延線へ分配 → 正規化した混合行列 → 高域減衰 → 帰還 → 4つの音声バスです。減衰係数は遅延時間とdecayから計算します。roomMorph有効時はその設定を使い、通常reverbと二重には処理しません。
設計するパラメーター
- 減衰と吸収decay 0.1〜8 s、damping 0〜0.95
- 響きの長さと高域の残り方を別々に調整します。decayは設計パラメーターです。
- モーフと広がりmorph 0〜1、spread 0〜12、wet 0〜1
- 二つの端点を保存し、同じ入力で中間状態を比較します。
制作手順
- 短い合成打音を入力し、短いdecayと長いdecayを別々に記録します。
- 二つの端点のレベルを確認してから、入力を保ったままモーフをゆっくり動かします。
- 音源を止めた後も記録し、残響バスの減衰と最終出力を確認します。
何を聴き比べるか
減衰だけ、広がりだけ、モーフだけを変える比較を作ります。高域の消え方、方向の追いやすさ、元音の輪郭を分けて記録し、設定秒数と測定した減衰を同一視しません。
実装の範囲と注意点
測定IRを使う畳み込み残響ではありません。Room A/B/Cの実残響を再現したものでもありません。遅延長を動かすモーフでは音高の揺れが生じ得るため、変化の速さも含めて確認します。
08ローカル実装
拡散:同じ音の時間構造を少しずつずらす
4つの経路へ同じ入力を送り、異なるオールパス遅延で時間構造を変えます。空間的に広い音を作る方法として、位置の広がりと信号同士の似方を別々に扱います。
信号と動きの流れ
入力を4経路へ分け、極性を交互に変えてから、経路ごとに2段のオールパスを通し、4つのオフセット位置へ配分します。遅延時間の組は経路ごとに異なり、feedbackで各段の応答を変えます。
設計するパラメーター
- feedbackと混合量feedback −0.85〜0.85、wet 0〜1
- 経路ごとの時間的な違いを変え、原音の輪郭がどれだけ残るかを確認します。
- 広がり0〜12シーン単位
- 同じ信号処理で位置だけを拡げた比較を作ります。
制作手順
- 一つの短音で処理なしと拡散のみを記録し、立ち上がりを比較します。
- spreadを0から拡げ、4経路の信号は同じ条件で保ちます。
- ステレオに加え、同一の規則で作るモノ合成も確認します。
何を聴き比べるか
広いと感じたか、発音位置を追えたか、元音の輪郭が残ったかを比較します。相関やピークの測定を聴感と併記し、数値だけから包囲感を断定しません。
実装の範囲と注意点
4経路は部屋の壁や反射点の測定値ではありません。極性と位相の違いによってモノ合成で打ち消しが生じる可能性があるため、広がりと互換性を別々に確認します。
03 / MOTION
粒子・軌道・ループを設計する
一つの音源の動き、粒子の一生、群れの関係、反復する時間を扱います。位置の反復、発音の反復、記録音声の再生は、別々に設計します。
01ローカル実装
パーティクルの発生・寿命・再発生
一粒を、位置の点ではなく、発生時刻、年齢、速度、音量、消える条件を持つ出来事として扱います。発生源のIDと何回目の発生かを分けることで、同じ場所から出た複数の音を時間の構造として記述できます。
信号と動きの流れ
発生予定 → 個体の年齢 → 軌道と減衰 → 発音の有無 → 退出・再発生
年齢 τ = t − 発生時刻。基本Projectileは p(τ) = p₀ + v₀τ + ½aτ²。A02の周期的な発生には、別途、周期内の年齢と活動期間を使います。
設計するパラメーター
- 発生間隔と位相A02の例:3秒周期、個体間0.35秒
- 開始時刻をずらし、同時の破裂、一定間隔の列、不均等な密度をつくります。周期と個体数を別に決めます。
- 寿命と減衰A02の活動期間:各周期の最初の2秒
- 存在する期間と音量の減衰を分けます。寿命中に無音になる場合も、音の余韻が個体の退場後に残る場合も評価します。
- 初速・加速度・シード速度 m/s、加速度 m/s²、整数シード
- 方向の乱数はシードと個体番号から決定します。画面更新ごとの乱数で経路を変えず、同条件を再現します。
制作手順
- 正弦波の短い音を4個、同じ原点から順番に発生させます。最初は速度と音高をそろえます。
- 次に方向だけを変え、左右へ開く動きと同方向の列を比較します。発生密度と音量は保持します。
- 退出後のディレイを加え、動く原音と後から現れる音の関係を記録します。
何を聴き比べるか
発生順、活動個体数、同時発音数、終了時の残響を照合します。見える点の数と実際の音声ボイス数を別に数え、再実行時に同じシードで同じ経路へ戻ることを確かめます。
実装の範囲と注意点
A02とA08は限られた個体を循環させるローカルの作曲モデルです。生成番号を持ちますが、無制限に新しい音源を追加するエミッターではありません。基本Projectileと、境界衝突を扱うprojectile_passレシピの処理は異なります。
02ローカル実装
固定位置のループと発音の反復
ループを「同じ音が繰り返される時間の規則」として扱います。位置の反復とは独立です。固定位置の発音を基準にすると、後から周回や位相差を加えたとき、移動によって変わった部分を比較できます。
信号と動きの流れ
周期と位相 → 周期内時刻 → 音量ゲート → 合成音 → 空間への配分
u = t mod T。基本Looperは u < 発音区間 の間だけ音量を通します。loop_compareレシピは別の短い指数減衰パルスを使います。
設計するパラメーター
- 周期 T正の秒数。基本値2秒
- 音量パターンが何秒ごとに戻るかを決めます。テンポへ対応させる場合も、保存する秒数を明示します。
- 発音区間基本Looperの初期値0.45秒
- 一周期のうち音量ゲートを開く区間です。周期より長くすると休止がなくなるため、リズムをつくる場合は周期との比を確認します。
- 位相差loop_compareでは周期の割合で指定
- 二声の繰り返しをずらします。同時、半周期の交互、少し遅れる応答を、位置を変えずにつくれます。
制作手順
- 同じ音高の二声を固定位置に置き、2秒周期の音量パターンを重ねます。
- 片方を半周期ずらし、交互に鳴る構造へ変えます。次に位相差を少し小さくし、重なりをつくります。
- 同じ発音パターンを保ったまま、片方だけを周回させ、固定と移動を比較します。
何を聴き比べるか
周期の正確さ、重なり時間、休止中の信号、立ち上がりの違いを音声から確認します。映像上の点滅が正しくても、音のクリックや残響まで確認できたことにはなりません。
実装の範囲と注意点
現在のLooperは音量のゲートです。周期ごとに発振器の位相やADSRを再初期化したり、録音バッファを先頭へ戻したりする処理ではありません。毎回同じアタックやサンプル再生を求める場合は、別の発音イベントとして設計する必要があります。
03ローカル実装
周回・逆回転・空間的な対位法
周回の半径、速さ、位相を声部の変数にします。同じ周期の二声を離して保つ、逆方向に動かして交差させる、音の反復だけを別周期にする、といった関係をつくれます。軌道の中心と聴取位置も別に記録します。
信号と動きの流れ
中心と角速度 → 位相 → 楕円と上下動 → 個別の音色・発音 → 出力
θ = rate × t + phase。p = 中心 + [r cosθ, r × aspect × sinθ, r × height × sin(θ/2)]。height = 0なら周期は2π/|rate|、上下動を含む通常の設定では4π/|rate|です。
設計するパラメーター
- 半径と縦横比radius:m、aspect:無次元
- X方向の半径とY方向への倍率を分けます。楕円では角速度が一定でも経路上の速さは一定になりません。
- 角速度と位相rate:rad/s、phase:rad
- rateの符号が回転方向、絶対値が周回の速さを決めます。Hz表示の周期変調と単位を混同しません。
- 上下動の比率height:半径に対する倍率。初期値0.12
- 基本OrbitのZ成分は水平周回の半分の周波数で動きます。水平一周だけでは全軌道の周期が終わらない場合があります。
制作手順
- 半径2m、上下動なし、水平周期8秒の二声を用意します。これは制作例の数値で、部屋の実寸ではありません。
- 位相差を半周に固定し、同方向と逆方向を比較します。音高差を後から加え、交差点でも声部を追えるか聴きます。
- 上下動を加えて16秒の全周期を収録し、水平一周で切った場合との継ぎ目を比較します。
何を聴き比べるか
位置だけでなく終端と始端の速度も比較します。二声の位置が一致してもIDは保持し、交差による音量上昇と、声部の入れ替わりを分けて記録します。
実装の範囲と注意点
現在の周回は座標を読む解析的な軌道です。速度からドップラー音高を自動生成する機能や、楕円上の等速移動は含みません。レシピのorbit_loopは上下動のない別の円軌道です。
04ローカル実装
リサージュ・振り子・螺旋
複数軸の周期を組み合わせると、同じ場所へ戻る経路と、戻り続けながら形が変わる経路を区別できます。閉じた曲線を反復の骨格にし、螺旋の半径や高さの変化を展開に使います。
信号と動きの流れ
軸ごとの周期関係 → 交差と折り返し → 発音位置の選択 → 音色場との交差
Lissajous:p = 中心 + [r sin2θ, r sin3θ, 0.4r sin5θ]、θ = rate × t + phase。基本角が2π進むと各成分が戻ります。
設計するパラメーター
- 軸の周波数比基本LissajousはX:Y:Z = 2:3:5
- 交差回数と戻る周期を決めます。現在はこの比率が実装に固定されており、任意の比率を入力する機能とは区別します。
- 半径と基本角速度radius:m、rate:rad/s
- 形の大きさと一巡する時間を分けます。基本Lissajousの高さ方向は半径の0.4倍です。
- 螺旋の成長と上昇半径倍率1 + 0.03t、rise初期値0.1m/s
- 基本Spiralは時間とともに広がり、上昇します。回転が繰り返されても、位置は同じ周期へ戻りません。
制作手順
- 一定音をリサージュ軌道に置き、X方向の領域だけに明るい音色を配置します。交差するたびに音色がどう戻るか記録します。
- 同じ音を振り子へ切り替え、折り返しの停止感と、曲線の交差を比較します。
- 最後は螺旋に移り、広がりを増やします。反復する章から戻らない展開への接続として使います。
何を聴き比べるか
交差位置、折り返し時の速度、音色場への進入時刻を比較します。見かけが似た二周でも同じ状態へ戻っているとは限らないため、経路と音声の周期をそれぞれ調べます。
実装の範囲と注意点
現在のLissajous、Pendulum、Spiralは作曲用の決まった式です。任意周波数比の編集、弧長に沿う等速化、振り子の実物理モデルは今後の拡張対象です。
05ローカル実装
雲・雨・ジェット・爆発の密度設計
多数の粒を同じ動きへ置き換えるのではなく、発生方向、分布、時間差、消え方によって集合の性格をつくります。雲は体積の持続、雨は高さと反復、ジェットは方向を持つ流れ、爆発は一斉の拡散として整理します。
信号と動きの流れ
分布と発生順 → 個体の年齢 → 集団の形 → 音量配分 → 密度の展開
設計するパラメーター
- 空間分布雲:シード固定の体積点、ジェット:狭い方向分布
- ばらつきの方向を決めます。広い見た目と広い音像は同じ変数ではないため、音源幅も別に設定します。
- 周期内の年齢Rain:2.8秒、Jet:2秒の固定例
- 個体ごとに位相をずらし、連続した列をつくります。周期末に戻るジャンプを隠すか、出来事として見せるかを決めます。
- 活動数と音量補償F08では活動数Nに対して1/√N
- 密度を増やしたときの大きな音量変化を抑えるための近似です。同相の音が重なる場合まで一定音量になる保証ではありません。
制作手順
- 8個の音源で雲とジェットを比較します。同じ波形、音高集合、平均音量を使います。
- 雨の周期末に短い音量変化を置き、落下の連続成分と着地の出来事を分けて考えます。
- 一斉の爆発から、広がった位置を保持する雲へ移る構成を設計し、変化の接続を映像と音で確認します。
何を聴き比べるか
分布の中心、広がり、活動数、音量の関係を記録します。再発生の瞬間に位置が跳ぶ場合は、音量ゲートや余韻で意図どおりに接続できたかを実際の音声で調べます。
実装の範囲と注意点
Rainは周期末を着地イベントとして記録する下降モデルで、実床との衝突計算ではありません。Cloud、Jet、Explosionも有限個の声部による構成です。流体や大量粒子の物理計算、描画数に比例した無制限の発音は含みません。
06ローカル実装
群れ・引力・ばね・衝突
各音源が近くの音源との関係を読み、動きを更新します。位置を一つずつ描く方法から、集まる、離れる、追う、押し返すという関係の作曲へ移ります。初期状態と計算の刻みを保存し、同じ群れを再現します。
信号と動きの流れ
近傍関係 → 力・速度の更新 → 位置 → 接触や活動の記録 → 音量・音色への対応
設計するパラメーター
- 近傍と分離基本Swarm:近傍5m、近距離の分離1.2m
- 周囲と速度をそろえる作用、中心へ集まる作用、近づき過ぎを避ける作用を重ねます。現在の距離と係数は実装内の値です。
- 計算刻みと速度制限Swarm:120Hz、上限1.8m/s
- 画面のフレーム数から独立して状態を進めます。辞書の相互作用モデルは別の60Hz更新なので、モデルごとの条件を記録します。
- 減衰・結合・衝突E02–E08:個別に定義された数値モデル
- 減衰は動きの残り方、結合は他の音源から受ける影響を決めます。衝突の音量対応と、単に境界で折り返す処理を区別します。
制作手順
- 8音源を同じ音色で動かし、まず群れの位置だけを収録します。聴覚的なまとまりを音量変化と分けて比較します。
- ばねでつながる列へ切り替え、ひとつの動きが隣へ伝わる時間を見ます。
- 衝突モデルを使い、接触イベントと短い音量変化の時刻を照合します。複数の接触が同時に起こる区間も確認します。
何を聴き比べるか
再生、後方シーク、再実行で同時刻の状態が一致するかを調べます。音源数を変えたときは処理時間だけでなく、集団の性格と音量も変わるため、同じ条件の比較として扱いません。
実装の範囲と注意点
群れや衝突は作曲のための数値モデルです。会場の柱や観客を検出して避ける機能、実物の運動や材質を再現する物理計算ではありません。接触イベントがあらゆるシンセやエフェクトを自動で起動するわけでもありません。
07ローカル実装
音の粒と画面のパーティクル
音の粒は、元の音声履歴から短い区間を読み、窓で包み、位置を与えた信号です。軌跡を見せるだけの粒とは役割が異なります。元音源、粒、出力先の関係を保持し、画面に現れた点のうち何が実際に鳴っているかを説明します。
信号と動きの流れ
合成音の履歴 → 粒の発生 → 読み出しと窓 → 粒または集約バス → 空間出力
窓 w(a) = ½ − ½cos(2πa/L)。粒の音量係数は wet / √max(1, λL) を基本にします。窓と補償は密度増加時の変化を抑えますが、全条件の一定音量を保証しません。
設計するパラメーター
- 密度 λ と粒長 LDSP範囲:0–240粒/秒、15–500ms
- おおよその重なりはλLで考えます。密度は発生頻度、粒長は一粒の持続であり、同じ操作ではありません。
- 位置の広がりDSP範囲:0–12m
- 低密度では生成時の親音源付近へ粒の位置を決めます。粒を広げる範囲と、親の軌道を動かす範囲を分けます。
- 集約と上限同時粒数64、24粒/秒を超えると8群へ集約
- 高密度では粒を8つの空間バスへ集約し、各粒を独立出力する負荷を抑えます。独立位置の数も変わります。
制作手順
- 一定の鋸歯状波を用い、8粒/秒、80ms、狭い広がりから始めます。個々の粒を追える状態を記録します。
- 密度を16粒/秒へ変え、粒長を保持します。次に密度を保持して粒長だけを増やし、連続性を比較します。
- 24粒/秒以下とそれを超える条件を収録し、個別位置と8群の集約で分布が変わる境界を確認します。
何を聴き比べるか
粒数、実際の空間バス数、上限で落とした粒数、音声ピークを確認します。動画の注記では、音声バスに対応する点と経路の補助点を区別します。
実装の範囲と注意点
低密度の粒は生成時に決めた位置を保ちます。高密度の8群は原点を基準とする配置です。現在は各粒が独立して周回・衝突する運動や、任意の子エフェクト連鎖は実装していません。表示上の移動を、その機能の実装として扱いません。
08ローカル実装
軌跡・残像・過去の位置を使う声部
軌跡には三つの役割があります。過去の位置を説明する線、過去の位置に新しく合成した音、過去の音声を遅延して鳴らす信号です。見た目が似ていても、何を保存しているかによって作曲上の意味が変わります。
信号と動きの流れ
軌道の履歴時刻 → 過去位置の参照 → 独立合成または別系統の遅延音 → 減衰と消去
設計するパラメーター
- 履歴間隔と遅れWakeRibbon:0.3秒刻み、TraceReplay:0.5秒刻み
- 何秒前の位置を次の声部へ割り当てるかを決めます。音声ディレイの時間とは別の値です。
- 履歴の範囲TraceReplay:0–6秒の設計済み経路
- 繰り返し読む経路を指定します。区間末と始端が連続であるかを確認し、必要なら休止を含めて設計します。
- 減衰・蓄積・消去EchoSkin、Accumulate、Erodeに個別の規則
- 古い声部の残り方を決めます。年齢による減衰と個体の消去を別にすると、記憶の層を構成できます。
制作手順
- 一本の曲線を動く音源と、0.3秒ずつ遅い過去位置へ置く声部を収録します。
- 過去位置の声部を一定音色にし、次に元音源と違う音色へ変えます。線として聴こえるか、応答として分かれるか比較します。
- 別に音声ディレイを有効化し、過去の音色まで繰り返す条件と比べます。位置履歴とPCMの保存を注記します。
何を聴き比べるか
履歴時刻、声部ID、実音声の遅延を照合します。現在の音高を過去の位置で鳴らした音と、過去に鳴った音そのものを再生した音を聴き分けます。
実装の範囲と注意点
EchoSkin、WakeRibbon、TraceReplayは設計済みの経路を参照するモデルです。ライブ演奏の軌跡記録ではありません。EchoSkinとWakeRibbonの履歴位置の音は独立合成で、遅延バスと過去PCMの厳密な位置同期を実装したものではありません。
09ローカル実装
個体・集団・空間を重ねる
一つの音源の周回、声部全体の回転、空間のねじれを異なる層へ置きます。小さな反復を保ちながら全体を変化させられるため、音符を書き換えずに章の展開をつくれます。変形の中心と処理順も楽譜に含めます。
信号と動きの流れ
個体の軌道 → 集団の変換と空間変形 → 境界処理 → 音色場と出力位置への対応
設計するパラメーター
- 変形の中心XYZ、m。回転・拡縮・ねじれごとに指定
- 同じ回転量でも中心が変われば経路は変わります。音源自身の中心、集団の中心、部屋の原点を同一視しません。
- 処理順motionを先頭にgroup/warpの順序を保存
- 回転の後にねじる場合と、ねじれた配置を回す場合を比較します。入れ替えた順序を保存して再現します。
- 境界の扱いclamp・wrap・reflect
- 停止、反対側への移送、座標の折り返しを選びます。境界の位置と処理による不連続を合わせて記録します。
制作手順
- 4声の周回を一つの集団にし、個々の周期と位相を固定します。
- 集団全体をゆっくり回転させ、次にZ位置で回転量が変わるTwistを加えます。
- 変形の順を入れ替え、同じ音色場を横切る時刻と、声部間の距離がどう変わるかを記録します。
何を聴き比べるか
局所座標と最終座標、音源ID、同時刻の出力配分を比較します。空間を拡大しても会場やスピーカーを拡大したことにはならないため、部屋への対応は別に検証します。
実装の範囲と注意点
変形は幾何学的な処理です。壁や柱の実形状、反射、遮蔽を自動で解くものではありません。reflect境界も座標の折り返しであり、質量や接触力を持つ衝突計算とは異なります。
10ローカル実装
ループの継ぎ目と時間の変形
滑らかなループには、位置が戻ることに加え、速度、音量、音色、余韻、乱数やシミュレーションの状態を考える必要があります。動きの時間を巻き戻す処理と、録音済みの音を逆再生する処理も分けて設計します。
信号と動きの流れ
基準時刻 → 時間変換 → 軌道の状態 → 音声処理 → 終端と始端の比較 → 動画出力
位置の継ぎ目 eₚ = ‖p(T) − p(0)‖、速度の継ぎ目 eᵥ = ‖v(T) − v(0)‖。この二つが小さくても、PCMの値・包絡・エフェクト内部状態が戻るとは限りません。
設計するパラメーター
- ループ区間Loop:正のperiod秒
- 制御時間を区間先頭へ戻します。経路そのものを閉じる処理ではないので、元の軌道の始端と終端を調べます。
- 停止・逆行・刻みFreeze、Reverse、Stutter、Quantize
- 位置の時間を止める、逆向きに読む、短区間を反復する、段階的に進める操作です。音声時間へ作用するかを明示します。
- 同期の単位例:48kHz / 60fpsでは1フレーム800サンプル
- 音声サンプル時刻から映像フレームを対応させます。10秒を600フレームで書き出す場合、終端状態は検証に使い、余分な1枚を足しません。
制作手順
- 上下動のない円軌道を整数周で書き出し、終端と始端の位置、速度、音量を比較します。
- 同じ経路へディレイを加え、初回の立ち上がりと反復中の定常的な余韻を分けて収録します。
- 終端の短区間と始端を連結した音声を試聴します。意図した切断、短いフェード、十分な余韻のどれで終えるかを決め、書き出した動画で確認します。
何を聴き比べるか
継ぎ目直前と直後の位置差、速度差、音量、クリック、残響の切断を調べます。複数周期を収録して最初の一周だけが異なる場合も記録し、閉じた軌道と完成した音声ループを同じ判定にしません。
実装の範囲と注意点
現在の制御時間Loopは剰余による時刻変換です。任意のシミュレーション状態や音声バッファを周期定常状態へ自動調整する機能、完成動画の継ぎ目を自動修復する機能はありません。基本の時間変換と音声バッファ操作の対応も限定されています。