FM音源とは?なぜ1個のサイン波からあれだけ多彩な音色が出るのか
はじめに
チップチューン音楽を作れるWebアプリ「PICOM」には、矩形波や三角波だけでなくFM音源のトラックがあります。FM音源は、たった数個のサイン波の組み合わせで、ベル・エレピ・ベース・金属的なシンセリードまで、驚くほど幅広い音色を出せます。
この「なぜ単純なサイン波の組み合わせから、あれだけ多彩な音が出るのか」という直感を、この記事では数式1本だけで説明します。コードは一切出しません。実装は第2回以降でじっくりやるので、ここでは「FM音源の音作りの仕組みを、自分の言葉で人に説明できる」状態を目指します。
これはFM音源を題材にした全4回シリーズの第1回です。第1回(この記事)で原理を、第2回で最小構成の実装を、第3回でオペレータを増やす意味を、最終回でPICOMの4オペレータ実装を扱います。
サイン波は倍音を1つしか持たない「最も素朴な音」です。その周波数を別のサイン波で揺さぶる(変調する)と、左右に側帯波(サイドバンド)と呼ばれる新しい倍音が次々に生まれます。揺さぶりの深さ(変調指数 I)で倍音の豊かさが、揺さぶる側と揺さぶられる側の周波数比(fc:fm)で倍音の並び方が決まります。この2つのパラメータを動かすだけで、音色が大きく変わるのがFM音源です。
サイン波は「倍音が1つだけ」の音
音の「音色」の正体は、含まれる倍音(基音の整数倍の周波数成分)の構成です。同じ高さ(ピッチ)でも、バイオリンとフルートで音が違って聞こえるのは、倍音の混ざり方が違うからです。
その観点で見ると、サイン波は特別な波形です。サイン波は基音だけを持ち、倍音を1つも含みません。だからサイン波は「ポー」という、まろやかで芯のない、いちばん素朴な音に聞こえます。逆に言えば、サイン波は音色を作るための真っ白なキャンバスです。ここに倍音をどう足していくかが、すべてのシンセシスの出発点になります。
FM音源は、このサイン波に倍音を足す方法として「周波数を揺さぶる」というアプローチを取ります。
揺さぶると倍音が生まれる:側帯波
ラジオのFM放送と同じ言葉ですが、原理も同じです。ある周波数のサイン波(これをキャリアと呼びます)の周波数を、別のサイン波(モジュレータと呼びます)で速く揺さぶります。
すると不思議なことに、キャリアの周波数の左右に、モジュレータの周波数の間隔で、新しい周波数成分が次々と現れます。これが側帯波(サイドバンド)です。キャリアの周波数を fc、モジュレータの周波数を fm とすると、
fc, fc ± fm, fc ± 2·fm, fc ± 3·fm, ...
という位置に成分が並びます。元はサイン波2本だけだったのに、揺さぶった結果として、たくさんの周波数成分=倍音が湧き出てくるわけです。これがFM音源が少ない素材で複雑な音を作れる理由の核心です。
式は、これ1本だけ
ここまでの話は、次の1本の式にすべて入っています。
out = sin(2π·fc·t + I·sin(2π·fm·t))
t は時間です。落ち着いて分解すると、構造はとても素直です。
いちばん外側の sin(2π·fc·t + ...) は、周波数 fc のキャリアのサイン波です。もし中身の + ... が無ければ、これはただのサイン波(倍音なし)になります。
そのキャリアの位相(カッコの中身)に、I·sin(2π·fm·t) というモジュレータのサイン波を足し込んでいます。位相に揺さぶりを加えるとは、瞬間ごとにキャリアの進み方を速くしたり遅くしたりすることで、結果として周波数を揺さぶることと同じになります。
つまりこの式は、「キャリアのサイン波を、モジュレータのサイン波で揺さぶる」を、そのまま数式にしただけです。FM音源で出てくる式は、突き詰めればこの1本だけです。この先のシリーズは、この式を増やしたり繋ぎ替えたりしているにすぎません。
パラメータが音にどう効くか
式の中で音色を決めるのは、I(変調指数)と、fc と fm の比です。それぞれが耳にどう効くかを言葉で結びます。
変調指数 I = 倍音の「豊かさ」
I は揺さぶりの深さです。I を大きくするほど、遠く(fc から離れた高い倍音)まで側帯波のエネルギーが届きます。
I = 0 なら揺さぶりはゼロで、キャリアは素のサイン波のまま、まろやかな「ポー」という音です。I を上げていくと、近くの倍音から順にエネルギーが乗り始め、音はだんだん明るく・ジリジリした金属的な質感へ変わります。I をさらに大きくすると、倍音が高域まで広がってノイジーで激しい音になります。
シンセの音作りで「明るさ」「アタックの鋭さ」を調整するつまみは、おおむねこの I を時間的に動かしているものだと考えると見通しが良くなります。
周波数比 fc:fm = 倍音の「並び方」
倍音の位置は fc ± n·fm でした。だから fc と fm の比が、生まれる倍音の並び方を決めます。
fc:fm が 1:1、1:2、2:1 のような単純な整数比のとき、側帯波は基音の整数倍にきれいに重なります。すると倍音が音楽的に整列し、ピッチのはっきりした「楽器らしい」音になります。エレピやベルのような、音程感のある音はこの領域です。
比が整数からずれると、側帯波は基音の整数倍に乗らず、不協和でピッチ感の薄い金属音・打楽器的な音になります。鐘やゴング、効果音的なサウンドはこの領域です。
FM音源では、音の高さ(ピッチ)を変えても音色を保ちたいので、fm はふつう「fc に対する比(レシオ)」で指定します。fm を固定の周波数で持ってしまうと、高い音と低い音で倍音の並びが変わり、音色が破綻します。PICOMの実装でもモジュレータは絶対周波数ではなく比で持っており、これは第2回以降で実際のコードとして出てきます。
なぜ歴史に名を刻んだのか:DX7とOPNA
FM音源を一気に有名にしたのが、1983年のヤマハDX7です。スタンフォード大学のジョン・チャウニング博士が見つけたFM合成の手法を製品化したもので、それまでのアナログシンセでは難しかったエレピ・ベル・金属的な音を、デジタルで安定して、しかも少ない計算量で出せたことが衝撃でした。1980年代のヒット曲のエレピは、かなりの割合がDX7です。
日本のレトロPCに親しんだ人には、PC-98シリーズに載っていた音源チップ、ヤマハのOPNA(YM2608)の方が馴染み深いかもしれません。OPNAは4つのオペレータ(サイン波生成ユニット)を持つFM音源で、当時のゲームミュージックの土台でした。PICOMが目指している「チップチューンらしいFMの音」は、まさにこのOPNA系の4オペレータFMの系譜です。
少ない計算量で多彩な音が出せるというFM音源の長所は、CPUもメモリも貧弱だった時代に決定的でした。そしてその仕組みは、今ブラウザ上のC#で実装しても、まったく同じ式で動きます。このシリーズは、その式を実際に鳴るコードへ落としていく記録です。
まとめ
- サイン波は倍音を持たない最も素朴な音で、音作りのキャンバスになる
- キャリアの周波数をモジュレータで揺さぶると、fc ± n·fm の位置に側帯波(倍音)が次々生まれる
- 音色を決める式は
out = sin(2π·fc·t + I·sin(2π·fm·t))の1本だけ - 変調指数 I は倍音の豊かさ(明るさ・激しさ)を、周波数比 fc:fm は倍音の並び方(楽器的か金属的か)を決める
- 少ない素材で多彩な音を出せる長所が、DX7やPC-98のOPNAでFM音源を時代の主役にした
次回は、この式をそのままC#のコードに落として、キャリアとモジュレータ2個だけの最小のFM音源で実際に1音鳴らします。





