シンセサイザー研究室

FM音源を知る

FMとは「Frequency Modulation」の略で周波数変調の事です。
元の波形を別の波形で揺らして(変調して)別の形の波形にして出力するという音源です。
スタンフォード大学のジョン・チャウニング博士が間違って LFOの周波数を 100倍速くしたことから生まれた、偶然の産物とのことです。
これをヤマハがライセンスを受け実用化したのがFM音源です。
コルグではシンセサイザーKRONOS、NAUTILUS、prologueなどでVPM(Variable Phase Modulation:可変位相変調) とか言ってます。

※ カッコイイからFM音源って言ってますが、正確には「位相変調」なのでコルグの方が正しいです(笑)

この音源を採用してヒットしたシンセサイザーにヤマハの「DX7」があります。 初音ミクのデザインの元になったシンセです。
DX7
FM音源は非常に少ないメモリ消費で多彩な波形を生成出来る為、パソコンやゲーム機の音源、 携帯電話の着信音などで採用されていました。
現在はメモリもCPUリソースも豊富なので「個性的な音源」という側面で人気が上昇しています。
ヤマハのシンセサイザーMontage M/ MODX+、コルグopsix se、ソフトシンセとして「FM8」「DEXED」「Sytrus」「DX7 V」などFM音源を採用した物も 数多くあります。
Montage M
opsix se
DEXED Sytrus
DX7 V

難しい内容はココかWikipediaを見てください。
https://qiita.com/nanase/items/a6789735a73b8da6526f

FM理論を勉強しても、無駄だということがお判りになったと思われます。

実はFM音源は頭で判ってても、判ってなくても、 出てくる波形が予想出来ないから難しいのです。

「FM音源とは、周波数変調によって波形を変形させることで様々な音を作り出す音源方式」
「ある音(波形)を、物凄い勢いで揺らしまくって出力波形を変形させる音源方式」
とだけ覚えてください。


FM音源の仕組み

オペレータとキャリア/モジュレータ

「ある音(波形)を、物凄い勢いで揺らしまくって出力波形を変形させる」
と書きましたが、「ある音(波形)」すなわち 変調を掛けられる側の事「キャリア」と言います。
そして「揺らしまくって変形させる」すなわち 変調を掛ける側の事「モジュレータ」と言います。

一応FM音源を一番最初に開発したのはヤマハなので、 波形を出力する回路の事をヤマハ風に「オペレータ」 と呼ぶことにします。
「オペレータ」はキャリアにもモジュレータにもなる 基本回路です。

operator_anime
オペレータの中身を覗くと、二つのテーブルがあります。
一つは波形そのものを格納している「波形テーブル」、 もう一つは波形テーブルを読み出すときに使用する 「読み出しテーブル」です。

読み出しテーブルの中身はY軸をアドレス、X軸を時間とすると直線の上り坂になってます。 読み出しテーブルのアドレスが順番に読み込まれ、そのアドレスに応じた波形テーブルの 波形(左ではサイン波)が出力されていきます。

fm_operator
今、波形テーブルの中身がサイン波だったとします。
鍵盤を弾いて発音する場合には、その音程に応じて読み出しテーブルが順番に 参照されていきます。
単独のオペレータだけでは、読み出しテーブルにしたがって、 波形テーブルのデータを順番に読み出すだけなので、出力されるのは 波形テーブルに格納された波形、つまりここでは「サイン波」となります。

さて、いよいよFMです。もう一つオペレータを用意して、片方を変調を 掛ける側のオペレータ「モジュレータ」として使います。

モジュレータの出力する波形はサイン波です。 このサイン波をキャリア(変調される側)の「読み出しテーブル」 と足し算してしまうのです!
するとキャリアの持ってる波形テーブルはサイン波なのに、読み出し方が変わった もんだからキャリアの出す出力波形の形が変わってしまいました。
読み出し方がモジュレータによって揺らされて波形の 読み出し方が変わってしまい、結果的に出力波形の形が変わってしまうのです。

<Wiki Pediaに載ってた変調の様子>
Phase Modulation_anime

・・・で、実はコレで60%くらいFM音源マスターに近づいたわけですが 判りましたでしょうか?
恐らく出力波形の形が変わってしまうのは判ったと思いますが、 「どういう風に変わるか」までは予想しづらいでしょう。・・・その通りです。
ご安心下さい。予想しづらいのがFM音源 です。予想できたら神です。
上の例では、波形テーブルはサイン波でしたが、 サイン波以外の波形テーブルを持った物もありますし、 実際にはオペレータの数も多く扱えるため、出力波形を予想するのは困難です。 しかし、FM音源とはそういう物 なのです。

