Wave Fold Effectを作ってみた。(応用編1)

 Wave Folderは管楽器シミュレート。歪ませるだけではありません。

という所までわかりました。
4直列するとほぼそのような倍音が出来てFM音源に似た音色&サチュレーションでした。
基礎編の回路で私の設計思想がよくあらわれております。
最初はあんな感じです。
invertの次にinvertして次にinvert等の未最適化部分を最適化すると構造がシンプルになり、現在の回路に至ります。


シンプルになりま・・・どうだろう?



最適化した回路はこちらです。
まず言える事はスイッチングにズレがあってはいけない。
それがスパイクノイズを発生し正確な電圧が解りません。
100kΩで負帰還アンプを作るよりも10kΩで負帰還アンプを作ったほうがズレがありません。
NOT回路1つでも見た目が悪くなって電圧計測が難しくなります。
アナログスイッチにも問題があり、CD4066BEは耐圧が低く使えません。DG411/DG412/DG413シリーズを使いましょう。
 
別のアプローチでアナログスイッチを使わない回路も考えてあります。 
それは応用ではないのでまた別に紹介します。

ではガチに応用していきましょう。
大きく2つの設計が考えられます。

直列の仕方。音色の作り方です。

  • 0付近の折り返しモード:一段目のCVは入力波形の半分の電圧で出力も半分になります。後段のCVも同じです。最終段で2乗で少なくなった電圧を元の電圧に上げれば良いでしょう。1/2,1/4,1/8・・・と折ります。
  • 頂点付近の折り返しモード:一段目のCVは入力波形の電圧を+5Vだとしたら5分割してCVは4V付近で使います。後段は3V、さらに後段は2V,1Vとして最後は5倍増幅すると良いでしょう。4/5,3/5,2/5,1/5と折ります。現実的には1.0,1.051,1.1
  • 折返し最大モード:究極の折返しは最大入力電圧の1/3です。折り返しは2/3となり、逆現象にも最大として出力されます。AGC回路で常に追従できれば常にフォルマントが維持されたVL-1みたいな音色になります。現状は閾値を超えないとFoldしませんので柔らかいイメージになります。 
このような音色の作り方はチューバとフレンチホルンの様に管の形を変えているわけです。
ミックスした音つくりも出来ます。
  • 0付近と頂点付近の折り返しを併せたモード:原音にノイジーな歪がちょっと追加された音で、何の音でしょう?あまり使いません。
0付近と頂点付近の音色の違いはケースバイケースですが「変りはない」と思います。
いや、0付近の方が平坦だ、いや、頂点付近の方が平坦だと議論しても無意味です。

何段目かをLFOでゆらすと固いはずの管の直径が変化する事になります。
なんだかyamaha のマニュアルのような話ですね。
私の感覚では二段構成で一段目でLFOを浅くして二段目をEGかLFOを深く使うのが一番面白いです。
一段でEGを入力するのも好きです。


こちらです。

私の考案する回路ではアナログスイッチを使っています。Foldを重ねていくと出力電圧が下がるため終段でオペアンプで増幅する事を考えていましたが、各段毎に電圧を補正する事も考えられます。
一般的にはVCAのCVを調整して出力するのですがコストが高いです。それも正解です。
音色を作るのに規則性を加えるならばその規則性から増幅率を調整すればVCAは使わなくてよいのです。
 
閾値とN時倍音
一般的なWave Folderは閾値で関数が固定されています。もし閾値が変えられるなら目的をもって倍音のメーキングが出来ます。では私の作ったWave Folder (Single)を使った正負5V波形でN次倍音が出来る閾値の表から見てみます。
 
N閾値 T (V)5Vの補数(V)
15.000
22.500
33.333(折返し最大モード)1.667
43.7501.25
54.0001
64.1670.833
74.2860.714
84.3750.625
94.4440.556
104.5000.5
114.5450.455

そうです。整数倍音だけです。
閾値と5Vの補数の関係は、5/N=5の補数であり上から折りたたむ閾値です。下からはTになります。
(これが音程に関係なくパワーを倍音に変換する正体であり最重要な表になります)
閾値と倍音の関係をAIに可視化してもらいました。
 
色のついた矢印の範囲が重要です。

