coding, photo, plant and demo

*FM音源を学ぶ(1)

唐突にFM音源について考えてみる。

FM音源というのは、周波数変調を特徴としたシンセサイザ。
個人的には昔のPCやゲーム機でお馴染みのOPMやOPNをすぐ連想するけど、一般的には小室哲哉や坂本龍一が使っていたYAMAHA DX7が有名でしょう。

氏家さんのDX5の解説動画が素晴らしい。

http://www.youtube.com/watch?v=LQ3qFy7gBHA


DX7IIDの解説も必見。

http://www.youtube.com/watch?v=xIn-n2ebENo


FMの特徴は、その名の通り周波数変調。サイン波のオシレータを直列に繋げられる点がアナログシンセとは大きく異なる。それにより複雑な倍音が作れ、アナログでは難しかったアコースティックな音や、金属音を作ることができる。

一般的にDX7やOPMで使っている変調は以下。


うーん、よく見ると周波数変調というより、位相変調と呼ぶのが正しいのでは?
周波数変調なら、こうするのが真っ当な気がするけどまあいいや。


これをグラフにしてみる。
まずはサイン波。
いわゆる時報の音。

これに周波数変調をかける。YAMAHA的には、出力段のサイン波をキャリア、それを変調するサイン波をモジュレータと呼ぶ。
倍音が出てきたのが分かる。

モジュレータの周波数を変えると、倍音も変わってくる。

さらにモジュレータを直列に追加すると、より複雑な倍音が生まれる。

ここまでで薄々気づくかもしれないけど、この波形の変化は予想が超難しい。様々なパラメータを設定できるけど、すぐ発散してノイズになるか金属音になってしまう。

それと比べ、アナログシンセは自由度が低いけど、適当に設定してもそれなりに聴ける音ができる点が素晴らしいよね…

とにかく、任意の楽器、例えばピアノやギターの倍音をいきなり作っていこうとしても、まず挫折する。そこで一つの攻め方として、基本波形+その他の波形に分ける方法がある。固定端である弦楽器なら基本はノコギリ波なので、ノコギリ波+楽器特有の倍音に分解して音を作る。同様に管楽器なら開放端だから矩形波や三角波をベースとする。
(固定端だと整数倍の倍音で、開放端だと奇数倍の倍音が含まれるため。参考 フーリエ級数展開とパーセバルの等式)

ということで、FM音源なのにまずはファミコンでお馴染みのノコギリ波や矩形波を作るテクニックが必要となるのだった!

しかし、周波数変調でノコギリ波を作るのは実は難しかったりする。大量のサイン波が必要となる。それを解決するためなのか知らないけど通常FM音源には自己フィードバックを掛けられるモジュレータが用意されている。つまり、自分の前回の出力を入力として変調できる。

フィードバックを使うと、このようにノコギリ波っぽいものが1個のサイン波で作れる。

まだちょっと鈍っているので、もう一段変調するとさらにノコギリっぽくなる。

ちなみにフィードバック量を大きくすると、簡単に発散する(これは演算精度の問題か)。

ということで、気が向いたら 続く
ちなみに、グラフの左上の式は書き換えて遊べます。


参考サイト

DX7 FM音源講座
http://fmdx7.music.coocan.jp/
FMの音作りをここまで分かりやすく深く解説しているサイトは(多分)他にはない!
目から鱗でした。本当に素晴らしいサイトです。

hexter DSSI plugin
http://dssi.sourceforge.net/hexter.html
DX7のエミュレータ(オープンソース)。

DX7マニュアル
http://www.yamaha.co.jp/manual/japan/result.php?WORD=DX7&div=emi


あとは、wikipediaの FM音源