パラダイス

Max9をはじめよう#4-2:Don’t think , feel.

2025.04.08

この連載ではノウハウ0の状態からMax9で音に関するソフトウェアの自作を目指します!試行錯誤をしながら一緒に無限の可能性を探っていきましょう。#4でも引き続きMax for Liveを扱います。※Max for Liveについてはこちらの過去記事をご覧ください。


こんにちは。梅田店スタッフタムラです。前回に引き続き、MIDIコントローラーとしてパッド(ゲームのコントローラー)の使用に挑戦していきます!

ざっくり手順☝️

① パッドの入力情報をM4L(Max for Live)に入れる。

② ベロシティとノートナンバーを出力するパッチを作る。

③ ①と② をどうにか繋げる。

④整える。

この記事では①の部分を進めます。

考えるより手を動かすのです

今回はMIDI系なので『Max MIDI Effect』を使います。Audioの時と同様に『midiin』から『midiout』に信号が抜けていきます。このパッチを切ると当然MIDIは後段の音源まで伝達されません。

この記事でやりたいことはパッド(ゲームのコントローラー)からの信号をM4Lに入れることです。その為に『gamepad』というオブジェクトを作ります。いつも新しいオブジェクトが出てくる時は簡単に解説を入れていますが今回は理解しなくてもなんとなく触れることを紹介したいです。

それぞれのオブジェクトに対してヘルプファイルというのがあります。そしてそこからパッチをコピペして自分のプロジェクトに使用できます。そう、今回作ったM4Lデバイス『gamepad』の根幹の部分はコピペです。オブジェクトの原理があまりわかってなくてもヘルプファイルのパッチを見ればなんとなーくどんな働きをするのか分かるものです。(英語読めなくても)めんどくさいところはスッ飛ばしてノリで理解、不細工でも形を作ってみるのが私流の飽きないコツです。表題通り「Don’t think , feel」なのです。

オブジェクトを右クリックしまして 『Open gamepad Help』をクリックします

すると下のようなパッチが開きます。

実際やってみてもらうとわかるんですけど、ここでコントローラーを触ると下のコントローラーのイラストが動きます。つまりこのパッチを組めば今回の目標の「① パッドの入力情報をM4Lに入れる。」は達成です。そして真似してパッチしたりはしません。コピペします。

整理整頓

先ほどコピペしたパッチの中身を理解しつつ必要のない部分は消していきます。

コントローラーのイラスト

今回は必要ないので消します。 一応ヘルプファイルで中身を見てみますとMaxのオブジェクトではなくヘルプファイル用のにjavascriptで作られたオブジェクトのようです。将来的にこの類も作れるようになりたいですね(遠目)

p output_messages

『gamepad』の第一アウトレットに接続されたオブジェクトです。pは『patcher』の略なのでこの中にサブパッチがあります。

『patcher』についてはこちらの記事参照ください

Max9をはじめよう#3-2:M4Lのパッチング

この段階でパッドのボタンを押すとそれぞれ対応した『×』(toggleというオブジェクト)が光ります。

さらにここで『route』というオブジェクトが登場しました。

route

第一インレットから入力された情報がアーギュメントと一致した場合、対応するアウトレットに信号を出力する。一致しない場合一番後ろのアウトレットから出力する。

ちょっと説明が下手なのでシンプルなパッチで紹介します。

これは10を第一インレットに入力した状態。

1000を入力した状態。

10000を入力した状態。

『route』の右側の数値をアーギュメントと呼びます。抜き出したい情報をスペースを開けて書きます。アーギュメント数に応じてアウトレットが増えますので対応したアウトレットから信号が出力されるという形です。

なんとなく理解したところで元のパッチに戻ります。元パッチの『route』のアーギュメントは「button_a button_b button_x…」と続きます。ここに入る信号は『p output_messages』の第一インレット、つまり『gamepad』の第一アウトレットから出力された信号ということになります。つまり逆算して考えると『gamepad』の第一アウトレットは押したボタンに対応して「button_a button_b button_x…」とメッセージを出力するアウトレットと推測できました。

つまりサブパッチ内の『route』をそのまま活用すればボタンを押した信号を次の何かしらのパッチに伝達できるはずです。

というわけでサブパッチをメインパッチにコピペして直接触れるようにします。『p output_messages』は必要ないので消します。

『route』が3段に重なってます。アーギュメントに一致しなかった場合、最終アウトレットからそのまま出力されますのでそのまま次の『route』のインレットに接続するともう一度ふるいに掛けれます。

少し長くなりましてすみません….次回も引き続き詳しく見ていきたいと思います。

では。

チームRock oN
渋谷店と梅田店からスタッフの個性全開のマニアックなコンテンツを発信!
記事内に掲載されている価格は 2025年4月08日 時点での価格となります
パラダイスの新着記事