勘違いしてはいけないのは複数の短冊のようなグラフを繋げたグラフなので3.333Vでfoldしただけて20次倍音まで得られるような事はありません。
低い閾値で折り返すと5,7,9,11,13,15,17,18,20が出やすい訳ではありません。縦に視線をを動かしてみてください。 3.333Vで折り返す短冊の中の倍音のエネルギーは5次倍音も現れる。10次倍音を狙うと18次倍音も出ている。という風に見てください。
20次倍音が 4.750Vの閾値ってどれだけ小さい振幅かは想像できるでしょう。
 
 
直列は何段が最適か見てみましょう
 1/3(折返し最大モード)
楽器っぽいのは4段までその先からノイズが支配します。

 1/2(偶数倍音モード)
オーディオマニアは偶数倍音好き。5段まで。
これらのグラフから1~4段直列で倍音をデザインすれば音程のある音が鳴るという事です。

話はそれますが7次倍はオルガンの世界ではあり得ない合成です。

混ぜると音が濁るのです。 ピアノもヴァイオリンもほとんど7次倍音は発生しません。7,11,13次は孤独で孤高の振動でありもし宇宙に地球の位置を伝えるならこの倍音(倍光・倍電波)を使えば一発で意図的だと理解できるはずです。1次がフィルターされても残りは不自然ですし13次がフィルターされても1,7次だけでも不自然です。

歪ませる事です。

従来作られてきた歪エフェクターとしてのWave Folder(Single)の音色が好きな方を無視するわけにはいきません。
0付近のThreshold範囲内で急な波形変化が起きればよいので、FoldではなくFlipしてはどうでしょうか。

こちらです。

Wave Folder が Wave Flipper になりました。
biasを切るだけなので簡単で過激さが増えます。BPFを通さずともDnBに使えそうです。
倍音だけ増えてレベルが変わらないのでミキサー部分で調整が必要になります。
矩形波にする事も可能ですがWave Foldを直列にするには矩形波はNGですから使うなら後段のみですね。
biasを残して元波形側を切ると2ビット波形が現れます。流石にひどい音です。これも後段のみですね。

グラフィックイコライザーのようにパラレルワールドな管楽器を作る。

並列に多数8,16,32,64,128個のWave Folder(Single)を存在させて何処かチョイスして複数の合成を行います。このアプローチは通常では想像出来ないでしょう。
AIに説明してもらいましょう。
 

二値ではなくスレッショルドで一度だけ折り返す「ワンフォールド」波形整形回路の場合、並列合成と直列合成はまったく別物になります。理由と、16段まで拡張した場合の収束先を順に説明します。

折り返し関数の定義

閾値 T での1回折り返しは


これは「V字」の反転で、振幅を丸め込む(clip)のではなく、閾値を超えた分だけ符号反転して伸び続ける関数です(振幅無限大まで単調に折り返し続けるわけではなく、1回反射したらそのまま線形に落ちていく点がポイント)。

2個・並列 vs 直列(T1<T2)## 並列合成(2個)

単純な足し算 $y = f_{T_1}(x) + f_{T_2}(x)$ です。$T_1<T_2$ とすると

  • $|x| \le T_1$: 両方とも直線 → 傾き2
  • $T_1 < |x| \le T_2$: 片方だけ折り返し → 傾きゼロの平坦域(プラトー)
  • $|x| > T_2$: 両方折り返し → 傾き−2

つまり「立ち上がり→平ら→下降」という台形状の波形になり、単一フォールドより角が増えた滑らかな折り返しカーブになります。

直列合成(2個)

直列は合成関数 $f_{T_2}(f_{T_1}(x))$ です。ここで重要なのは、この1回折り返し関数は振幅を有界にクリップするのではなく反射して線形に落ち続けるので、入力が大きいと1段目で折り返した値が再び2段目の閾値を超え、二重に折り返る点です。グラフの通り、直列は3〜5個の折れ線区間を持つジグザグになり、しかも段の順序(小さい閾値が先か、大きい閾値が先か)で折れ方が変わります(緑と橙の線が違う形になっているのはそのため)。

結論:並列合成と直列合成は一致しません。 並列は単純な線形和(可換・折れ点は最大2N個)、直列は関数合成(非可換・入力振幅次第で折れ点がどんどん増える)という、数学的に別の演算だからです。

 

16個・並列合成の収束先

