久々のPd講座ですが今回はシンセサイザーの改良版をご紹介します。これまでにつくったシンセサイザーは、キーボードの入力に応じて音は出るものの、すべて単音のみの出力でした。そこで今回は複数の音を同時に出力できるシンセサイザーをつくってみたいと思います!
音を出すサブパッチをつくる
まずは単音を出力するサブパッチ(tone)をつくります。下の図を参照してください。このサブパッチの入力は、キーが押されたときに出るbang、離されたときにでるbang、出したい音のmidiノートナンバー、の3つです。この3つの情報から単一の周波数を持つ正弦波を出力します。今回はこのサブパッチを音階分用意してシンセサイザーをつくります。
キーの状態を検知する
正弦波をつくる部分はサブパッチで行うので、続いてキー入力の情報を得る部分をつくりましょう。これまでは“keyname” という部分でどのキーが押されているかを判定していました。しかし、このコマンドでは押されているキーは一つだけしか判定することができません。そこで今回のプログラムでは“key”と“keyup”という2つの機能を使って、より詳しくキーの状態を検知します。下の図がプログラムの全体像です。
図中の真ん中にある“key”でどのボタンが押されたか、“keyup”でどのボタンが離されたかを検知します。ボタンの情報はASCIIコードで出力されます。したがって、その後にある”sel”に対応するキーのASCIIコードを指定することで、特定のキーが押されたらbangが出力される、またキーが離れたらbangが出力される仕組みにしました。この出力を先程つくったtoneというサブパッチの真ん中と右側のインレットに接続し、さらに”loadbang”から音程に相当するMIDIナンバーを左側のインレットに入力すれば完成です。
この状態で複数のキーを押してみてください。複数の音が出ましたでしょうか? 設定した全てキーが押されているか、離れたのかをチェックすることで複数音の出力が可能となります。このように様々な工夫をして、より自分好みのシンセサイザーをつくってみましょう!
田園都市線三軒茶屋、セミナー・研修・講座のSoraoto。様々なセミナーやサイエンスカフェなどのイベントを開催しています。また英会話教室を始めとする、大人の学習講座もありますので、ぜひご参加ください。