上の例でとりあえず、「音の特徴(キャラクター)」 は完成しました。しかし、音色には他にも大事な要素があります。
音色には3つの要素があります。音の三要素とは何か?
それは
 ・音の特徴(フォルマント)
 ・音の高さ(ピッチ)
 ・音量(アンプリチュード)
の3つです。
では、「音の高さ(ピッチ)」と「音量」はどこで決めるのでしょう?
それは、最終的に出力波形を出しているオペレータ、すなわちキャリアオペレータの 「ピッチ」と「音量」の設定です。

逆に言えば、モジュレータの「ピッチ」と「音量」の設定は 出力波形のピッチと音量とは無関係という事になります。
よって、いくらモジュレータのピッチや音量をいじっても音が高くなったり 低くなったり、大きくなったり小さくなったりはしないのです。

モジュレータとなるオペレータの設定は「音の特徴」を操作するパラメータとなるのです。
モジュレータの出力波形は「読み出しテーブル」を変形させる為にしか使わない のです。

以上をまとめると次の通りです。

 ・音の高さと音量(及びその時間的変化)はキャリアオペレータの設定で決まる。
 ・モジュレータオペレータの設定は全て「音の特徴」を操作するパラメータとなる。


アルゴリズム

FM音源は最低モジュレータとキャリアの 2つのオペレータがあれば音は作れます。
しかし、もっと沢山オペレータを使えば、より複雑な音が作れます。
オペレータが沢山あると当然組み合わせ方も沢山あるわけですが、 この組み合わせ方をアルゴリズムと言います。
難しく考えなくて良いです。 オペレータの「組み合わせ方」を アルゴリズムと言ってるだけです。

では具体例を挙げてみましょう。

fm_alg1 ■法則1
この場合、BとCの出力波形を足し算した波形で 「A」の読み出し波形を変調する事になります。
倍音が多く発生し、複雑な音になります。

fm_alg2 ■法則2
この場合、AとCがキャリアとなります。
AとBで一つの音色、CとDでもう一つの音色を作り 同時に鳴らすことになります。
全く異なる音色を重ねたり、同じ様な設定の音色を2つ作って重ねるなど、 様々な使用方法が考えられます。

fm_alg3 ■法則3
この場合、AとBがキャリアとなりますが、 Cを共通して使用することになります。
モジュレータが1個で済むのでお得です。
レイヤーで重ねる音色などを作る際に有効です。

fm_alg4 ■法則4
この場合、Cの波形でBを変調し、変調されて出力されたBの波形を使ってAを変調します。
より複雑で明るい音が得られます。
法則1と違うのは、法則1ではBとCの波形を足し算した物がAを変調していたのに対し、
法則4ではCがBを変調した結果を入力としてAを変調している 点です。
変調した波形を使って変調しているので、とても複雑な波形が得られます。

上記で挙げた法則を元にアルゴリズムを見ると、ある程度予想を立てて音作りが 出来ると思います。
FM音源では キャリアを基準にしてオペレータを分解し、それぞれの音を確認し、 微調整しながら作り込んでいくことが上手く音色を作るコツです。


フィードバック

fm_alg_fb 変調で作り出した出力波形をもう一度上の回路に入力して さらに変調してしまう回路フィードバック と言います。
フィードバックのレベルを上げるとより複雑で明るい音になります。
図の右側の様に変調が掛けた結果をさらにフィードバックすると、かなり強烈で 複雑な倍音を得られますが、設定はかなり複雑になります。


音色を作るコツ

「FM音源は仕組みは簡単だけど、出てくる音が予想しにくい」と冒頭で書きましたが、 ざっくばらんではありますが「コツ」みたいな物はあります。
ここではそのちょっとしたコツを挙げてみましょう。


ノコギリ波と矩形波は作れる

キャリアとモジュレータとの周波数を1:1にするとノコギリ波が作れます。 ノコギリ波はブラス、ストリングス、ピアノなどを作る際によく使われます。
キャリア:モジュレータを1:2にすると矩形波が作れます。 矩形波はクラリネットやオーボエといった木管楽器を作る際によく使われます。
※ 波形テーブルに最初からノコギリ波や矩形波が用意されてる タイプの場合は波形を選んで使いましょう。


まずはキャリアから作る

上で「音の高さと音量(及びその時間的変化)は一番最後のキャリアオペレータの設定で 決まる。」
と書いたわけですが、要するに、音を作る時は 「音の高さ(ピッチ)」と「音量(及びその時間的変化)」 を先に決めた方が楽です。

