Max for Live 再入門 #14 Wobble Bass Part III
完成図
とりあえずできたものをパシャリ。
チュートリアルの動画だと[+~]とか[*~]につないだ[live.numbox]の値がリアルタイムで変わる様子が見れるんだけど、自分の環境ではなぜかそれがかなわず。
しかし、音はちゃんと鳴ります。
オブジェクトの初期値
[reson~]はレゾナンストフィルター。
引数は左から順にGain, Center Frequency, Resonance(Q)
1,400, 1はそれぞれ初期値として与えられている。
ついでに他の初期値。
前のチュートリアルでもこの手の設定はあったんだけど、ちゃんと意識してなかった。Maxの場合、引数の値が変わっていてもパッチウィンドウ中の初期値の値はずっと固定して表示されるので、一瞬だまされたような気分になる。慣れればどうってことなさそうだけど。
閑話休題
[cycle~]の説明の単語が地味に辞書にもあんまり載ってない単語だったのでメモ。
sinusoidal oscillator
チュートリアルの流れから意味は分かるんだけど、sinusoidal(サイナソイダル)って初めて見た。サイン波の、ということだと思います。sinus(サイナス)で副鼻腔とか静脈洞とか湾入部とか……これまた医学系のマニアックな言葉。
Wobble Rate部分
さて、今回のパッチで引っかかったのはこの辺り。
ここは大きく見るとWobble Rate、つまり[reson~]のFrequencyを設定しているところ。
Hzの[live.numbox]が二カ所([*~]と[+~])につないでいる辺りがよくわからない。
試しに[+~]への接続を切って鳴らしてみたらヤバい音が出て思わずMaxに謝ってしまったw
確実にこの接続にする意味があることは分かったので、ちゃんと考えてみる。
パッチの仕組みを整理。
まず、[cycle~]の部分はサイン波のLFO。
LFOは実質的には0〜1の範囲で値を絶え間なく(正確にはサンプリングレートが許す範囲で)変化させるもの。
この0〜1の範囲で変化するシグナルが、接点Bにて接点A[*0]から出てくる値と掛け合わせられている。
接続点A [reson~]のCenter Frequency(Hz)とDepthを掛け合わせる
接続点Aすなわち[*0]は、Depthの[live.numbox]とCenter Frequency(Hz)の二つを掛け合わせている。
つまり、Depthが大きくなればなるほど、大きい値が接点Bに渡される。
接続点B LFOとフィルターの周波数を掛け合わせる(ただし、周波数はDepthによって可変)
LFOとして使われている[cycle~]のシグナル(0〜1の範囲で変化)が[*~]に流れ込む。
この[*~]を仮に接続点Bとしよう。
接続点Bには[*0]の数値が流れ込んできて、[cycle~]からくるシグナルとのかけ算になる。
ここで取りうる最大の値は設定されたHzの値(Hzのnumboxで設定された最大値による。ここでは1kHz)。
逆に最小は0である。
接続点C Center Frequencyと接続点Bの値を加える。
AとBを足すと、最低値はCenter Frequency、最大値はCenter Frequency * Depth * LFOという感じになる。
書きながら考えていたらようやく納得いったんだけど、普通に読んだらすごい分かりづらい。
でもま、思考の過程ということで残しておきます。
Wobble Rate部分のまとめ
ここでは[reson~]のFrequencyに与える値をLFOに従って動かすために、以下のことをやっている。
1. Center Frequencyを指定。
2. Center FrequencyにDepthを掛けて(A)、それをさらにLFOと掛け合わせる(B)。これで経時的に変化する量が決まる。Depthが0になると変化も0になる。
[Center Frequency * Depath * LFO] ……Result B
(0 ≤ Result B ≤ Center Frequency)
3. [reson~]に渡す値を最終決定(C)。
[Center Frequency + Result B]……Result C
(Center Frequency ≤ Result C ≤ Center Frequency * 2)
このチュートリアルでできたWobble Bassの改善点
1. ボリュームエンベロープのリリースを0にした場合の弾きづらさを解消する(そもそも0にできないように設定するのもアリか)。
2. うまいことレガートになってくれない(これができなきゃモノフォニックシンセはきつい……グライドはあるのに)。