Pd入門講座のエフェクター編も第3回目となりました。今回は一般的なギターエフェクターとはちょっと異なるエフェクター、リングモジュレーターを作ろうと思います。リングモジュレータを使うと入力された音とは違う周波数の音が生じます。ギターだけではなく音声を入力しても面白いと思います!
リングモジュレータの原理とは?
リングモジュレータとは、入力された音に正弦波を掛け算することで音を変化させるエフェクターです。正弦波を掛け算するってどういうこと? なんで正弦波を掛け算すると音が変わるの? という疑問を解説しようと思います。高校の数学で習ったサイン、コサイン、タンジェントがわかれば仕組みがわかります!
さて突然ですが次の数式に見覚えがあるでしょうか?
そうです三角関数の積和の公式です。この三角関数で数学を挫折した方は多いと思います(笑)。実は今回つくるリングモジュレータとはこの積和の公式と深い関係があるのです!ギターの入力音を440 Hzの正弦波(A, ラの音)に置き換え、その音を220 Hzの正弦波で掛け算することを考えてみましょう。
数式の左側が入力音と掛け算する正弦波(ここでは余弦波)を表し、右側が出力される音を表します。上段の図は時間波形、下段の図はその周波数特性を表します。この図を見ると、入力音と掛け算をする音の周波数がそれぞれ440 Hz, 200Hzであるのに対して、出力側では240 Hzと640 Hzの二箇所に成分があることが見て取れます。このようにある信号を正弦波と掛け算すると、入力信号の元の周波数成分はなくなり、掛け算する正弦波の周波数と足した成分と引いた成分に現れます。これはまさしく積和の公式が現実の音の世界でもきちんと保たれているということです!ちなみに信号処理の分野では、このように入力音に正弦波を掛けて信号を変換することを「AM変調 / 振幅変調」と呼びます。みなさんお馴染みのAMラジオはこの方法で信号を電波に載せて信号を送信しています。
リングモジュレータを作ってみよう!
このリングモジュレータをさっそくPdで作ってみましょう。アナログ回路で正弦波との積をとることは結構大変なのですが、ディジタル信号処理ではとっても簡単にできます。
ではこのプログラムの流れを追ってい行きましょう。“adc~”はいつもどおり音の入口を表すので、そのボックスからつながっている“*~”が正弦波との掛け算する部分となります。このプログラムで大事なのは、その右側にある正弦波を作る部分です。パラメータは2個あり、周波数を決めるfrequencyとエフェクトを掛ける度合いを決めるdepthの2つです。frequencyで選択した数値を“osc~”に送ることで正弦波を作り出します。次にdepthの数値を正弦波に掛けることで、正弦波自体の大きさを調整し、エフェクトがかかる程度を変化させます。この場合depthの数値は0〜1とすると良いと思います。
このプログラムに実際にギターの音を入力してみましょう。どんな音がしましたか? おそらく正弦波の周波数が大きいほど、自分が弾いた音と全然違う音程の音に変わったと思います。特に和音などは気持ち悪い音になると思います(笑) これはリングモジュレータが元の音の周波数成分と違う成分を作り出す効果があるからです。興味がある方は音声を直接入力しても面白いと思います。パラメータ次第ではロボットのような声になるのでぜひ試して遊んでください!
田園都市線三軒茶屋、セミナー・研修・講座のSoraoto。様々なセミナーやサイエンスカフェなどのイベントを開催しています。また英会話教室を始めとする、大人の学習講座もありますので、ぜひご参加ください。