この連載ではノウハウ0の状態からMax9で音に関するソフトウェアの自作を目指します!
試行錯誤をしながら一緒に無限の可能性を探っていきましょう。
最近やっと「地面師たち」を見ました。今回は最もフィジカルで、最もプリミティブで、そして最もフェティッシュなやり方でシンセサイザーを作っていきます!
やりたいことは至ってシンプルです。
手持ちのMIDI鍵盤から押したキーに対して正しい音階がスピーカーから出力できれば成功です。シンセサイザーと呼ぶにはあまりにも単純すぎますが、今回のプログラムを軸に今後様々な機能を実装していきたい所存です。
前回も少し触れましたが、Maxでのプログラムは主に「Object」をパッチでつないでいきます。
モジュラーシンセサイザーのイメージに近いと思います。ただどこに繋いでOK!なんてことはもちろん無く、しっかりルールを守ってパッチングすることがマストです。
上部の接続部分を「イントレット」、下部を「アウトレット」と呼びます。さらに複数ある際には左から「第一アウトレット」「第二アウトレット」…..と続きます。名前の通り信号は上から下に進みます。
ちなみに第一,第二で入出力できる信号は全然違いますのでつなぎ間違いには要注意が必要ですね…
以下のオブジェクトを使用します。
512 サンプルのウェーブテーブルを一波形として繰り返し読み出すことでオシレーターとして機能します。
オーディオインターフェイスのDACと同じ感じです。デジタル信号を予め設定した機器に音声出力させます
第一イントレットと第二イントレットの入力された数値を掛け算して出力します。
それぞれのオブジェクト、実はもっと複雑な理屈で動いてますが、初心者なのできることでざっくり覚えていきます。ご容赦を。
オブジェクトについている「~」はMSPのオブジェクトに付随する識別記号のようなものです。「~」がついていないオブジェクトもありますが働きとしては全然別物になります。私も一回ちゃんとこれが原因でハマりました。
オシレーターである「cycle~」のアウトレットから「dac~」の第一イントレットにつなぎました。「cycle~」に続けて数字を入力するとデフォルトの周波数を選択できるので今回は1000(1000Hz)としました。
するとパソコンのスピーカーから「プー」と音が!!
うまくいきました。ただ音がデカすぎる…なのでボリューム機能をつけようと思います。
めっちゃシンプルにボリュームだけをコントロールするプログラムを足します。「*~」の登場です。
「cycle~」と「dac~」の間に割り込ませます。第二イントレットには「flonum」(小数点数値を出入力できるオブジェクト)をつなぎます。すると「cycle~」からの音声信号の振幅に対して0.5が乗算され約半分の音量になります。「*~」がボリュームとして機能することがわかりました。これは今後もかなり使えそう…
第二イントレットに接続した「flonum」、整数のみを扱う「Numbers」はマイナスにも途方もない桁にも変更できます。今回は大きすぎる音量を下げたいので最大値を1、最小値を0と設定しました。0~1の小数点数値を乗算してボリュームをコントロールする仕組みです。当然ですが1より大きい数値を入力すると原音より音が大きくなりました。
しかしこのままだと1000Hzを永遠に流し続ける地獄マシンです。次回ここにMIDIの制御を加えていきます