[Max備忘録その2]MIDIから音へ

チュートリアル二回目です。前回で作ったパッチを続けて使用します。

キーボードを追加する

では早速始めましょう。シンセサイザーといえば、鍵盤を弾いて音をだすものが主流ですね。Maxにも鍵盤があります。(もちろん画面上の、ですが。)ではそれを早速出してみましょう。”N”キーを押して、新規オブジェクトを生成して、そこに”kslider”と入力します。(下図参照)

そうすると、”kslider”と入力したオブジェクトがこんな感じになります。

まるっきりキーボードですね。
ではこのキーボードを”cycle~”オブジェクトに繋げてみましょう。
実行モードにして、鍵盤を押してやると、1000Hzの音が消えて…あれ、すごい低音が。
(下図はLogicのChannel EQのアナライズ画面です)
実はこの”kslider”、MIDIのノートナンバーを出力しているんです。なので、入力された周波数を音にする”cycle~”は、MIDIのノートナンバーを周波数と誤解して音を出すので、極低音が流れてしまうのです。

このままでは鍵盤が綺麗に動作しない…ということで、ノートナンバーをHzに変換するオブジェクトを配置します。その名も”mtof”、”MIDIノートナンバー”を”周波数”に変換してくれるすぐれものです。こいつのインレットにノートナンバーを入れてやると、周波数に変換してアウトレットに出力してくれます。(こいつは内部で計算しているだけなので、0~127以外のナンバーを入れても機能します。)
さて、では”kslider”から”mtof”,”cycle~”,”ezdac~”と繋いで音を出してみましょう。

これで「ドレミファソラシド〜」と音が出せるようになりました。ですがこのままだと、最後に押した鍵盤の音が出っぱなしになってしまいますね。ですので音量変化、「エンベロープ」を付けていきます。

エンベロープをつける

では早速作っていきましょう。
まず”cycle~”と”ezdac~”の間にオブジェクトをつくり”~”と入力してパッチコードをつなぎ替えます。
そしてここの少し右上に”number”オブジェクトを作ります。その下に”/ 100.””sig~”と二つのオブジェクトを作り、”number”,”sig~”,”
~”の右側インレット、とパッチコードを繋ぎます。(下図参照)

なお、今作ったオブジェクト群は個別に記事を書いてありますので、詳しいことはそちらをご参考に。

そして、今つくったナンバーオブジェクトをクリックして、赤い丸で囲ったアイコンをクリックしてみてください。するとインスペクタが出てくるので、一番下の[Minimum][Maximum]にそれぞれ”0″と”100″を入れて下さい。これで、”number”オブジェクトの最小・最大値が設定できました。0~100の値を100で割るので、音程を%で制御することになります。この状態で、実行モードにしてナンバーオブジェクトにマウスを合わせ、上下にドラッグしてみましょう。音量は変わりますが、ぶつぶつとノイズが走ってしまいますね。これはMaxの(普通の)パッチコードの信号と、音声を送るシグナル用パッチコードのレートがずれてしまっているため発生します。これを防ぐためには”line~”などを使い、シグナルと同じレートで音量変化を適用できるようにする必要がありますが、ここでは割愛します。

では次に、エンベロープを書いてみましょう。
新しく”function”というオブジェクトを作り、下にもう一つ、”line~”というオブジェクトを作ります。そして”function”の右から二つ目のアウトレットから”line~”に繋げます。そしてその”line~”から前に作った一群とつなぎ替えます。以下のように。

そしてボタンオブジェクトを配置して、キーボードからボタンへ、ボタンから”function”へと繋ぎます。そうするとキーボードの信号に同期して信号が出力され、音量変化が作れます。function内には、実行モードでクリックすると点が追加され、エンベロープを描くことが出来ます。(”shift + 左クリック”で点を消すことも出来ます)これが通常のシンセのようなエンベロープになるわけです。

如何でしょうか。これで一通り、「キーボードを押して音をだす」ということが出来ました。

では今回はここまでとなります。

オブジェクトリスト

  • kslider
  • mtof
  • function
  • line
  • sig~
  • *
  • /

SNSでもご購読できます。

最近のコメント

    アーカイブ

    コメントを残す