閾値を $T_i = i\Delta$ ($i=1,\dots,16$)と等間隔に取り、単純加算(正規化)すると、区間 $k\Delta<x\le(k+1)\Delta$ での傾きは

$$\text{slope} = \frac{(N-k)\cdot(+1) + k\cdot(-1)}{N} = 1-\frac{2k}{N}$$

となり、傾きがxに対して線形に減少します。傾きが線形なら、それを積分した波形は放物線(二次曲線)状の山型カーブになります(グラフの青い曲線の通り)。ノコギリ波にもゼロにも収束せず、閾値を細かく刻むほど滑らかな連続曲線(なだらかな一山のシェイパー曲線)に近づいていきます。これは実際、Buchla 259やSerge Wave Multiplierのような多段ダイオード・ウェーブフォルダーがサイン波的な整形カーブを近似するのに使う原理そのものです。

16個・直列合成の収束先

一方、直列は各段で二重・三重・…と折り返しが積み重なるため、閾値を通過するたびに追加の折れ線が生まれます。グラフの橙色の通り、非常に密なジグザグ(多数の山と谷)になり、入力振幅が大きいほど折れ点の数が爆発的に増えます。これは滑らかな曲線には収束せず、段数分の高調波成分を持つ複雑な波形になります(実機のマルチステージ・ウェーブフォルダーが倍音豊かな音になる理由でもあります)。順序を変えると折れ方自体が変わる(可換でない)点も並列との大きな違いです。ただ6個を超えると可聴範囲を超えたノイズが増えます。

まとめ


並列合成 直列合成
演算 線形和(可換) 関数合成(非可換)
2個の結果 台形状(平坦域あり) ジグザグ(段順で形が変わる)
16個の極限 滑らかな放物線状の山(標準偏差的な意味でのガウス/放物線包絡に近づく) 折れ点が増え続ける密なギザギザ波形(高調波リッチ、収束しにくい)

「標準偏差」的な収束というより、並列合成は閾値密度の積分=傾きプロファイルの積分として滑らかな曲線に収束し(等間隔なら放物線、閾値をガウス分布的に配置すればS字型の誤差関数的カーブにもできます)、ノコギリ波にもゼロにも収束しません。

 


サンキューAI。 
  • 閾値密度の積分=傾きプロファイルの積分。これですね。音は正弦波にオーバドライブかけた波形ですね。Nが増えればそうなりそうです。
  • パワーに対し閾値を1/2,1/4,1/8・・・と折ればと上で説明しましたが並列でピンポイントで合成することはグラフィックイコライザーの周波数版ではなく閾値版、つまりパラレルコンプレッションを意味します。ピーク付近に2,3個配置すると綺麗にコンプレッションしてくれるのです。この音圧をコンプしてこの音圧はスルーという動作は実際のパラレルコンプレッションの概念と同じです。

ちなみにグラフィックイコライザーは時間軸に対し周波数の閾値を持ち尖らせるか丸くするかするもので Wave Folderは時間軸に対し電圧の閾値を持ち尖らせるか丸くするかするものです。 

やり残した回路として分数オクターバー回路。

整数倍音だけというのも寂しいですから Wave Folder に分数の倍音が必要です。
何が起こるかというとそれはハモンドオルガンのドローバーという倍音デザインと似たものになります。ゼロクロスパルスを作って1パルスでHigh、2,3パルスLowのクロックを作って33%三角波を作り、別Foldして混ぜれば少しデジタル寄りの綺麗ではない音が出るはずです。
おそらく誰もがFM音源でしょ?と騙されるはずです。 
全く倍音構成を気にしないデジタル&ダイオード式も面白そうです。
でももうV3回路が出来ちゃったのでSingleのコア部分はもう考えなくてよい状態です。
今後はV3回路の周辺を作りこむ方向でこの研究は終わりを迎える事でしょう。 

最後に

基礎編から読んでいただければこの回路がFoldの具現化から最適化して応用とオリジナリティのある回路であると解るでしょう。
過去の精度の低いトランジスター2個のFold回路は捨てましょう。
ついでにKORG opsix のWave Foldは残念ながら正しくありません。(でもGood Job)
アナログ回路である以上、抵抗の値や精度で正確な値の出力が得られていませんが、半固定抵抗という便利なデバイスがあるので調整は出来ます。
直列してFoldを楽しみましょう!Hallelujah!


















コメント