VSTi DEXED 音作り
前回DEXEDの操作方法を書いたので、今回は音作りの基本的なことを書いておく。
出力(一番下段)にあるオシレータをキャリアと呼び、それ以外をモジュレータと呼ぶ。アルゴリズムに応じて出力数は1~6個あり、複数の場合は、ミックスされて出力されることになる。
FM音源として、もっとも単純なかたちは、1個のキャリアと、1個のモジュレータの組み合わせ。 まずは、キャリア1個とモジュレータ1個の組み合わせを使って基本的な波形を作成してみる。 使えるアルゴリズムはいくつかあるが、5番を使用。オシレータは1と2を使用する。
FM音源を簡単な式にすると、まずサイン波の式を以下としてみる。a1は振幅で、f1は周波数とする。FM音源的には比率。
a1*sin(x*f1)
FM音源は、2つのサイン波を使って、次のようにして作り出す。括弧の中にもうひとつサイン波(モジュレータ)の式が入っている。
a1*sin(x*f1 + a2*sin(x*f2))
下は数理処理ソフトで描いたサイン波とFMによる矩形波。
sin(x + sin(x*2))
ちなみにラジオのFMの場合は、キャリアが放送局の周波数で、モジュレータが音声信号に相当する。
キャリア:モジュレータ比 = 1(level99):2(level69)
キャリア:モジュレータ比 = 1(level99):1(level64)
他の方法としては、オシレータ1個使ってフィードバックでも作れる。こちらの方がより鋭いエッジを作れるようだ。今回やってみて、キャリアのレベルによって、かかり具合が変わる事が判明。最大の99にしてしまうと、倍音が出すぎてしまう。
キャリアlevel97、FB = 7
level99
level90
level80
level60
モジュレータのレベルが高いとランダムな倍音がプラスされているのがわかる。またモジュレーターの出力レベルを上げても倍音が増えていく。 ただ同じ傾向で変化しているわけではない。 その原因はデジタル処理ならではの折り返しノイズが入っているためで、直感的な音作りを妨げる要因となっている。 そのためFM音源の音作りは難しいと言われている。
まだ1個のモジュレーターならよいが、これが直列に数個重なったりすると、さらに傾向がつかみにくくなる。 それでも各倍音と基音との関係を知っているとかなり助けにはなる。当然のことだが、倍音は基音の倍数なので、高次倍音になるほど、音の飛びは少なくなる。 またモジュレータを整数にした場合は、作り出される音も通常の整数倍の倍音が中心となる。
下表は倍音の周波数だが、そのままcoarse(1~31)といる。
上記を鍵盤で示すと下記のようになる。20倍音以降は半音よりも狭くなってしまうので、鍵盤では表し切れていない。
この方法はFM音源の原理ではなく加算合成方式。倍音に当たる周波数のサイン波をミックスしただけにすぎない。実際の楽器の音を再現しようとすると、オシレーターの数がかなり必要となり不経済。 その点、FM音源は数個のオシレータで、いろいろなバリエーションの音を作れるので経済的といえる。ただ上記と同じ音を2オシレーターで作るのはやはり無理があるというもの。
キャリア比1(level99):モジュレータ比1(level40)
キャリア1(level99):モジュレータ1(level60)
キャリア1(level99):モジュレータ1(level80)
キャリア1(level99):モジュレータ1(level90)
キャリア1(level99):モジュレータ1(level99)
ここで判ることは、倍音は整数倍であること。そしてモジュレータレベルが低いと倍音が少ないということ。上げて行くと、倍音が増えていくが、倍音構成そのものは変わらないようだ。99まで上げて行くと、基音よりも倍音のレベルが高くなる。逆にモジュレータが最大レベルのときに最も音色的な特徴が出るので、ここで方向を決めてから、必要に応じてレベルを下げる方向で調整すれば、目的の音に到達しやすいかも。
FM音源はエイリアスノイズを積極的に使って音作りをしている。これが予測不可能な音の原因になっている。エイリアスノイズとは、デジタル処理で、ナイキスト周波数を超えると、折り返して低い可聴域にノイズが入ること。このノイズは普通の音として聞こえてしまうので質が悪い。アナログシンセをデジタルで再現する場合、もっとも注意すべき点の一つだが、FM音源は逆にエイリアスノイズを活用しているので、対策をとるわけにもいかず、こうなってしまったと言える。デジタル的には何の対策もしていないので、とてもシンプルでピュアとも言える。
折り返しが入った場合、ドレミを低い方から順次鳴らすと、本来きれいに上がっていくはずが、下サンプルのように途中でおかしな音程が出始める。これが折り返して可聴域に入った音で、FM音源を扱う場合気を付ける必要がある。下サンプルはモジュレータを2倍音にしてレベル99にしている。
下アニメはキャリアに対してモジュレータの比を上げていった場合のスペクトラムになる。折り返すイメージが分かると思う。最高音まで行ったら戻ってきて、最低音まで行ったら、また戻るという具合だ。これを音でイメージするのは至難の業である。 使う音程にも依存するが、折り返しが発生しない範囲で使う場合は、破綻が起きにくい。また折り返しが発生するような条件でもレベルを下げることにより、明らかな破綻は避けて使うことが可能。
下はモジュレータレベルは99にして、比を変えて行った場合のスペクトラム。倍音が強烈に出るので、表示は波形の間隔が分かりやすいようにリニアにしている。
0.5
Aの440Hzの音を鳴らしているが、オクターブ下の音が入っているのが確認できる。 そして220Hzを基音とした整数倍音が作られる。1,2,3,4,5,6,7,8,9,10,11,12・・・・
1
440Hzを基音とした整数倍音が作られる。1,2,3,4,5,6,7,8,9,10,11,12・・・・
2
奇数次の倍音が作られる。1,3,5,7,9,11,13・・・・
3
FMのちょっと不思議な感じが出てくる。倍音構成は1,2,4,5,7,8,10,11,13,14,16,17・・・・妙な飛び方となる。 またナイキスト周波数まで使い切っているのがわかる。サンプリング周波数を超えると本来高い周波数のはずが、可聴域に折り返してしまう。FMの難解さの要因にもなっている部分である。 こうなると、ホワイトノイズの感触に近く、高域をカットしたくなってくる。そういうユーザーのためにDEXEDにはcutoffとresoが備わっている。これはオリジナルのDX7にはない機能。
4
2と同じオクターブ関係なので、同じ奇数倍音かと思いきや、高次になると32,34,36,38と偶数倍音も入ってくる。明らかな折り返しが確認できる。FMは一筋縄ではいかない。
5
1,4,6,8,9,10,11,14,15,16,18,19,20,21,23・・・・5以上は複雑な倍音構成で法則を見つけるのも面倒。レベルの小さい波形は折り返しである。
6
もはや整数倍は破綻している。基音よりも低い0.09とか入っている。 0.09,1,2.25,3.9,5,5.9,6,7,8,11,12,13,14.1,17,18・・・・ 何か4本セットという感じだが、半分近く折り返しが占めている。
7
これ以上は、最低音まで行った折り返し音がさらに折り返してきて、混沌としている。
8
オクターブ関係だが、過剰な折り返しにより、落ち着くことはない。1,1.9,3.9,4,6,7,9,9.9,11.9,12,14,15,17,17.9・・・・
9~31
これ以降は折り返しが激しく、音としてはランダムな印象になっている。
上記の作り出された倍音は、整数倍の倍音を基本としながらも、モジュレータ比率を上げて行くと妙な倍音も入ってくる。多くの楽器等の音色は整数倍音で構成されているので、基本は低めの比で作るのが正解だろうけど、打楽器や、ノイズ、ちょっと変わった音色を狙うなら、さらにモジュレータ比を小数などにするといいかもしれない。
そして楽器の音の多くはアタックに特徴があるので、そこに金属的な響きを与えたり、ノイズっぽくしたり、様々なアタック音を加える。これだけでそれっぽい音が作れるし、実際のヤマハのプリセットも伸びる音程感のある音と、アタック音で構成されている。アナログシンセでは、このアタックを自在に作れなかったため、FM音源が重宝された。
FM音源が苦手なところは、きれいなエッジのあるのこぎり波が作りにくいところだろうか。どこか丸い感じで木管的になりやすいし、無理すると金属的になってしまう。柔らかいストリングス系の音はアナログシンセにはかなわない。
2018.5.26
とりあえずDEXEDの表示と数値を合わせておいた。 最大レベルを近づけてみた。途中の値は、結構違うので注意。 DEXEDは、もっと緩やかにレベルが上がっていき、最後の方で一気に上昇する。
触れるのは周波数比のcoarseとLevelとなっている。赤線がキャリアで、青線がモジュレータ。緑が変調された波形。初期値はキャリアとモジュレータが重なっている。
モジュレータを最大3個使えるシミュレータも作ってみた。
VSTi DEXED (DX7クローンFM音源)
ギター日記 VST
アルゴリズム
FM音源はサイン波を出力するオシレータを掛け合わせて音を作る。 DEXEDには、6個のオシレータの組み合わせが32通り用意されている。これをアルゴリズムと呼ぶ。出力(一番下段)にあるオシレータをキャリアと呼び、それ以外をモジュレータと呼ぶ。アルゴリズムに応じて出力数は1~6個あり、複数の場合は、ミックスされて出力されることになる。
FM音源として、もっとも単純なかたちは、1個のキャリアと、1個のモジュレータの組み合わせ。 まずは、キャリア1個とモジュレータ1個の組み合わせを使って基本的な波形を作成してみる。 使えるアルゴリズムはいくつかあるが、5番を使用。オシレータは1と2を使用する。
FM音源を簡単な式にすると、まずサイン波の式を以下としてみる。a1は振幅で、f1は周波数とする。FM音源的には比率。
a1*sin(x*f1)
FM音源は、2つのサイン波を使って、次のようにして作り出す。括弧の中にもうひとつサイン波(モジュレータ)の式が入っている。
a1*sin(x*f1 + a2*sin(x*f2))
下は数理処理ソフトで描いたサイン波とFMによる矩形波。
sin(x + sin(x*2))
ちなみにラジオのFMの場合は、キャリアが放送局の周波数で、モジュレータが音声信号に相当する。
矩形波(くけいは) 奇数倍音
まず上記の矩形波をDEXEDで作ってみる。 矩形波は、理論的には奇数倍音を重ねていくとできる波形。振幅は倍音と同じ数で割って、小さくしていく。キャリアモジュレータ比率を1:2にすると奇数倍音だけを含む波形を作れる。ただ下記の通りキレイな矩形波ではない。数学的な波形とも若干異なる。キャリア:モジュレータ比 = 1(level99):2(level69)
のこぎり波 整数倍音
のこぎり波は整数倍のサイン波を合成する。振幅は倍音と同じ数で割って、小さくしていくところがポイントだが、オシレータ2個では、満足いくのこりぎ波は作れない。キャリア:モジュレータ比 = 1(level99):1(level64)
他の方法としては、オシレータ1個使ってフィードバックでも作れる。こちらの方がより鋭いエッジを作れるようだ。今回やってみて、キャリアのレベルによって、かかり具合が変わる事が判明。最大の99にしてしまうと、倍音が出すぎてしまう。
キャリアlevel97、FB = 7
比率を変えてみる
キャリアcoarse1に対して、モジュレータcoarse0.5~31に変化させてみる。モジュレーターのレベルによって出音がかなり違うので録音してみた。サンプル音はA440Hz。level99
level90
level80
level60
モジュレータのレベルが高いとランダムな倍音がプラスされているのがわかる。またモジュレーターの出力レベルを上げても倍音が増えていく。 ただ同じ傾向で変化しているわけではない。 その原因はデジタル処理ならではの折り返しノイズが入っているためで、直感的な音作りを妨げる要因となっている。 そのためFM音源の音作りは難しいと言われている。
まだ1個のモジュレーターならよいが、これが直列に数個重なったりすると、さらに傾向がつかみにくくなる。 それでも各倍音と基音との関係を知っているとかなり助けにはなる。当然のことだが、倍音は基音の倍数なので、高次倍音になるほど、音の飛びは少なくなる。 またモジュレータを整数にした場合は、作り出される音も通常の整数倍の倍音が中心となる。
下表は倍音の周波数だが、そのままcoarse(1~31)といる。
倍音 | 音程 | 音高差 | 音名 | 平均律よりの差 |
第1倍音 | ユニゾン | 0 | C3 | ±0 |
第2倍音 | 1オクターヴ | 12半音 | C4 | ±0 |
第3倍音 | 1オクターヴと完全5度 | 19.019550半音 | G4 | +1.955セント |
第4倍音 | 2オクターヴ | 24半音 | C5 | ±0 |
第5倍音 | 2オクターヴと長3度 | 27.863014半音 | E5 | -13.686セント |
第6倍音 | 2オクターヴと完全5度 | 31.019550半音 | G5 | +1.955セント |
第7倍音 | 2オクターヴと短7度 | 33.688259半音 | B♭5 | -31.174セント |
第8倍音 | 3オクターヴ | 36半音 | C6 | ±0 |
第9倍音 | 3オクターヴと長2度 | 38.039100半音 | D6 | +3.910セント |
第10倍音 | 3オクターヴと長3度 | 39.863014半音 | E6 | -13.686セント |
第11倍音 | 3オクターヴと増4度 | 41.513179半音 | F♯6 | -48.682セント |
第12倍音 | 3オクターヴと完全5度 | 43.019550半音 | G6 | +1.955セント |
第13倍音 | 3オクターヴと長6度 | 44.405277半音 | A6 | -59.472セント |
第14倍音 | 3オクターヴと短7度 | 45.688259半音 | B♭6 | -31.174セント |
第15倍音 | 3オクターヴと長7度 | 46.882687半音 | B6 | -11.731セント |
第16倍音 | 4オクターヴ | 48半音 | C7 | ±0 |
第17倍音 | 4オクターヴと半音 | C#7 | +5セント | |
第18倍音 | 4オクターヴと1音 | D7 | ||
第19倍音 | 4オクターヴと短3度 | Eb7 | ||
第20倍音 | 4オクターヴと長3度 | E7 | ||
第21倍音 | 4オクターヴと長3度+1/4音 | E7-F7中間 | ||
第22倍音 | 4オクターヴと長4度 | F7 | ||
第23倍音 | 4オクターヴと増4度 | F#7 | ||
第24倍音 | 4オクターヴと完全5度 | G7 | ||
第25倍音 | 4オクターヴと増5度 | G#7 | ||
第26倍音 | 4オクターヴと長6度 | A7 | ||
第27倍音 | 4オクターヴと長6度+1/4音 | A7-A#7中間 | ||
第28倍音 | 4オクターヴと短7度 | A#7 | ||
第29倍音 | 4オクターヴと短7度+1/4音 | A#7-B7中間 | ||
第30倍音 | 4オクターヴと長7度 | B7 | ||
第31倍音 | 4オクターヴと長7度+1/4音 | B7-C8中間 |
上記を鍵盤で示すと下記のようになる。20倍音以降は半音よりも狭くなってしまうので、鍵盤では表し切れていない。
楽器の倍音構成
楽器の音が違って聞えるのは、倍音構成によるところが大きい。 FM音源では上記の操作で倍音構成が変化するので、実際の楽器の倍音構成に近いセッティングができれば、 再現できるのだが、FM音源の特性上、理論的に欲しい倍音を導き出すのは難しい。 一番単純な方法は、アルゴリズム32を使って、6個のオシレータを使って倍音を足していけば、それっぽくなる。 たとえば単純な倍音構成のオルガン(コルネット)は、基音 + (1オクターブ) + (1オクターヴと完全5度) + (2オクターヴ) + (2オクターヴと長3度)といった構成音になっている。これは1~5倍音で構成された音。 これをやってみると、オルガンぽい音にはなる。この方法はFM音源の原理ではなく加算合成方式。倍音に当たる周波数のサイン波をミックスしただけにすぎない。実際の楽器の音を再現しようとすると、オシレーターの数がかなり必要となり不経済。 その点、FM音源は数個のオシレータで、いろいろなバリエーションの音を作れるので経済的といえる。ただ上記と同じ音を2オシレーターで作るのはやはり無理があるというもの。
モジュレータのレベルと倍音構成
モジュレータのレベルで、加味される倍音が違うので、どうなるかFFTで表示させてみた。キャリア比1(level99):モジュレータ比1(level40)
キャリア1(level99):モジュレータ1(level60)
キャリア1(level99):モジュレータ1(level80)
キャリア1(level99):モジュレータ1(level90)
キャリア1(level99):モジュレータ1(level99)
ここで判ることは、倍音は整数倍であること。そしてモジュレータレベルが低いと倍音が少ないということ。上げて行くと、倍音が増えていくが、倍音構成そのものは変わらないようだ。99まで上げて行くと、基音よりも倍音のレベルが高くなる。逆にモジュレータが最大レベルのときに最も音色的な特徴が出るので、ここで方向を決めてから、必要に応じてレベルを下げる方向で調整すれば、目的の音に到達しやすいかも。
FM音源はエイリアスノイズを積極的に使って音作りをしている。これが予測不可能な音の原因になっている。エイリアスノイズとは、デジタル処理で、ナイキスト周波数を超えると、折り返して低い可聴域にノイズが入ること。このノイズは普通の音として聞こえてしまうので質が悪い。アナログシンセをデジタルで再現する場合、もっとも注意すべき点の一つだが、FM音源は逆にエイリアスノイズを活用しているので、対策をとるわけにもいかず、こうなってしまったと言える。デジタル的には何の対策もしていないので、とてもシンプルでピュアとも言える。
折り返しが入った場合、ドレミを低い方から順次鳴らすと、本来きれいに上がっていくはずが、下サンプルのように途中でおかしな音程が出始める。これが折り返して可聴域に入った音で、FM音源を扱う場合気を付ける必要がある。下サンプルはモジュレータを2倍音にしてレベル99にしている。
下アニメはキャリアに対してモジュレータの比を上げていった場合のスペクトラムになる。折り返すイメージが分かると思う。最高音まで行ったら戻ってきて、最低音まで行ったら、また戻るという具合だ。これを音でイメージするのは至難の業である。 使う音程にも依存するが、折り返しが発生しない範囲で使う場合は、破綻が起きにくい。また折り返しが発生するような条件でもレベルを下げることにより、明らかな破綻は避けて使うことが可能。
下はモジュレータレベルは99にして、比を変えて行った場合のスペクトラム。倍音が強烈に出るので、表示は波形の間隔が分かりやすいようにリニアにしている。
0.5
Aの440Hzの音を鳴らしているが、オクターブ下の音が入っているのが確認できる。 そして220Hzを基音とした整数倍音が作られる。1,2,3,4,5,6,7,8,9,10,11,12・・・・
1
440Hzを基音とした整数倍音が作られる。1,2,3,4,5,6,7,8,9,10,11,12・・・・
2
奇数次の倍音が作られる。1,3,5,7,9,11,13・・・・
3
FMのちょっと不思議な感じが出てくる。倍音構成は1,2,4,5,7,8,10,11,13,14,16,17・・・・妙な飛び方となる。 またナイキスト周波数まで使い切っているのがわかる。サンプリング周波数を超えると本来高い周波数のはずが、可聴域に折り返してしまう。FMの難解さの要因にもなっている部分である。 こうなると、ホワイトノイズの感触に近く、高域をカットしたくなってくる。そういうユーザーのためにDEXEDにはcutoffとresoが備わっている。これはオリジナルのDX7にはない機能。
4
2と同じオクターブ関係なので、同じ奇数倍音かと思いきや、高次になると32,34,36,38と偶数倍音も入ってくる。明らかな折り返しが確認できる。FMは一筋縄ではいかない。
5
1,4,6,8,9,10,11,14,15,16,18,19,20,21,23・・・・5以上は複雑な倍音構成で法則を見つけるのも面倒。レベルの小さい波形は折り返しである。
6
もはや整数倍は破綻している。基音よりも低い0.09とか入っている。 0.09,1,2.25,3.9,5,5.9,6,7,8,11,12,13,14.1,17,18・・・・ 何か4本セットという感じだが、半分近く折り返しが占めている。
7
これ以上は、最低音まで行った折り返し音がさらに折り返してきて、混沌としている。
8
オクターブ関係だが、過剰な折り返しにより、落ち着くことはない。1,1.9,3.9,4,6,7,9,9.9,11.9,12,14,15,17,17.9・・・・
9~31
これ以降は折り返しが激しく、音としてはランダムな印象になっている。
上記の作り出された倍音は、整数倍の倍音を基本としながらも、モジュレータ比率を上げて行くと妙な倍音も入ってくる。多くの楽器等の音色は整数倍音で構成されているので、基本は低めの比で作るのが正解だろうけど、打楽器や、ノイズ、ちょっと変わった音色を狙うなら、さらにモジュレータ比を小数などにするといいかもしれない。
実際の音作り
音程のある楽器の倍音構成は、基本的に整数倍の倍音を中心に作られている。まずこれがないと、ちゃんとした音程感を得にくいので、これをしっかり作ることが重要。整数倍を扱える組み合わせは、矩形波やのこぎり波や、サイン波そのものなどに限られるので、そこで骨格を作る。そして楽器の音の多くはアタックに特徴があるので、そこに金属的な響きを与えたり、ノイズっぽくしたり、様々なアタック音を加える。これだけでそれっぽい音が作れるし、実際のヤマハのプリセットも伸びる音程感のある音と、アタック音で構成されている。アナログシンセでは、このアタックを自在に作れなかったため、FM音源が重宝された。
FM音源が苦手なところは、きれいなエッジのあるのこぎり波が作りにくいところだろうか。どこか丸い感じで木管的になりやすいし、無理すると金属的になってしまう。柔らかいストリングス系の音はアナログシンセにはかなわない。
2018.5.26
波形で動的に見てみる
JavaScriptでキャリアとモジュレータの関係を波形で表示するプログラムを組んでみた。音で聴くと複雑だが、このように波形を動かしながら見ると、どのように変化していくのか直感的で分かりやすい。とりあえずDEXEDの表示と数値を合わせておいた。 最大レベルを近づけてみた。途中の値は、結構違うので注意。 DEXEDは、もっと緩やかにレベルが上がっていき、最後の方で一気に上昇する。
触れるのは周波数比のcoarseとLevelとなっている。赤線がキャリアで、青線がモジュレータ。緑が変調された波形。初期値はキャリアとモジュレータが重なっている。
モジュレータを最大3個使えるシミュレータも作ってみた。
VSTi DEXED (DX7クローンFM音源)
ギター日記 VST