皆様こんにちは、梅田ロフト店デジタルアドバイザーの阪口です。
大変お待たせしてしまい申し訳ありません。。Native Instruments REAKTORの記事第三弾を角出さんからいただきましたので掲載させていただきます。
今回はMutable Instruments RingsやElements等で認知が高まってきている物理モデリングシンセサイザーやVPSシンセサイザーの作り方についてのテキストをいただきました!
私もRingsやElementsは普段から愛用していますので興味津々です。。角出さんいつもありがとうございます!
ところで先日のモジュラーフェスでもExpert Sleepers ES-8がBITWIGと一緒に展示されていましたが、REAKTORとES-8を活用して様々な自作シンセを自分のシステムに組み込めばよりコンパクトに多彩なことができそうですね~
それでは以下より角出さんの記事となります~↓
目次:
・前回のおさらい
・いろいろなシンセサイザーを作ってみよう
・カープラス・ストロング ストリングシンセサイザーを作ってみよう
1.概要
1-1.原理の確認
1-2.実際に作ってみる
・ベクターフェイズシェイピングシンセサイザーを作ってみよう
2.概要
2-1.原理の確認
2-2.実際に作ってみる(基本編)
2-3.実際に作ってみる(応用編)
・おわりに
前回のおさらい
前回までは、Native Instruments REAKTORを使ってオリジナルのシンセサイザーの作り方の例をご紹介させて頂きました。いくつかのオシレータのMIXしたり、LFOやエンベロープでモジュレーションを行うことによって様々な音が出せるシンセサイザーを制作しました。
今回はオリジナルのシンセではなく、シンセサイザーの歴史の中で発明されてきた様々な合成方法の中から2つピックアップし、実際に制作していこうと思います。
いろいろなシンセサイザーを作ってみよう
シンセサイザーの合成方法には様々なものがあります。加算合成方式、減算合成方式、FMシンセシス、グラニュラーシンセシスなどなど…。それぞれの説明はここでは省略しますが、いずれも個性的かつ魅力的なものばかりで、電子音楽の黎明期から現在に至るまでたくさんの名曲を生み出すきっかけとなってきました。
今回シンセを制作するにあたり、前述の合成方法で作られたプラグインは世の中にもたくさんありますので、あえて少し変わったものを作ってみたいと思います。
カープラス・ストロング ストリングシンセサイザーを作ってみよう
1.概要
…なんだかいきなり仰々しい名前が出てきました(笑)。でも、実際に存在する合成方法の1つなんです(英語表記はKarplus-Strong String Synthesis)。
簡単に概要を説明します。1983年、アメリカのケヴィン・カープラス(Kevin Karplus)氏とアレクサンダー・ストロング(Alexander Strong)氏によって考案された「物理モデリング音源」の合成方法です。この合成方法は特に弦振動のモデリングに有効で、それゆえこのような名前となっています(ストリング:string とは弦の意味)。
現在このシンセの音が聞けるものとして、ソフトウェアだとpropellerhead Reason 10から収録されたEUROPA、ハードウェアだとDave Smith Instruments DSM03などが挙げられます。
propellerheadのサイトより。EUROPAのサウンドソースの1つとして実装されています。
Dave Smith Instruments DSM03。
余談ですが、この原理をさらに応用・発展させたものがあり「モーダルシンセシス(Modal Synthesis)」と呼ばれています。これは弦振動だけでなく、鐘やプレートといった振動体のモデリングも行います。ソフトウェアだとNative Instruments REAKTOR PRISM、ハードウェアだとMutable Instrument Elementsなどが挙げられます。
Native Instruments REAKTOR PRISM。
Mutable Instrument Elements。
1-1.原理の確認
ではこのカープラス・ストロング合成、どのような仕組みで弦振動のモデリングを行なっているのでしょうか。ウィキペディアを見てみると以下のようなブロック図が記載されていました。
ノイズバーストと書かれた信号が、スピーカの方向へ流れていきます。途中で分岐した信号がディレイとローパスフィルタを通過しフィードバックを繰り返していきます。
ノイズとはホワイトノイズのことを指します。バーストとは「破裂する」という意味で、ホワイトノイズが瞬時的な信号であることを示しています。そしてそれにディレイとフィルタをかける。…本当にそんな仕組みで弦のような音になるのでしょうか。
結論から言いますと、実際に弦のような音になります。ここで書かれているディレイとは、いわゆるエフェクターで使用されるディレイの遅延時間(一般的に50〜2000ms程度)よりもはるかに短い、2〜30ms程度の「音程を感じるくらい短い」ショートディレイです。
ホワイトノイズを使用するのは、多くの周波数成分を含んでいるためです。非整数倍音も含む多くの周波数成分を含んでいながら、音程感があるので結果的に弦のような音に聞こえる、という仕組みです。フィルタは倍音の調整に使用されます。
(実際にはコムフィルタの効果による影響もありますが、ここでは説明を割愛させていただきます)
1-2.実際に作ってみる
では実際に作っていきましょう。
REAKTORを起動し”File”メニューから”New Ensemble”を選択します。
まずはホワイトノイズオシレータとディレイ、フィルタを用意します。
“In Port”は使用しないので削除し、ストラクチャ内で右クリック→”Built-In Module”→”Oscillator”→”Noise”を選択します。
同様に”Built-In Module”→”Delay”→”Single Delay”と、”Built-In-Module”→”Filter”→”HP/LP 1-Pole”を選択します。
これらを前述のブロック図と同じになるように結線していきます。
①まずディレイとフィルタを結線します。ディレイは遅延処理しかしないため、そのままだとずっとフィードバックを繰り返してしまいます。そのため、信号が減衰するようにしなければなりません。”Single Delay”モジュールと”HP/LP 1-Pole”モジュールの間に”Multiply”モジュールと”Constant”モジュールを配置し、以下の図のように結線します。”Constant”の値は任意ですが、ここでは”0.99”としました。
②フィルタから出力された信号はノイズオシレータからの信号と合流するので”Add”モジュールを用いて信号を合算します。
③”Add”モジュールから出た信号は、”Single Delay”モジュールと”Out”モジュールへ分岐して送られます。まず”Add”モジュールと”Single Delay”モジュールを結線します。(”Single Delay”モジュールの”In”ポートに”Z”と表示されますが、REAKTOR側で自動的に行われる遅延処理で、ここでの説明は割愛します)
④次に”Out”モジュール側への信号は”Audio Voice Combiner”モジュールで受けたのち、”Out”モジュールへ接続します(”Audio Voice Combiner”モジュールを使用する理由は第一回のテキスト:https://info.shimamura.co.jp/digital/review/2017/06/114162 をご参照ください)。
ブロック図と同様の信号のフローになりました。まだ足りないものがあるので、足していきましょう。
今回は、MIDIキーボードからの信号を受け取って、それに応じたピッチの音を鳴らせるようにパッチングを行います。
まずはノイズバーストの部分から作っていきましょう。”Built-In Module”→”MIDI In”→”Gate”
を。”Built-In Module”→”LFO,Envelope”→”AD”を以下の図のように配置します。
”AD”モジュールの”A”、”D”ポートで右クリック→”Create Constant”をクリックして、”Knob”モ
ジュールを作成したのち、”Gate”モジュール及び”Noise”モジュールと以下のように結線します。
“Trig”はトリガーインを示します(Trigger)。”0”より大きな値が入力されるとエンベロープの動作を開始します。白字の”A”は最大振幅を示します(Amplitude)。”A”、”D”はそれぞれアタック、ディケイのパラメータを表しています。
パネル上でノブが重なって表示されていると思います。パネルロックが解除されていることを確認し、ノブの配置を変更します。
これでホワイトノイズは出力されるようになりました。続いてピッチをコントロールする部分をパッ
チングしていきます。
”Built-In Module”→”MIDI In”→”Note Pitch”を、以下の図の場所に配置します。
”Note Pitch”モジュールは、MIDIキーボードからの信号を受け取り、MIDIノートナンバーを出力します(0-127)。一方、”Single Delay”モジュールの”Dly”ポートは遅延時間(ms)を受け取って信号を遅らせます。間に何を配置し、どのように接続すればよいでしょうか。
MIDIノートナンバーはそれぞれ周波数が定められています。周波数が定まってるということはその周期となる時間も定まっているということになります。実際にMIDIノートナンバーを周期となる時間(ms)に置き換えてみましょう。
”Built-In Module”→”Math”→”Expon. (F)”と同じく”Reciprocal 1/x”、”Multiply”、”Constant”
をそれぞれ以下の図のように結線します。”Constant”モジュールの値は”1000”にします。
どのような信号の流れになっているかご説明します。
まず、”Expon. (F)”モジュールでMIDIノートナンバーを周波数に変換します。次に、「時間周期(秒:sec)=1÷周波数(Hz)」なので、”Reciprocal 1/x”モジュールを用いて逆数にします。出力される値は「秒:sec」なので、「ミリ秒:ms」に変換するために1000を乗算します。
MIDIノートナンバーを「ミリ秒:ms」に変換することができました。
続いて、フィルタにカットオフのパラメータを追加します。”HP/LP 1-Pole”の”P”ポートで右クリック→”Create Control”で”Knob”モジュールを作成します。また、パネル側の配置を変更します。
カープラス・ストロング合成のシンセサイザーの基本的な説明は以上です。あとはノブの各パラメータのレンジなどを微妙に変更、調整したり、フィルタの種類(1ポールを2ポールに、など)を変えてみたりしながら、自分が好きなサウンド、外観にチューニングしていきます。筆者はノイズバースト側にフィルタをかけてみたり、カットオフ周波数をヘルツ表示にしてみました。ぜひ色々試してみてください。
ベクターフェイズシェイピングシンセサイザーを作ってみよう
2.概要
…またまた仰々しい名前ですね(笑)。
これは2011年に、アールト大学(フィンランド)とメイヌース大学(アイルランド国立大学メイヌース校)の技術者達によって発表された合成方法です(英語表記はVector Phase Shaping Synthesis。VPS Synthesis)。
比較的新しいこともあるせいか、この音が聞けるシンセサイザーはまだあまりないようです。
Future Audio Workshop Circle 2というソフトシンセに実装されているようで、オフィシャルサイトでは「VPSシンセサイザーが使えるのはCircle 2だけ!」と謳っている(2017年11月現在)ので、ぜひ作って聞いてみましょう(笑)。
2-1.原理の確認
VPSシンセサイザーはFM音源やPD音源と同じように、「ウェーブテーブル」と「それを再生させる波形(読み出し波形)」で構成されています。音色的に最もシンプルなウェーブテーブルは「サイン波」であり、それを読み出すための最もシンプルな読み出し波形は「ノコギリ波」です。
下図は、両者の関係を表したイメージ図です。読み出し波形を繰り返すことで、サイン波が再生されます。
上記の場合であれば、再生されるのはサイン波です。しかし読み出し波形の形を変えていくと、再生される音は徐々に変化していくものと推測されます。
もう少し具体的に調べてみましょう。
実は、VPSシンセの手法自体は海外の論文で発表されており、メイヌース大学のサイトからダウンロード、閲覧可能となっています。http://eprints.maynoothuniversity.ie/4096
以下の図はそこからの抜粋です。
グラフは、破線が読み出し波形、実線がその時に観測される波形を示しています。PD音源にならい、ここではウェーブテーブルにサイン波ではなくコサイン波を使用しています。
読み出し波形を変えていくと、徐々に波形がその形を変え、それに伴って倍音の構成も変化していくと記述されています。
2-2.実際に作ってみる(基本編)
どういった原理なのかご理解頂けましたでしょうか。
では実際に、REAKTORを用いてVPSシンセサイザーを作ってみましょう。
順を追って制作していきます。まずは「2-1.原理の確認」でご説明したイメージ図をパッチングしていきます。新規ファイルを作成し、パッチングしたものがこちらです。
【注意】接続する順番によっては、再生側へ直流信号が送られてしまいスピーカを痛める恐れがあります。大音量は避け、”Out”ポートへの接続は最後にお願いします。
先ほども出てきたモジュールもありますので、初出のモジュールだけご説明します。
”Ramp OSC”はランプオシレータと呼ばれるオシレータです。波形はノコギリ波状で、ウェーブテーブルを読み出す場合などに使用されます(”Built-In Module”→”Oscillator”→”Ramp”。“ramp”
とは「傾斜」の意味)。
“Sine/Cosine”はその名の通りサイン波、またはコサイン波を出力するモジュールです。”In”ポートで位相(1周期…0~360°を0~1でスケーリング。1以上も受信可能)を受け取り、それに応じた振幅を出力します。最大振幅は”1”です(”Built-In Module”→”Math”→”Sine/Cosine”)。
“-x”はInポートに入ってきた数値の正負を逆転するモジュールです(”Built-In Module”→”Math”→”Invert, -x”)。
“Scope”は既存のオシロスコープのパッチです。ストラクチャを右クリック→”Library”→”01 – Debug”→”Scope”を選択します。
MIDIキーボードを使って読み出し波形と音声信号の確認をしてみましょう。
場合によっては、読み出し波形の山とウェーブテーブルの谷がずれてしまっている場合があるかもしれません。これはそれぞれのオシロスコープで表示するタイミングがずれてしまっているためです。一度ファイルを保存、再度開き直して確認してみましょう。
先ほどの図と見比べてみましょう。オシロスコープ側のコサイン波の振幅が”1”に達していないのは、”Gate”モジュールからの信号のベロシティが”1”より小さいためです。これは特に問題ではありません。
読み出し波形を使ってウェーブテーブルを再生することができました。
この読み出し波形を変形させることができれば、VPSシンセを実現できそうです。どうやって行えば良いのでしょうか。
先ほどの論文を読むと、波形に関する数式が書かれていました。
(5)は波形を「折り曲げるポイント」座標pを表し、dがx座標、vがy座標を表しています。
(6)が波形の式です。xがdより大きい場合と小さい場合で条件分けされています。
それぞれの関係を図で確認すると、上のようになります。点p(x=dの点)を境にして、式が分かれていることが確認できます。
以上から、(6)に記載された2つの式を用意し、xがdより大きいか小さいかで出力する方を変えてあげればよさそうです。
dとvは、任意で変更できるパラメータです。先ほど作ったパッチには存在しません。では、xはどれにあたるのでしょうか。
xは、ランプオシレータから出力される数値です。0から1へ、ある一定の周期でループしています。比較演算するパッチを作成し、ここからの信号を受け取って2つの信号を切り替える回路が作れそうです。
今からパッチングを行うにあたり、手順は大きく分けて3つあります。
①(6)の”x < d”の場合の式を作成する。
②同じく”x ≥ d”の場合の式を作成する。
③信号xとパラメータdを用いた切り替え回路を作り、①②を接続する。
では順番に進めて行きましょう。
①”x < d”の場合の式をパッチングに置き換えると、以下のようになります。
※ランプオシレータから出力されている線は後ほど再結線するため、すべて切断しました。
レンジを”0~1”に設定した”Knob”モジュール、”d”、”v”を作成し、”Multiply”、”Divide, x/y”モジュールを用いて式と同じ順番で乗算、除算します。
①の式ができましたので、②の作業へ移ります。こちらも同じ手順で行います。
こちらも”Subtract”(引き算)モジュールなどを用いて同様にパッチングします。ひとつひとつ順を追って見て見ると、式と同じ順番で計算していることがお分かり頂けると思います。なお、”Divide, x/y”モジュールと”Subtract”モジュールは除算(割り算)、減算(引き算)モジュールで、上下の入力ポートの意味が違いますので、注意が必要です。
①と②の式がパッチングできました。では続いて③xとdを比較して信号を切り替える回路を作ってみましょう。
”Built-In Module”→”Math”→”Compare”をクリックします。
このモジュールは、”A”、”B”ポートに入力される信号の大小を比較し、2つあるポートから正否に応じて”0”または”1”のいずれかを出力します。
例えば“A=1”、”B=0.5”の場合は”>”ポートから”1”を、”<=”ポートからは”0”を出力します。
”A”、”B”ポートにxとdの信号を入力し、出力ポートのいずれかを使用すれば”0,1,0,1,0,1…”と切り替わる回路が作れそうです。
もうひとつモジュールを追加します。”Built-In Module”→”Signal Path”→”Selector/Scanner”をクリック。
モジュールを選択した状態で、画面左の”Function”タブ内、”Min Num of Ports”の値を”2”に変更します。
数字の書かれた入力ポートが2つに増えました。
このモジュールは、数字で書かれた入力ポートに信号をそれぞれ入力し、”Pos”ポートで出力を切り替えるという機能を持っています。”Pos”ポートに入ってくる値が”0”であれば”0”ポートからの信号が。”1”であれば”1”ポートからの信号が出力されるという仕組みです。
先ほどの”Compare”モジュールの”0,1,0,1,0,1…”という信号と組み合わせれば、①②の信号をそれぞれ切り替えながら出力できそうです。やってみましょう。
”Compare”モジュールの”A”ポートにxを。”B”ポートに”d”からの信号を入力しました。①②の式において「xがdより大きい場合は①となる」ため、①の信号は”Selector/Scanner”モジュールの”1”ポートに入力しました。反対に、②の信号は”0”ポートに入力しました。
パッチングは以上です。では実際に引用した図のように波形は変化するでしょうか。”d”、”v”のパラメータをそれぞれ入力して確認してみましょう。
引用した図を再現することができました。
2-3.実際に作ってみる(応用編)
先ほどは、基本的なVPSシンセサイザーの制作例をご紹介しました。
しかし、正直これだけでは少し物足りない…。というわけで先ほどのパッチを元に、詳細を省いた形ではありますが、応用編を2つご紹介いたします。
(1)vのパラメータレンジ変更
“v”のノブを動かすと、読み出し波形の折り曲げポイントが上下することがお分り頂けたと思います。これは”v”が波形のグラフで示す縦軸、つまり「位相」のパラメータであることを示していま
す。
“v”パラメータを動かすと、折り曲げポイントは上下する。
“v”が位相のパラメータであるということは、現在”0~1”、つまり0~360°の範囲であるということですが、それ以上の値も取ることができます。
「360°も720°も同じなのでは?」と思われるかもしれません。しかし、実際には違います。
360°と720°では、波長が2倍違うからです。
“v”のパラメータを360°以上にすることについても、先ほどの論文に記載されています。”v”のパラメータを”0~3”に変更し、検証してみた結果が以下の図です。
(2)ブレークポイントの追加
これまでは、読み出し波形を折り曲げるポイントは1つでした。しかしこれならば、理屈上ポイントは2つ以上あってもよいはずです。
ポイントが複数ある場合はどんな式になるのでしょうか。それも先ほどの論文に記載がありました。
新しく現れた変数nは、各ポイントの識別番号、そしてNはポイントの総数を表しています。例えばポイントが3つあれば、矩形波のような波形だって作ることが可能です。この場合、nの値は0,1,2、Nの値は3になります。
作業の詳細は割愛させていただきますが、読み出し波形のパッチングを(19)の条件式に当てはめると、同じように再現することが可能です。見えづらくて大変恐縮ですが、最後にパッチの全体図を記載します。
おわりに
今回はオリジナルのシンセサイザーではなく、実際に世の中にあるシンセサイザーの手法を用いてパッチングを行なっていきました。工学的な内容が多かったため、とっつきにくい印象だった
かもしれません。
REAKTORの面白さは、オリジナルのシンセが自分で作れる点にあることもそうですが、以上のような少し変わった、またはこれから世に出てくるであろうシンセを作れるところにもあると思います。
ちなみに上記のVPSシンセは、先日自分のライブで使用しました。リバーブを通すとアンビエントにとても合う音色で、聴いて頂いた方々にも大変好評でした。
また、シンセサイザーのエッセンスの部分から作っていけるため、CPUの負荷を気にしながら色々なパラメータを追加、調整していくこともできます。ソフトシンセを使用する以上、PCの負荷の問題は避けては通れない問題なので、DIYの感覚でパッチングできたら一石二鳥かもしれません。
REAKTORの魅力は、まだまだたくさんあります。このテキストをご覧頂く方々の、音楽制作のお役に立てれば幸いです。
角出拓生(Kadode Takumi)
高校時代、カセットテープとMDを用いたノイズ/テープコラージュの楽曲を制作開始。
その後大学院で建築音響工学を専攻する傍ら、音楽活動ではアシッドハウス/アンビエント/ブレイクコア等の影響からダンスミュージックに傾倒し、これまでに2枚のアルバムを発表している。
stereotypeone名義ではオーディオヴィジュアルを軸としたライブ活動を展開中。
HP:stereotypeone.com
梅田ロフト店デジタル担当 阪口(さかぐち)

DJ歴20年、現在も現役DJで活動をしているDJ専門スタッフの阪口です。
今までクラブイベントや野外イベントでDJ、バンドのトラックメイカー、オーガナイザー等々色々と活動してきましたので、DJに関する事なら何でもご相談下さい。
