Skip to content

波形操作合成とWaveTerrainSynthesis

最終更新日時: 2025年08月25日 12:57

  • nothing

Wave Terrain Synthesis(WTS)は、2次元または3次元の数学的な地形(terrain)上を、 軌道(trajectory)に沿って動くことで音を生成する手法である。

軌道の周期性によって音の周波数成分を与えることもできるし、 地形の形状によって音の周波数成分が与えられることもある。

s(t)=f(x(t),y(t))s(t)=f(x(t),y(t))

としてs(t)自体が最終的に出力される音になるが、関数s(t)の形式、x(t),y(t)で表される 軌道の形や軌道上の移動速度は定義されておらずその自由度から多様な音響的な合成が可能となる。

例えば、

{f(x,y)=x+yx(t)=Asin(ωt)y(t)=Bsin(2ωt) \left\{ \, \begin{aligned} & f(x,y) = x+y\\ & x(t) = A \cdot sin(\omega t)\\ & y(t) = B \cdot sin(2\omega t) \end{aligned} \right.

であれば、地形はz=x+yの平面上で、軌道は1:2のリサージュ図形となる。

f(x,y)=Asin(ωt)+Bsin(2ωt) f(x,y)= A sin(\omega t) + B sin(2 \omega t)

単純に倍音の関係にある二つのサイン波の加算合成音であると言える。 軌道の周波数成分が音の性質を決定していると言ってよいだろう。

一方、下記のように定義した場合には、

{f(x,y)=Asin(x)+Bsin(y)x(t)=ωty(t)=2x=2ωt \left\{ \, \begin{aligned} & f(x,y)&=& A sin(x) + B sin(y)\\ & x(t) &=& \omega t\\ & y(t) &=& 2x= 2 \omega t \end{aligned} \right.

地形はx,yに依存した正弦波が合成された地形となり、 軌道はy=2xy=2x直線で、

v=(dxdt)2+(dydt)2=5ω\begin{aligned} v=&\sqrt{(\frac{dx}{dt})^2 + (\frac{dy}{dt})^2 }\\ =& \sqrt{5} \omega \end{aligned}

速度5ω\sqrt{5} \omegaの等速直線運動となる。

しかし生成する音は、

f(x,y)=Asin(ωt)+Bsin(2ωt) f(x,y)= A sin(\omega t) + B sin(2 \omega t)

となり、先ほどの結果と同じ音を生成することが分かる。

これより、WTSは異なる地形と軌道の組み合わせで同じ音が生成される場合もあり得る。

一方、同じ地形に対して、軌道が単振動となるように設定すると、音色が大きく変わることを以下に示す。

{f(x,y)=Asin(ωx)+Bsin(2ωy)x(t)=x0sin(ωmt)y(t)=y0=0 \left\{ \, \begin{aligned} & f(x,y)= A sin(\omega x) + B sin(2 \omega y)\\ & x(t)=x_0 sin( \omega_m t)\\ & y(t)=y_0 = 0 \end{aligned} \right.

この結果、生成される音は、

f(x,y)=Asin(ω0x0sin(ωmt)) f(x,y)= A sin(\omega_0 x_0 sin(\omega_m t))

となり、複雑な音を生成することが分かる。

この波形はFM合成音にも式の形が似ているが厳密には異なっている。 FM合成音は下記のように定義される。

s(t)=Asin(ωct+Isin(ωmt))s(t)=Asin(\omega_c t+I sin(\omega_m t))
  • ωc\omega_cはキャリア周波数(carrier frequency)
  • ωm\omega_mはモジュレーター周波数(modulator frequency)
  • II は変調インデックス(modulation index)[変調の強さを決める] である。

前節の説明により、自由な地形と自由な軌道の組み合わせにより豊かな音響表現が可能であることが分かった。 移行、地形の例、軌道の例としてどのようなものが考えられるかを検討する。

{h(x,y)=sin(2πx)sin(2πy)h(x,y)=sin(2πx)cos(3πy)+cos(4πx)sin(5πy)h(x,y)=i=0n12iP(ωix,ωiy)h(x,y,t)=sin(2πx+ϕ(t))sin(2πy+ψ(t)) \left\{ \, \begin{align} & h(x,y) = \sin(2\pi x)\sin(2\pi y) & \tag{1}\\ & h(x,y) = \sin(2\pi x)\cos(3\pi y) + \cos(4\pi x)\sin(5\pi y) & \tag{2}\\ & h(x,y) = \sum_{i=0}^{n} \frac{1}{2^i}P(\omega^i x, \omega^i y) & \tag{3}\\ & h(x,y,t) = \sin(2\pi x + \phi(t))\sin(2\pi y + \psi(t)) & \tag{4}\\ \end{align} \right.
  • P(x,y)P(x,y)はパーリンノイズ関数
  • ω\omegaは周波数倍率
  • nnはオクターブ数
  • ϕ(t)\phi(t)ψ(t)\psi(t)は時間変化する位相関数

例えばTHREE.JSでfragment shaderを用いて、procedual textureを生成し 地形として音響合成を試みることも可能であろうし、 地形の時間的変化を持たせるときに、テクスチャ間でモーフィングを行うことも考えうる。

Perlinノイズとそのフラクタル合成

Section titled “Perlinノイズとそのフラクタル合成”

フラクタル合成(FBM: Fractional Brownian Motion)を利用した Perlin Noise の式について説明する。

フラクタル合成された Perlin Noise は次のように定義される:

h(x,y)=i=0n12iP(ωix,ωiy)h(x,y) = \sum_{i=0}^{n} \frac{1}{2^i} P(\omega^i x, \omega^i y)

ここで:

  • P(x,y)P(x,y) は 2D Perlin Noise
  • nn はオクターブ数(加算するノイズの層の数)
  • ω\omega は周波数スケールファクター
  • ii はオクターブのインデックス

この項は 振幅の減衰(Amplitude Scaling) を目的とする。フラクタル合成では、異なるスケールのノイズを重ねるが、高周波成分を過度に強調しないために各オクターブの振幅を 12i\frac{1}{2^i} で抑える。これにより、よりスムーズなノイズが生成される。

ii はオクターブ番号(Octave Index)を表す。具体的には、i=0i=0 から始まり、ii が増えるごとに高周波成分のノイズを追加する。

例えば:

  • i=0i=0 は基本の低周波ノイズ
  • i=1i=1ω\omega 倍の周波数を持つノイズを追加
  • i=2i=2ω2\omega^2 倍の周波数を持つノイズを追加
  • これを nn 回繰り返す

このようにして、異なるスケールのノイズを重ね、リアルなパターンを作り出す。

nnオクターブ数(Octave Count) であり、何回ノイズを合成するかを決めるパラメータnn が大きいほど、より細かいディテールが追加され、リアルな質感になるが、計算コストも増える。

例えば:

  • n=1n=1 なら基本的なノイズのみ
  • n=4n=4 なら 4 回異なるスケールのノイズを重ねる
  • n=8n=8 ならより高精細なノイズになる

パーリンノイズの基本処理との違い

Section titled “パーリンノイズの基本処理との違い”

通常の Perlin Noise は、以下のように生成される:

  1. グリッド点にランダムな勾配ベクトルを設定
  2. 補間関数(エルミート補間や 5 次補間)でスムーズに補間
  3. 1 つのノイズマップを生成

しかし、上記のフラクタル合成の式では 単一のノイズではなく、複数の異なるスケールのノイズを合成している。このため、より自然でリアルなノイズパターンを得ることができる。

(x(t)y(t))=(rxcos(2πfxt)rycos(2πfyt)) \begin{pmatrix} x(t) \\ y(t) \end{pmatrix} = \begin{pmatrix} r_x\cos(2\pi f_xt) \\ r_y\cos(2\pi f_yt) \end{pmatrix}

カオス的な軌道(ローレンツアトラクター)の例:

Section titled “カオス的な軌道(ローレンツアトラクター)の例:”
{x˙=σ(yx)y˙=x(ρz)yz˙=xyβz \begin{cases} \dot{x} = \sigma(y-x) \\ \dot{y} = x(\rho-z) - y \\ \dot{z} = xy - \beta z \end{cases}
  • 出力される周波数成分は軌道の周波数fxf_xfyf_yの整数倍の線形結合として現れる:
fout=nfx+mfy(n,mZ)f_{out} = nf_x + mf_y \quad (n,m \in \mathbb{Z})
  • 軌道の周波数の比
fratio=fxfyf_{ratio} = \frac{f_x}{f_y}

が有理数の場合、出力信号は周期的となる。例えば:

  • 円形軌道(fx=fyf_x = f_y)で地形関数が
h(x,y)=sin(2πx)sin(2πy)h(x,y) = \sin(2\pi x)\sin(2\pi y)

の場合、主にfxf_xfyf_yの2倍の周波数成分が現れる

  • 同じ円形軌道で地形関数がh(x,y)=sin(4πx)sin(4πy)h(x,y) = \sin(4\pi x)\sin(4\pi y)の場合、主にfxf_xfyf_yの4倍の周波数成分が現れる
  • fratiof_{ratio}が無理数の場合、出力信号は非周期的となり、より複雑なスペクトルを持つ
  • これは加算合成とは異なり、地形関数と軌道の相互作用による非線形な波形生成プロセスである
  • 出力信号の瞬時的な変化は以下の要素によって決定される:
    • 軌道の速度ベクトル: v(t)=(dxdtdydt) \vec{v}(t) = \begin{pmatrix} \frac{dx}{dt} \\ \frac{dy}{dt} \end{pmatrix}
    • 地形関数の局所的な勾配: h(x,y)=(hxhy) \nabla h(x,y) = \begin{pmatrix} \frac{\partial h}{\partial x} \\ \frac{\partial h}{\partial y} \end{pmatrix}
  • 瞬時的な出力値の変化率は、速度ベクトルと地形の勾配の内積で与えられる: dsdt=v(t)h(x(t),y(t))\frac{ds}{dt} = \vec{v}(t) \cdot \nabla h(x(t),y(t))
  • この結果、出力信号のスペクトルは:
    • 地形関数の空間周波数特性
    • 軌道の速度の時間変化
    • 軌道が通過する地形の局所的な特徴 の組み合わせとして決定される。周期的な軌道の場合のような単純な周波数成分の記述はできない。
  • カオス力学系(例:ローレンツ方程式)による軌道生成:
{x˙=σ(yx)y˙=x(ρz)yz˙=xyβz \begin{cases} \dot{x} = \sigma(y-x) \\ \dot{y} = x(\rho-z) - y \\ \dot{z} = xy - \beta z \end{cases}
  • 軌道の状態空間上での動きは、アトラクターの構造によって特徴づけられる:

    • 局所的なリャプノフ指数: λ(t)=limΔt01Δtlndr(t+Δt)dr(t)\lambda(t) = \lim_{\Delta t \to 0} \frac{1}{\Delta t} \ln\left|\frac{d\vec{r}(t+\Delta t)}{d\vec{r}(t)}\right|
    • 軌道の発散率: D(t)=v(t)=x˙x+y˙y+z˙zD(t) = \nabla \cdot \vec{v}(t) = \frac{\partial \dot{x}}{\partial x} + \frac{\partial \dot{y}}{\partial y} + \frac{\partial \dot{z}}{\partial z}
  • 出力信号の生成プロセス:

    1. カオス軌道の(x,y)成分を地形関数への入力として使用:

      s(t)=h(x(t),y(t))s(t) = h(x(t), y(t))
    2. 瞬時的な周波数成分は以下の要素で決定される:

      • 軌道の局所的な速度: v(t)=(x˙(t)y˙(t))\vec{v}(t) = \begin{pmatrix} \dot{x}(t) \\ \dot{y}(t) \end{pmatrix}
      • 地形関数の勾配: h(x,y)=(hxhy)\nabla h(x,y) = \begin{pmatrix} \frac{\partial h}{\partial x} \\ \frac{\partial h}{\partial y} \end{pmatrix}
      • 瞬時的な出力変化率: dsdt=v(t)h(x(t),y(t))\frac{ds}{dt} = \vec{v}(t) \cdot \nabla h(x(t),y(t))
  • スペクトル特性:

    • 広帯域ノイズ的な性質を持つが、アトラクターの構造を反映した特徴的なスペクトル包絡を示す
    • パワースペクトル密度は近似的に: P(ω)1ωαP(\omega) \propto \frac{1}{|\omega|^\alpha} ここでα\alphaはアトラクターのフラクタル次元に関連する指数である
  • 音響合成の実装:

    1. カオス方程式の数値解法(ルンゲ・クッタ法など)による軌道生成
    2. 地形関数上での軌道の投影
    3. 出力信号の生成と正規化: snorm(t)=s(t)min(s(t))max(s(t))min(s(t))21s_{norm}(t) = \frac{s(t) - \min(s(t))}{\max(s(t)) - \min(s(t))} \cdot 2 - 1
    4. 必要に応じてフィルタリングやエンベロープ処理を適用
  • 音色制御パラメータ:

    • カオスパラメータ(σ\sigma, ρ\rho, β\beta):スペクトルの複雑さを制御
    • 数値積分のステップサイズ:高周波成分の生成を制御
    • 地形関数の空間周波数:全体的な周波数分布を制御
    • 正規化とフィルタリング:ダイナミックレンジと周波数バランスを制御

出力信号の振幅は振幅パラメータ、起動のスケーリングダイナミックレンジ制御

地形関数h(x,y)h(x,y)に対して、振幅パラメータAAを導入します:

hA(x,y)=Ah(x,y) h_A(x,y) = A \cdot h(x,y)

ここでAAは地形のスケーリング係数で、出力の全体的な音量を制御します。

  • 軌道半径rxr_xryr_yにより直接スケーリング
s(t)=hA(x(t)rx,y(t)ry) s(t) = h_A(\frac{x(t)}{r_x}, \frac{y(t)}{r_y})
非周期的/カオス的な軌道の場合:
Section titled “非周期的/カオス的な軌道の場合:”
  • 正規化係数α(t)\alpha(t)を導入:
α(t)=1x(t)2+y(t)2+ϵ \alpha(t) = \frac{1}{\sqrt{x(t)^2 + y(t)^2 + \epsilon}}

ただし、ϵ\epsilonは0除算を防ぐための小さな正の定数

  • スケーリングされた出力:
s(t)=hA(α(t)x(t),α(t)y(t)) s(t) = h_A(\alpha(t)x(t), \alpha(t)y(t))

軌道の種類によらず、以下のパラメータで制御可能:

R=maxt[0,T]x(t)2+y(t)2R = \max_{t \in [0,T]} \sqrt{x(t)^2 + y(t)^2} senv(t)=E(t)s(t) s_{env}(t) = E(t) \cdot s(t) sfinal(t)=g(senv(t)) s_{final}(t) = g(s_{env}(t))

ここでggは非線形関数(例:ソフトクリッピング):

g(x)=tanh(βx) g(x) = \tanh(\beta x)

β\betaはクリッピングの強さを制御するパラメータ

円形軌道以外も定義することは可能。

(x(t)y(t))=(rxcos(2πfxt)+rx2cos(2πfx2t)rycos(2πfyt)+ry2cos(2πfy2t)) \begin{pmatrix} x(t) \\ y(t) \end{pmatrix} = \begin{pmatrix} r_x\cos(2\pi f_xt) + r_{x2}\cos(2\pi f_{x2}t) \\ r_y\cos(2\pi f_yt) + r_{y2}\cos(2\pi f_{y2}t) \end{pmatrix}
  • サンプリングレートfsf_sは、生成される信号の最高周波数の2倍以上である必要があります(ナイキストの定理):
fs2max(fx,fy)f_s \geq 2\max(f_x, f_y)
  • 出力信号は通常[-1, 1]の範囲に正規化し、クリッピングを防ぐ必要がある。
snorm(t)=s(t)min(s(t))max(s(t))min(s(t))21s_{norm}(t) = \frac{s(t) - \min(s(t))}{\max(s(t)) - \min(s(t))} \cdot 2 - 1

wterrainでwave terrain synthesisを実装する。 軌道は円形で周期的な軌道のみをサポートする。 地形関数は分離可能な形式(h(x,y)=f(x)g(y)h(x,y) = f(x)g(y))に限定される。 これは計算効率と実装の単純さのためだが、以下の制限がある:

  • 複雑な地形パターンの表現が制限される
  • 回転対称性を持つ地形が作成できない
  • 局所的な特徴を持つ地形の表現が困難である

動的な地形変調はテーブル更新を通じてのみ可能である。

(x(t)y(t))=(xc+rxcos(2πft)yc+rycos(2πft)) \begin{pmatrix} x(t) \\ y(t) \end{pmatrix} = \begin{pmatrix} x_c + r_x\cos(2\pi f t) \\ y_c + r_y\cos(2\pi f t) \end{pmatrix}

信号は

s(t)=Ah(x(t)xcrx,y(t)ycry)s(t) = A \cdot h\left(\frac{x(t)-x_c}{r_x}, \frac{y(t)-y_c}{r_y}\right)

のように生成される。ffkpchパラメータにより指定される基本周波数である。

aout wterrain kamp, kpch, k_xcenter, k_ycenter, k_xradius, k_yradius, itabx, itaby
  • 前述の振幅パラメータAAに対応
  • 出力信号の全体的な振幅を制御
  • 軌道の基本周波数を制御
  • 周期的な軌道の場合のfxf_x, fyf_yの基準となる周波数
  • 軌道の中心点(xc,yc)(x_c, y_c)を定義
  • 地形上の走査中心位置の制御
  • 地形関数の座標変換:h(xxc,yyc)h(x-x_c, y-y_c)
  • 前述の軌道スケーリングパラメータrxr_x, ryr_yに対応
  • 走査範囲の制御
  • スケーリングされた座標:(xrx,yry)(\frac{x}{r_x}, \frac{y}{r_y})
  1. itabx, itaby
    • 地形関数h(x,y)h(x,y)を定義するテーブル
    • 2次元の地形を1次元テーブルの組み合わせとして表現
    • 実際の地形値:h(x,y)=ftabx(x)ftaby(y)h(x,y) = f_{tabx}(x) \cdot f_{taby}(y)
  • 3次元地形のリアルタイム操作が可能である
  • OpenGLを使用した視覚的フィードバックにより:
    • 地形の形状と軌道の関係が直観的に把握可能である
    • パラメータ変更の効果をリアルタイムで確認できる
    • パフォーマンス時の視覚的要素としても利用できる
  • 任意の地形関数の定義が可能である:
    • 数式による定義
    • テーブルデータのインポート
    • リアルタイムの描画入力
    • ただし計算負荷に応じて更新レートに制限がある

2d.wave~ (Pure Dataとの互換オブジェクト)

Section titled “2d.wave~ (Pure Dataとの互換オブジェクト)”
  • より単純な2次元地形に特化:
    • テーブルベースの地形定義のみ
    • 分離可能な形式(h(x,y)=f(x)g(y)h(x,y) = f(x)g(y))に限定
    • 計算効率重視の実装である
  • リアルタイムのパラメータ制御:
    • 低レイテンシーである
    • CPU負荷が予測可能である
  • 地形制御
    • terrain_buffer: 3D地形データ
    • terrain_scale: 地形の振幅スケーリング(理論でのAAに対応)
    • terrain_offset: 地形のDCオフセット
  • 軌道制御
    • orbit_freq: 基本周波数(fxf_x, fyf_yの基準)
    • orbit_phase: 軌道の位相オフセット
    • orbit_radius: 軌道半径(rxr_x, ryr_yに対応)
  • 変調制御
    • mod_amount: 地形変調の深さ
    • mod_rate: 変調速度
  • 柔軟な地形定義をサポート
  • 動的な地形更新が可能
  • 様々な軌道タイプをサポート:
    • 周期的軌道
    • カオス軌道
    • アルゴリズミック軌道
  • 地形パラメータ
    • terrain: 地形関数または配列
    • terrainSize: 地形のサイズ
    • interpolation: 補間方式
  • 軌道パラメータ
    • freq: 基本周波数
    • xScale, yScale: 軌道スケール(rxr_x, ryr_yに相当)
    • orbit_type: 軌道の種類(周期的/カオス的)
  • 追加制御
    • chaos_param: カオス軌道のパラメータ
    • smooth: 出力の平滑化係数
  • シンプルな2次元地形合成
  • リアルタイムでのパラメータ変更
  • 教育用途に適した実装
  • 基本パラメータ
    • amplitude: 出力振幅(AAに対応)
    • frequency: 基本周波数
    • x_center, y_center: 走査中心位置
    • x_range, y_range: 走査範囲(rxr_x, ryr_yに対応)
  • テーブル制御
    • table1, table2: 地形定義テーブル
    • table_interp: テーブル補間方式
  • モジュラー型の実装
  • 視覚的なパッチング
  • カスタム地形設計が可能
  • 地形モジュール
    • terrain_type: 地形生成方式
    • terrain_mod: 地形変調
    • terrain_scale: 地形スケーリング
  • 軌道モジュール
    • orbit_shape: 軌道形状
    • orbit_speed: 軌道速度
    • orbit_chaos: カオス度
  • エフェクト
    • smooth_amount: 平滑化
    • feedback: フィードバック量

地形関数に対する時間変化を定義します:

h(x,y,t)=h0(x,y)+M(x,y,ωmodt)h(x,y,t) = h_0(x,y) + M(x,y,\omega_{mod}t)

ここで:

  • h0(x,y)h_0(x,y)は基本地形関数
  • M(x,y,ϕ)M(x,y,\phi)は変調関数
  • ωmod\omega_{mod}は変調角周波数(mod_rateに対応)

変調関数の一般的な形式:

M(x,y,ϕ)=Amodk=1Nmk(x,y,ϕ)M(x,y,\phi) = A_{mod}\sum_{k=1}^{N} m_k(x,y,\phi)
  • AmodA_{mod}は変調深度(mod_amountに対応)
  • mkm_kは基本変調関数
  • NNは変調成分の数

Reaktorのterrain_typeには以下の選択肢が用意されています:

  • 正弦波: h(x,y) = sin(2πx)sin(2πy)
  • 三角波: h(x,y) = tri(x)tri(y)
  • ノコギリ波: h(x,y) = saw(x)saw(y)
  • 矩形波: h(x,y) = rect(x)rect(y)
  • 双曲線: h(x,y) = x/y
  • 放物面: h(x,y) = x2 + y2
  • 指数関数: h(x,y) = exp(-x2-y2)
  • ベッセル関数: h(x,y) = J?(√(x2+y2))

Procedural Terrains(手続き型地形)

Section titled “Procedural Terrains(手続き型地形)”
  • Perlin Noise: h(x,y) = Σ?(1/2?)P(2?x, 2?y)
  • Fractal: h(x,y) = Σ?(1/2?)F(2?x, 2?y)
  • Cellular Automata: h(x,y) = CA(x,y,t)
  • AM変調: h(x,y) = sin(2πx)sin(2πy)(1 + μsin(2πft))

  • FM変調: h(x,y) = sin(2πx + βsin(2πft))sin(2πy)

  • Ring変調: h(x,y) = sin(2πx)sin(2πy)sin(2πft)

  • マンデルブロ集合: h(x,y) = f(z), z = x + yi

  • ジュリア集合: h(x,y) = g(z,c), z = x + yi

カスタマイズ可能なパラメータ

Section titled “カスタマイズ可能なパラメータ”

各地形タイプに対して:

  1. Scale Parameters(スケールパラメータ)

    • x_scale: X軸方向のスケーリング
    • y_scale: Y軸方向のスケーリング
    • amplitude: 振幅スケーリング
  2. Modulation Parameters(変調パラメータ)

    • mod_depth: 変調深度
    • mod_freq: 変調周波数
    • mod_type: 変調タイプ
  3. Evolution Parameters(発展パラメータ)

    • evolution_rate: 時間発展の速度
    • complexity: 複雑さの程度
    • seed: 乱数生成のシード値
  • 研究用/実験的実装
  • 高度な地形設計機能
  • スペクトル処理との統合
  • 研究用/実験的実装
  • 教育・研究目的の実装
  • アルゴリズミックな制御が可能

各地形タイプは、前述の理論的フレームワークにおける地形関数h(x,y)h(x,y)の具体的な実装として位置づけられます:

  1. 基本波形:

    hbasic(x,y)=f(x)g(y)h_{basic}(x,y) = f(x)g(y)

    ここでf,gf,gは基本周期関数

  2. 手続き型地形:

    hproc(x,y)=i=0n12iP(ωix,ωiy)h_{proc}(x,y) = \sum_{i=0}^{n} \frac{1}{2^i}P(\omega^i x, \omega^i y)

    ここでPPは基本的なノイズ関数

  3. 変調型地形:

    hmod(x,y,t)=h0(x,y)(1+M(t))h_{mod}(x,y,t) = h_0(x,y)(1 + M(t))

    ここでM(t)M(t)は変調関数

  4. 補間関連(新出)

    • interpolation → I(x,y)I(x,y) : 補間関数
    hinterp(x,y)=i,jh(xi,yj)I(xxi,yyj)h_{interp}(x,y) = \sum_{i,j} h(x_i,y_j)I(x-x_i,y-y_j)
    • smooth_amount → σ\sigma : 平滑化パラメータ
    hsmooth(x,y)=12πσ2h(u,v)e(xu)2+(yv)22σ2dudvh_{smooth}(x,y) = \frac{1}{2\pi\sigma^2}\int\int h(u,v)e^{-\frac{(x-u)^2+(y-v)^2}{2\sigma^2}}dudv
  5. フィードバック関連(新出)

    • feedback → β\beta : フィードバックパラメータ 時刻ttでの出力:
    s(t)=(1β)h(x(t),y(t))+βs(tτ)s(t) = (1-\beta)h(x(t),y(t)) + \beta s(t-\tau)

    ここでτ\tauは遅延時間

  6. 軌道形状制御(新出)

    • orbit_shape → F(t)\vec{F}(t) : 基本軌道関数
    r(t)=F(t)+P(t)\vec{r}(t) = \vec{F}(t) + \vec{P}(t)

    ここでP(t)\vec{P}(t)は摂動項

  7. カオス度制御(新出)

    • orbit_chaos → κ\kappa : カオス制御パラメータ
    rchaos(t)=r(t)+κC(t)\vec{r}_{chaos}(t) = \vec{r}(t) + \kappa\vec{C}(t)

    ここでC(t)\vec{C}(t)はカオス項

理論的記号 Max/MSP SuperCollider Reaktor
$\omega_{mod}$ mod_rate modFreq mod_speed
$A_{mod}$ mod_amount modDepth mod_intensity
$\sigma$ smooth smoothing smooth_amount
$\beta$ feedback feedbackAmt fb_amount
$\kappa$ chaos_amt chaosParam orbit_chaos

これらのパラメータは、実装によって名称は異なりますが、基本的な機能は同様です。異なる実装間でのパラメータ変換は、これらの理論的定義に基づいて行うことができます。

付録:リャプノフ指数の数学的定義

Section titled “付録:リャプノフ指数の数学的定義”

リャプノフ指数は、動的システムにおける軌道の収束または発散の度合いを定量化する指標です。

n次元の連続力学系において:

  1. 状態空間上の点 x0\vec{x}_0 から出発する軌道を考えます:

x(t)=ϕt(x0)\vec{x}(t) = \phi_t(\vec{x}_0)

ここで ϕt\phi_t は時間発展作用素です。

  1. 初期状態からの微小な摂動 δx0\delta\vec{x}_0 を考えます。この摂動の時間発展は:

δx(t)=Jt(x0)δx0+O(δx02)\delta\vec{x}(t) = \mathbf{J}_t(\vec{x}_0)\delta\vec{x}_0 + O(\|\delta\vec{x}_0\|^2)

ここで Jt\mathbf{J}_t はヤコビ行列(線形化された時間発展)です。

  1. リャプノフ指数は、この摂動の指数的成長率として定義されます:

λ(x0,v)=limt1tlnJt(x0)vv\lambda(\vec{x}_0, \vec{v}) = \lim_{t \to \infty} \frac{1}{t} \ln \frac{\|\mathbf{J}_t(\vec{x}_0)\vec{v}\|}{\|\vec{v}\|}

ここで v\vec{v} は初期摂動の方向を表す単位ベクトルです。

n次元システムには n個のリャプノフ指数があり、これらは摂動の主軸方向に対応します:

λ1λ2...λn\lambda_1 \geq \lambda_2 \geq ... \geq \lambda_n

  1. 最大リャプノフ指数が正(λ1>0\lambda_1 > 0)である場合、システムはカオス的です

  2. 軌道の予測可能性の時間スケール τ\tau は以下で与えられます:

τ1λ1\tau \approx \frac{1}{\lambda_1}

  1. Wave Terrain Synthesisにおいて、正のリャプノフ指数は:
    • より広いスペクトル分布
    • 非周期的な音響特性
    • 時間的に変化する音色 を生成する傾向があります。

波形走査合成とWave Terrain Synthesis

Section titled “波形走査合成とWave Terrain Synthesis”
  • 波形走査合成(Wavescanning Synthesis):
    • 波形テーブルを周期的に走査して音を生成する合成手法の一般的な呼称
    • 1次元の波形テーブルを使用する場合と、2次元以上の波形テーブルを使用する場合がある
  • Wave Terrain Synthesis (WTS):
    • 波形走査合成の一種で、特に2次元または3次元の地形(terrain)上を軌道(trajectory)に沿って走査する手法
    • 地形は数学的関数やテーブルで表現される
    • 1978年にRich Goldによって考案された手法

graph LR A[波形走査合成 \nWavescanning Synthesis] —> B[1次元波形走査] A —> C[多次元波形走査]

B —> D[ウェーブテーブル合成] B —> E[その他の1次元走査手法]

C —> F[Wave Terrain Synthesis \n WTS]

F —> G[2次元WTS] F —> H[3次元WTS]

G —> I[地形関数ベース] G —> J[テーブルベース]

H —> K[関数ベース] H —> L[ボクセルベース]

classDef default fill:#f9f,stroke:#333,stroke-width:2px; classDef secondary fill:#bbf,stroke:#333,stroke-width:2px; classDef tertiary fill:#ddf,stroke:#333,stroke-width:2px;

class A default; class B,C secondary; class D,E,F,G,H tertiary; class I,J,K,L tertiary; `} />

  • 1次元波形走査:
    • 単一の波形テーブルを周期的に走査
    • 走査速度で基本周波数を制御
    • 波形の選択と走査方法で音色を制御
  • Wave Terrain Synthesis:
    • 2次元以上の地形上を軌道に沿って走査
    • 軌道の形状と速度で周波数特性を制御
    • 地形関数と軌道の組み合わせで複雑な音色を生成

このように、WTSは波形走査合成の考え方を多次元に拡張した手法であり、より複雑な音響合成が可能となっている。

波形走査合成は、2つの異なる波形間を周期的に移動(スキャン)することで音色を作り出す音声合成方式である。この二つ波形を基本波形と呼ぶ。

y(t)=s(t)f1(t)+(1s(t))f2(t) y(t) = s(t)f_1(t) + (1-s(t))f_2(t)

スキャン関数s(t)は、なめらかな0<s(t)<10<s(t)<1の値域を持つ関数を取る。

f1(t)=A1sin(2πf1t+ϕ1)f2(t)=A2sin(2πf2t+ϕ2)\begin{aligned} f_1(t) = A_1\sin(2\pi f_1t + \phi_1)\\ f_2(t) = A_2\sin(2\pi f_2t + \phi_2) \end{aligned}
  • A1,A2A_1, A_2:振幅
  • f1,f2f_1, f_2:周波数
  • ϕ1,ϕ2\phi_1, \phi_2:初期位相

スキャン関数は、

s(t)=α+βsin(2πfst) s(t) = \alpha + \beta\sin(2\pi f_st)
  • α\alpha:基準となる混合率(0〜1)
  • β\beta:スキャンの深さ
  • fsf_s:スキャンの速さ

基本の波形走査合成に対して、以下の変調処理を加えることで音響特性を拡張できる。

出力波形y(t)y(t)に対する振幅変調:

AM(t)=[1+msin(2πfmt)]y(t)AM(t) = [1 + m\sin(2\pi f_mt)]y(t)
  • mm:変調度(0~1)
  • fmf_m:変調周波数

基本波形y(t)y(t)に対する位相変調は、時間軸上での波形の歪みとして表現できる。

単一正弦波y(t)=Asin(2πft)y(t) = A\sin(2\pi ft)に対して、位相ϕ(t)\phi(t)による変調を加えると:

y(t)=Asin(2πft+ϕ(t))y'(t) = A\sin(2\pi ft + \phi(t))

位相項を正弦波で変調する場合:

ϕ(t)=Isin(2πfmt)\phi(t) = I\sin(2\pi f_mt)
  • II:変調指数(位相偏移量)
  • fmf_m:変調周波数

波形走査合成の出力y(t)y(t)に対する位相変調は、時間軸の変形として:

PM(t)=y(t+Isin(2πfmt))PM(t) = y(t + I\sin(2\pi f_mt))

これは元の波形y(t)y(t)の時間軸をIsin(2πfmt)I\sin(2\pi f_mt)に従って周期的に前後させることを意味する。

パラメータ変化による音響効果
Section titled “パラメータ変化による音響効果”
パラメータ変化範囲音響効果
α\alpha0 → 1基本波形1から波形2への移行
β\beta0 → 1スキャン深度(音色変化の幅)
fsf_s0.1 → 20Hzスキャン速度(音色変化の速さ)
mm0 → 1トレモロの深さ
fmf_m2 → 20Hzトレモロ/音色変化の速度
II0 → 10音色の豊かさ
  1. エレクトリックピアノ

    • f1(t)f_1(t):正弦波
    • f2(t)f_2(t):矩形波
    • fs=4Hzf_s = 4Hz:適度なスキャン速度
    • m=0.2m = 0.2:軽いトレモロ
  2. ストリングス

    • f1(t)f_1(t):ノコギリ波
    • f2(t)f_2(t):三角波
    • fs=0.5Hzf_s = 0.5Hz:遅いスキャン
    • I=3I = 3:豊かな倍音