Pure Data入門講座 vol. 3 〜シンセサイザーを作ろう1〜

By terada, 2015年10月16日


第3回目Pure Data入門講座の内容は「シンセサイザーを作ろう」です。電子楽器として歴史の古いシンセサイザーもPdを使えば簡単に作ることが出来ます。複雑な機能は後から付け加えるとして、最もシンプルな正弦波を音源としたシンセサイザーを作ってみます。

音階をつくってみよう

まずは手始めにシンセサイザーの心臓部である、音階を作り出す部分をプログラムで作ってみましょう。下図の様なプログラムを書いてみてください。

pd03_01

図中のグラフを表示する部分は、第2回目の時間波形と周波数波形を表示するプログラムです。今回新しく増えた部分は、左上の3つの数値が入ったメッセージボックスと、その下にある“osc~”というボックスです。“osc~”というボックスは正弦波をつくるボックスです。正弦波とは高校の数学や物理で習った”sin”のことです。正弦波は単一の周波数を持つ信号で、この信号をスピーカに入力すると、周波数に応じた高さの音が聴こえます。左上にある3つの値は、“osc~”に送る周波数を表わしていて、それぞれ音階のドレミ(C,D, E)に対応する周波数です。この状態でプログラムを動かして、3つの数値をそれぞれクリックすると、ドレミの音が出ましたでしょうか?

キーボードから入力してみよう

一応音が出たものの、まだまだシンセサイザーと呼ぶにはほど遠い段階です。次はパソコンのキーボードとをシンセサイザーの鍵盤に見立てて、押すキーに応じて音階が出る様にしてみましょう。次の図の様に“keyname”“sel a s d”というボックスを追加します。

pd03_02

“keyname”とはパソコンのキーボードのどこのキーが押されているかを右側の穴の部分から出力します。続いて“sel”とは、入力された信号が引数と同じ場合にbangを出力するというボックスです。この場合“keyname”からaという信号が入力されたら、一番左側の穴からbangが出力され、sなら2番目の穴、dなら3番の穴からbangが出るということになります。この状態でプログラムを動かして、キーボードのa, s, dを押してみてください。キーに応じてドレミと音がかわりましたでしょうか?

おかしなところを直す

この時点で、シンセサイザーとしていくつかおかしな点があると思います。キーを離しても音が出っぱなしになっている、音の鳴り始めでプチッとクリックノイズがするなどです。この点を修正したプログラムが下の図です。

pd03_03

かなり複雑になってきました(笑)。しかし、一見複雑に見えますが、増えたところは2カ所だけです。一つ目は“sel a s d”からの線が1と0のメッセージボックスに伸びて、かけ算に繋がる部分です。“sel a s d”の出力は左側から、a, s, dが押されたときにbangを出力しますが、一番右側の穴は他のキーが押されたときにbangが出力されます。ここで注目する部分はa, s, dが押された場合は1を正弦波にかけ算して、今まで通り音が出力され、それ以外のキーが押されたときには0を正弦波にかけ算する、すなわち音がしなくなることを意味します。2つ目は“keyname”の左側の穴から“sel 1”、二つのメッセージボックス、“line~”を通ってかけ算をする部分です。まず“keyname”の左側の出力は、キーが押されている時は1を、押されてない時は0を出します。その結果に応じて二つのメッセージボックスの内容を“line~”に送ります。“line~”と言うボックスは二つの数値が入ったとき、一つ目の数値に、二つ目の時間(ms)をかけて徐々に近づく値を出力します。したがって、この一連の流れで、キーが押された時は50 msかけて徐々に1に近づく値をかけ算して、キーが話された時は50msかけて徐々に0に近づく値をかけ算します、音の立ち上がりと立ち下がりをなめらかにすることでクリックノイズを消去するテクニックです。

1オクターブ分の音階をつくってみよう

最後に1オクターブ分の音階を作ってみましょう。このまま全ての他の音階に相当する周波数を増やせばできるのですが、一つづつ周波数を調べるのはちょっと面倒です。そこでPdの“mtof”という便利なボックスを使ってみます。

pd03_04

変更した点は、1オクターブ分のキーボード入力を増やしたこと。さらにそれに対応する60〜71のメッセージボックスと“mtof”というボックスを追加しました。勘のいい方はお気づきかもしれませんが、この”mtof”とはmidiノートナンバーを周波数に変換するボックスです。ちなみにmidiノートナンバーで60はちょうど鍵盤の真ん中のド(C4)を表わします。

Wikipedia MIDIについて (https://ja.wikipedia.org/wiki/MIDI)

というわけで、今回は最もシンプルなシンセサイザーを作ってみました。Pdでは、リアルタイムでキーボード入力に応じた音を出すことが、結構簡単なプログラムで作成できることがわかったと思います。次回はこのシンプルなシンセサイザーを改良して、もう少し面白い音が出る様に修正して行こうと思います。

 

田園都市線三軒茶屋、セミナー・研修・講座のSoraoto。様々なセミナーやサイエンスカフェなどのイベントを開催しています。また英会話教室を始めとする、大人の学習講座もありますので、ぜひご参加ください。

logo2