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

By terada, 2016年9月17日


久々のPd講座ですが今回はシンセサイザーの改良版をご紹介します。これまでにつくったシンセサイザーは、キーボードの入力に応じて音は出るものの、すべて単音のみの出力でした。そこで今回は複数の音を同時に出力できるシンセサイザーをつくってみたいと思います!

音を出すサブパッチをつくる

まずは単音を出力するサブパッチ(tone)をつくります。下の図を参照してください。このサブパッチの入力は、キーが押されたときに出るbang、離されたときにでるbang、出したい音のmidiノートナンバー、の3つです。この3つの情報から単一の周波数を持つ正弦波を出力します。今回はこのサブパッチを音階分用意してシンセサイザーをつくります。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-09-16-7-42-51

キーの状態を検知する

正弦波をつくる部分はサブパッチで行うので、続いてキー入力の情報を得る部分をつくりましょう。これまでは“keyname” という部分でどのキーが押されているかを判定していました。しかし、このコマンドでは押されているキーは一つだけしか判定することができません。そこで今回のプログラムでは“key”“keyup”という2つの機能を使って、より詳しくキーの状態を検知します。下の図がプログラムの全体像です。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-09-16-7-42-43

図中の真ん中にある“key”でどのボタンが押されたか、“keyup”でどのボタンが離されたかを検知します。ボタンの情報はASCIIコードで出力されます。したがって、その後にある”sel”に対応するキーのASCIIコードを指定することで、特定のキーが押されたらbangが出力される、またキーが離れたらbangが出力される仕組みにしました。この出力を先程つくったtoneというサブパッチの真ん中と右側のインレットに接続し、さらに”loadbang”から音程に相当するMIDIナンバーを左側のインレットに入力すれば完成です。

この状態で複数のキーを押してみてください。複数の音が出ましたでしょうか? 設定した全てキーが押されているか、離れたのかをチェックすることで複数音の出力が可能となります。このように様々な工夫をして、より自分好みのシンセサイザーをつくってみましょう!

logo2

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