そこで、キャリア以外のオペレータを全てオフに(または出力レベルをゼロに)して キャリアから作ってしまうのです。

作りたい音がベースなら低い音、ブラスなどは中位、金属音なら高い音に、 エレピなら立ち上がりが速く、減衰はゆっくりに、パーカッションだったら減衰も速く、 ストリングスなら立ち上がりと減衰を滑らかに・・・ など、「高さ」と「音量とその時間的変化」を先に決めて作ってしまうのです。

キャリアが複数ある音色の場合は一つずつ作っていくと良いでしょう。


モジュレータはキャリアに近いところから作る

「音の特徴」はモジュレータがカギを握っています。 キャリアが出来たら、キャリアに近いモジュレータから 加工して行きます。
モジュレータの出力レベルは強いと複雑で明るい音に、 弱いと単純で暗い音になります。
モジュレータの出力レベルや周波数はあくまで「音の複雑さ」を決めているだけです。
モジュレータの出力レベルを上げても音自体が大きくなる訳ではありません。
周波数の高い信号で変調するとキンキンした音(金属音など)、 周波数の低い信号だとベースなどに使える音になります。


最後にフィードバックの設定と微調整

最後にフィードバックで明るさを調整して完成です。
もし、キャリアが複数あるような音色の場合、今作った音のキャリアオペレータを オフにして音を消し、 次のキャリア、モジュレータの組み合わせを同じような手順で作っていきます。

全てのキャリア、モジュレータが完成したら、今度は全てのオペレータをオンにして、 キャリア同士の音量バランス調整、各音色の明るさ調整を行い、 音色全体の完成度を上げていきます。


時間的変化や雑音(音楽的なノイズ)も重要

音は何も「音の特徴」だけで決まっている訳ではありません。 音の高さ(ピッチ)や音量の時間的変化なども重要です。
バイオリンとギターの波形の形(音の特徴)は殆ど同じです。 ところが人間の耳では違いが識別出来ます。 これはバイオリンとギターの音量の時間的変化が異なるからです。 バイオリンは立ち上がりが滑らかな持続音、ギターはアタックが鋭い減衰音だからです。

また、雑音(ノイズ)も重要です。 ここで言う雑音というのは本当に煩わしい雑音ではなく音楽的なノイズです。
例えば、バイオリンを擦るノイズ、フルートや尺八のブレスノイズ、 ピアノの打鍵時の打撃音などです。

こういった 成分をバラバラに作って合成すればいろんな音が作れます。

キャリアが2個あるアルゴリズムを選び、片方は矩形波の様な音、 もう片方はブレスノイズとし、重ねればアタック部分は息を吹きかけた音が鳴り、 その後持続音だけが鳴っているので聞いてる人はフルートっぽく思えるのです。


応用例

■モジュレータ音量の時間的変化でバリエーションを出す
モジュレータの設定次第で様々なバリエーションが作れます。
モジュレータの出力レベルをいきなりMAX全開で始め、すぐに止めると「コン」とか 「キン」といった金属音や木琴みたいな音になります。
上と同様で徐々に減衰していくようにすれば「キーーーン」とか「コーーン」とか エレピやピアノのような音になります。
最初はゼロでやや急勾配にMAXまで揺らすと「ホワン」とか「ポワン」 といったブラスやホルンっぽい音になります。
ノイズにならないくらいの変調で平坦に揺らせばエレキギターになります。

というようにバリエーションを出すことが出来ます。

■重ねてバリエーションを出す
上で「コン」と「ホワン」って音を作りましたが、これらを重ねるとどうなるでしょう? 「コワン」って音になると思います。
こんな感じで「足し算でバリエーション」を出す方法もあります。

■擬似的にエフェクタっぽく聴かせる
●デチューンサウンド
全くパラメータが同じ「キーーン」という音を2つ用意し、ピッチだけ微妙にずらすと、 広がりのあるエレピの音になります。
●コーラス効果
ピッチをほんの少し揺らして重ねるとコーラス効果が出せます。
●ディレイ効果
発音タイミングをずらしてやまびこ効果(ディレイ)を出す事も可能です。
●レイヤーサウンド
ブラスの音をピッチを多少変えて何個も重ね、さらに音を左と右に振り分けると 広がりのある分厚い音になります。

ちょっと挙げただけでもこんなにバリエーションが作れます。

コツはあるが結局は

最終的には経験と勘です(笑)
文章や図では絶対に判りません。 FM音源は音を作ってみてナンボです。
一気に作るのではなく、チョットずつチョットずつ微調整しながら 作っていくのがコツです。