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

By terada, 2015年11月21日


前回に引き続き〜シンセサイザーを作ろう〜第3回目を行います。前回プログラミングした音源を生み出すVCOに続いて、音色を変えるVCF、音量を変えるVCAの部分を作ります。シンセサイザーの流れ出はVCO → VCF → VCAと順番に音が流れますので、まずはVCFの部分から作ります。

VCFをつくる

VCFとはVCOで作った音源の音を変化させる役割を持つパーツです。音色を変える最も簡単な処理として、VCFの名前にも含まれているフィルターというものがあります。フィルターとはある物を濾過することを指し、音の世界では周波数の一部分を濾過して抜き出す機能を持つ物のことを言います。

というわけで早速VCFを作ります。今回はフィルタの中でもバンドパスフィルタと呼ばれるフィルタを作ります。これまでと同様にサブパッチ“VCF”を作り中身を書いて行きますが、バンドパスフィルタには周波数のどの部分を抽出するかを決める中心周波数というパラメータが必要になります。中心周波数のパラメータを決めるスライダー“Frequency”を下図のように作っておきましょう。スライダーとはあるパラメータをバーをマウスで操作することで視覚的に変化させるツールのことです。このスライダーにフィルタの周波数を操作するためにパラメータを設定しましょう。

pd05_01pd05_02

右図がスライダー“Frequency”のプロパティになります。まず出力範囲として左: 0、右: 8000と数値を入力します、これでスライダーの左端の値が100、右端の値が8000となります。さらに前回の“Source”でも書いたようにsendシンボルとして“freq”という値を入力してください。サブパッチの中でこの値を“receive”で受け取りバンドパスフィルタの中心周波数とします。

pd05_03

サブパッチ“VCF”の中身はとてもシンプルです。“VCO”からの音を受け取る“inlet~”と、フィルタの中心周波数を受け取る“r freq”、そしてバンドパスフィルタ本体の“bp~”、出力の“outlet~”からなっています。“bp~”という関数は二つのパラメータが必要で、一つ目の引数がフィルタの中心周波数、二つ目の引数がフィルタの帯域幅を表わすQ値です。ここではQ値を10という固定値にしていますが、必要に応じてこのQ値も変化出来るように変更してもよいと思います。

VCAをつくる

さてシンセサイザー編の初回で作ったプログラムのうち、赤い部分がコントローラー、青い部分がVCO、そして緑の部分がVCAに当たるという説明をしたと思います。
pd04_01

なのでこのプログラムと同じ部分をサブパッチ“VCA”として作りましょう。メインのプログラムに“pd VCA”を追加して中身を下図のように書きましょう。VCAからの出力を“dac~”につないで音を出してみましょう。

pd05_03pd05_04

では新しい機能を含めてプログラムがきちんと動いているか、以下の点を確かめてみましょう

  • 今まで通りキーを押すとそのキーに応じた高さの音が出ているか?
  • キーを離すと音が止まり、別のキーを押しても音が出ないか?
  • 音の立ち上がりでクリックノイズが生じないか?
  • 音源の切り替え(正弦波、ノコギリ波、矩形波)が出来て、音が変わるか?
  • Frequencyスライダーを動かすと音が変わるか?

ちなみに音源が正弦波の時はFrequencyスライダーを変化させても音が変わらないと思います。これは正弦波が単一の周波数を持つ信号であるため、フィルタで音を濾過しても、音が大きくなったり小さくなったりするだけで、音色が変わることはありません。

さて3回に渡って続けてきた〜シンセサイザーを作ろう〜ですがいかがでしたでしょうか?シンプルなシンセサイザーですが、この枠組みを作ってプログラムを作っておけば、これから様々な機能を追加して、自分だけのシンセサイザーを作ることが出来るので、ぜひ色々試してください。次回からはまた違うテーマでPd入門講座を行いたいと思います。

logo2

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