Max基礎

Cycling’74 Maxとは

Max(マックス)は、Cyclin’74社が開発、販売しているグラフィカルなプログラミング環境。最大の特徴はProcessing等のコードベースのプログラミングとは異なり、様々な機能を持ったボックスをパッチコードで接続していく。視覚的にプログラムの流れを理解しやすく、プログラムの修正やパラメータの変更が容易なため、試行錯誤を必要とするプログラムのプロトタイピングやメディアアート作品に用いられることが多い。日本ではMI7が販売している。MI7のサイトには日本語の情報も多い。登録すれば日本語パッチやリファレンスの日本語化にも対応している。

映像や音響合成などの機能にも特化しており、音楽ライブや映像演出でも使われることが多い。プログラムの実行スピードはopenFrameworksなどのC++のほうが高速だが、手軽さという面ではMaxが優れている。PCの高速化のおかげで音楽ライブでの演奏や映像演出でも問題なく利用することができる。

バージョン4まではMax/MSP/Jitterという名称だったが、バージョン5以降は単にMaxという名称になった(もどった?)。2017年現在はバージョン7が最新。もとはミラー・パケット氏が開発したものだが、現在はCyclin’74社が開発を続けている。ミラー・パケット氏が開発したPure DataもMaxと同様なグラフィカルプログラミング環境でフリーで公開されているが、完成度はMaxのほうが高く、使い勝手も良い。バージョン7からは、6までのRuntimeが1つのアプリケーションとして内包されており、Demoモードとして動作する。Demoモードでは1ヶ月以内はフル機能を使うことができ、1ヶ月以降は保存はできないが、編集と実行を行うことができる。

Back To Top

Maxツアーチュートリアル

本演習ではMI7が公開しているMaxツアーに沿って進める。映像自体は5分程度しかないが、ここで紹介されている機能を理解するには幅広い知識が必要となる。以下の映像ではバージョン6を利用しているが、本演習ではバージョン7を利用する。映像の再生に関してはimovieオブジェクトではなく、jit.movieオブジェクトを用いる。

Back To Top

Maxの起動

ApplicationフォルダからMax.appをクリックして起動する。

下図のように、コンソールウィンドウが表示される。

Back To Top

新規パッチャーの作成

①FileメニューからNew Patcherをクリック

Maxではプログラムを行うウィンドウのことをパッチャー・ウィンドウ(もしくはパッチ・ウィンドウ)と呼ぶ。作成したプログラム自体はパッチ(もしくはパッチャー)と呼ぶ。

 

②パッチャー・ウィンドウ

新規パッチャーを作成すると、空のパッチャー・ウィンドウが表示される。

 

③コンソール・ウィンドウ

コンソール・ウィンドウにはプログラムの動作状態がテキスト表示される。デバッグにも利用する。起動時に開いているが閉じても問題はない。

パッチャー・ウィンドウ右側のボタン(下図)からも表示できる。

Back To Top

パッチャー・ウィンドウの使い方

①パッチャー・ウィンドウのユーザ・インターフェース(UI)

パッチャー・ウィンドウにはツールバーが周りを取り囲んで表示される。

 

②Maxのプログラミング作法

Maxではツールバー上段の様々なオブジェクト(700種以上の機能)を下図のように配置し、それらをパッチ・コードで接続することでプログラミングを行う。

Back To Top

button、パッチ・コードの接続

①buttonの追加

下図のアイコンをドラッグ&ドロップして追加する。

アイコン下に白三角があるものはクリックすることでサブメニューから他のオブジェクトを選択することもできる。

 

②サイズの変更

オブジェクトの四隅の白い四角部分をドラッグしてサイズを変更することができる。

 

③移動と複製

オブジェクトはドラッグして移動する。ドラッグと同時にキーボードのOPTIONキーを押せば複製することもできる。このあたりの操作はAdobe Illustratorと同様である。複製はキーボードショートカットのCommandキー+C(コピー)、Commandキー+V(ペースト)でも可能。

 

④インレットとアウトレット

あらゆるオブジェクトの全てには、メッセージの送受信を行うためのインレット(受信側)とアウトレット(送信側)がある。このインレットとアウトレットを接続することで、それぞれのオブジェクトがメッセージをやり取りしてプログラムを組み立てていく。

オブジェクトの種類によって複数のインレット、アウトレットを持つものがある。アウトレットやインレットで送受信するメッセージはオブジェクトによって決められているため、接続できない組み合わせもある。詳しくはヘルプなどを確認しながら行う必要がある。

 

⑤パッチ・コードの接続

buttonのアウトレットをインレットを接続する。アウトレットもしくはインレットのどちらからでもドラッグすることでパッチ・コードを引っ張りながら接続することができる。一つ目のオブジェクトのアウトレット(インレット)をクリックした後に、二つ目のオブジェクトのインレット(アウトレット)をクリックしても接続できる。

 

⑥オブジェクトの削除と複数オブジェクトの選択

左クリックでオブジェクトを選択してDELETEキーを押す。複数のオブジェクトを選択する場合は、左ドラッグで領域選択する。複数オブジェクトの移動、複製も可能。

 

⑦パッチ・コードの削除

左クリックでパッチ・コードを選択して、DELETEキーを押す。複数のパッチ・コードを選択する場合は、OPTIONキーを押しながら領域選択することで、パッチ・コードだけでなく、オブジェクトもまとめて選択することができる。

Back To Top

パッチャー・ウィンドウのロック

①パッチャー・ウィンドウのロック

パッチの動作確認をするためには、パッチャー・ウィンドウをロックする必要がある。下図のように、パッチャー・ウィンドウ左したの鍵のアイコンをクリックしてロック/アンロックを切り替えることができる。または、Commandキーを押しながらパッチャー・ウィンドウ内の何もない所をクリック。キーボードショートカットではCommand+Eでロック/アンロックを切り替えることができる。

注意点として、アンロック状態とロック状態では下図のように違いがわかりにくい。鍵アイコンの状態を確認するか、上部バーのunlocked/表示なしを確認しながら操作する必要がある。

 

②パッチの動作確認

パッチャー・ウィンドウがロックされた状態で、上のbuttonをクリックすると上のbuttonが光ると同時に下のbuttonにbangメッセージが送信され、下のbuttonが光る。このように異なるオブジェクトをパッチ・コードを通じてメッセージを送信することが可能となる。buttonではbangメッセージしか送信できないが、数値や文字列などを送信できるオブジェクトもあり、オブジェクトによって異なる。詳しくはヘルプを参照。

 

③動作確認のもう一つの方法

パッチの動作確認のもう一つの方法として、パッチをロックしなくても、Commandキーを押しながらオブジェクトを操作すれば動作させることもできる。

Back To Top

パッチの保存

パッチの保存はFileメニューのSaveから行う。保存されたファイルには.maxpatの拡張子がつく。特に、Maxのようなプログラミングを行うソフトウェアは動作が不安定になりやすく、突然アプリケーション自体が落ちることもあるので、作業途中でもSaveすることをおすすめする。

Max 7では日本語のファイル名も可能だが、他アプリケーションや英語圏とのやりとりすることを考えると、英語で記述しておいてほうが無難である。また、保存ファイル名には連番を付加してバージョン管理し、作業途中からやり直すことも想定して作業を進めたほうがよい。

Back To Top

オブジェクト・ボックス

①オブジェクト・ボックスの追加

下図のオブジェクトボックスのアイコンをクリックもしくはドラック&ドロップして追加する。または、パッチャー・ウィンドウの何もない場所でダブル・クリックしても追加できる。キーボードショートカットではNキー。

 

②オブジェクト名の入力

オブジェクト・ボックスはbuttonなどとは異なり、追加しただけでは何も動作しない。下図のようにオブジェクト・ボックス内にカーソルが点滅しているので、そこにオブジェクト名を入力する。オブジェクト名を入力してはじめて、特定の機能のオブジェクトとして動作する。汎用的なオブジェクトと言える。

オブジェクト名を入力する際は、すべての文字を入力しなくても下図のように候補となるオブジェクト名を表示してくれるので効率的にオブジェクト名を指定することができる。オブジェクト名は半角英数で入力する。オブジェクト名を入力した後、RETURNキーを押して確定する。

オブジェクトの種類は700種以上あり、様々な機能を持ったものがある。下図は今回のチュートリアルで利用するもの。

ちなみに、すでに利用したbuttonも、オブジェクト・ボックスに「button」と入力することで呼び出すこともできる。

 

②アーギュメントについて

オブジェクト名の後ろにある数値は、アーギュメントと呼ばれるもので、オブジェクトのパラメータ(媒介変数)として作用する。複数のアーギュメントを持つオブジェクトもある。オブジェクト名とアーギュメントの間、アーギュメントとアーギュメントの間は、スペースを空けて入力する。アーギュメントの指定の仕方によっては、インレットやアウトレットの数が変更されるオブジェクトもある。

 

③オブジェクト名の変更、取り消し、やり直し

オブジェクト名の変更:一度確定したオブジェクト名を変更する場合は、オブジェクト上でダブルクリックする。

取り消し:Commandキー+Z
やり直し:Commandキー+SHIFT+Z

Back To Top

randomオブジェクト、ナンバー・ボックス

①randomオブジェクト

randomオブジェクトは、オブジェクトボックスにオブジェクト名「random」を入力する。アーギュメントは出力する数値の最大値を表す。第1インレットに受信したbangのタイミングで、0からアーギュメントまでの範囲内でランダムに数値をアウトレットから出力する。

 

②ナンバー・ボックス

ナンバー・ボックスは整数を扱う入出力インターフェース。インレットに受信した整数を表示するだけでなく、マウスでドラッグもしくは数値を入力することでアウトレットからその値を出力することもできる。

 

③randomオブジェクトとナンバー・ボックスの動作確認

下図のように、オブジェクトを接続した後、パッチャー・ウィンドウをロックする。buttonをクリックして、ナンバー・ボックスにランダムに数値が表示されることを確認する。

Back To Top

counterオブジェクト

①counterオブジェクト解説

counterオブジェクトは、第1インレットにbangを受け取る毎に、第1アウトレットから数値を増加/減少させるオブジェクトである。アーギュメントの指定の仕方によって動作状態は異なる。

 

アーギュメントを指定しない場合

第1インレットにbangを受け取る毎に、初期値0から1増加した値を第1アウトレットに出力する。

 

2つのアーギュメントを指定した場合

1つ目のアーギュメントは最小値、2つ目のアーギュメントは最大値となる。第1インレットにbangを受け取る毎に、最小値を初期値として1増加した値を第1アウトレットに出力する。最大値に達した後は最小値にもどる。

 

3つのアーギュメントを指定した場合(1つ目が0の時)

2つのアーギュメントを指定した場合を動作は同じ。

 

3つのアーギュメントを指定した場合(1つ目が1の時)

1つ目のアーギュメントは最小値、2つ目のアーギュメントは最大値となる。第1インレットにbangを受け取る毎に、最大値を初期値として1減少した値を第1アウトレットに出力する。最小値に達した後は最大値にもどる。

 

3つのアーギュメントを指定した場合(1つ目が2の時)

1つ目のアーギュメントは最小値、2つ目のアーギュメントは最大値となる。第1インレットにbangを受け取る毎に、最小値を初期値として1増加した値を第1アウトレットに出力する。最大値に達した後は減少に転じ、最小値に達した後は増加に転じる。

 

このように、アーギュメントの指定の仕方によって、オブジェクトに様々な動作を行わせることができる。アーギュメントの指定方法やその影響はオブジェクト毎によっても異なるので、ヘルプを確認しながら作業を行う。

 

②counterオブジェクトの動作確認

以下のように接続し、buttonを押す毎にナンバー・ボックスの数値が増加することを確認する。

Back To Top

metroオブジェクト、toggle

①metroオブジェクト

metroオブジェクトは、アーギュメントに指定した数値の間隔でアウトレットからbangを出力する。単位はms(ミリセカンド, 1/1000秒)。動作のON/OFFにはインレットに1/0を入力する。下図の設定では120ms間隔でbangを発生させる。

 

②toggle

toggleオブジェクトは、metroオブジェクトのように一度ONすると動作を継続して行うようなオブジェクトに対してスイッチのような役割を行う。クリックすることでON/OFFが切り替わり、アウトレットからは1/0を出力する。

 

③metroオブジェクトとtoggleの動作確認

metroオブジェクトとtoggleを使うことで、パッチの自動制御が可能になる。

Back To Top

ヘルプ、各種ドキュメント

①ヘルプの表示

オブジェクト上でOPTIONキーを押しながら左クリックすると、ヘルプを表示することができる。Maxのヘルプは秀逸で、説明だけでなく、実際に動かすこともできる。さらに、ヘルプ上のオブジェクトをコピーして、自分のプログラムにも追加して利用することができる。

 

②各種ドキュメント

Maxには様々な有益なドキュメントも用意されている。HelpメニューのSearchで検索するか、Max Documentationをクリックすて表示する。

下図はチュートリアルを表示したもの。これらはMI7で購入したMaxであれば登録して日本語化することもできる。

Back To Top

メッセージ・ボックス

①メッセージ・ボックスの追加

下図のメッセージ・ボックスのアイコンをクリックもしくはドラック&ドロップして追加する。キーボードショートカットはMキー。

 

②メッセージの入力

メッセージ・ボックスはオブジェクト・ボックスと同様に、追加しただけでは何も動作しない。下図のようにメッセージ・ボックス内にカーソルが点滅しているので、そこにメッセージを入力する。

メッセージ・ボックスは、インレットにbangを受け取る毎にアウトレットからメッセージを出力する。メッセージ・ボックスは、パッチャー・ウィンドウをロックするとボタンのように押してメッセージを出力することもできる。

下の例では、toggleに対して1もしくは0のメッセージを送ることでON/OFFを切り替えている。

下の例では、buttonの代わりにbangを送ることができる。

下の例では、メッセージ・ボックス同士を接続したもの。メッセージ・ボックスは第2インレットにメッセージそのものを受け取ることができる。

このように、メッセージ・ボックスを使うことで、特定のオブジェクトに対して様々な命令を行うことができる。オブジェクトがどのようなメッセージを受け取ることができるかは、ヘルプで確認できる。

Back To Top

ビデオファイルの再生

Jitterは映像処理に特化したオブジェクト群で、名前の頭が「jit.」になっている。

 

①jit.movieの追加

オブジェクトボックスを追加して「jit.movie」を入力する。

 

②jit.pwindowの追加

ツールバーのAdd objectのJitterカテゴリからjit.pwindowをクリックする。
もしくは、オブジェクトボックスに「jit.pwindow」と入力してもよい。

黒いオブジェクト(jit.pwindow)が追加されるが、そのままでは小さいのSHIFTキーを押しながら四隅をドラッグ(縦横比拘束)して大きくする。
inspector(右側のiアイコン)からウィンドウサイズを数値指定することもできる。

jit.movieの第一アウトレットとjit.pwindowの第一インレットを接続する。

 

③playbarの追加

オブジェクトボックスを追加して「playbar」を入力する。

自動的に下図のインターフェースに変わる。

playbarの第一アウトレットとjit.movieの第一インレットを接続する。
接続した時点でplaybarのインターフェースの色が変わる。

 

④メッセージボックスの追加(ビデオファイル読み込み用)

メッセージボックスを追加して「read chickens.mp4」を入力する。
メッセージボックスの第一アウトレットとjit.movieの第一インレットを接続する。

 

⑤ビデオファイルの読み込みと再生

パッチャーをロックして、メッセージボックスをクリックするとビデオが再生される。
playbarを利用して再生/停止やループ設定の変更を行うことができる。

 

⑥その他のビデオファイル

Max付属のビデオファイルは、アプリケーションフォルダ内のMax.app/Contents/Resources/C74/media/jitter/の中に存在する。このフォルダ内に存在するビデオファイルはメッセージボックスに「read ビデオファイル名(拡張子含む)」のように指定することで読み込むことができる。

countdown15.movとbball.movを読み込むメッセージボックスを追加する。
それぞれのメッセージボックスをクリックして再生映像を切り替えることができる。

それぞれの映像データの仕様は以下のように異なる。
アスペクト比がjit.pwindowと一致しない場合は変形されて再生される。

chickens.mp4 1920×1080, 29.97fps
countdown15.mov 320×240, 15fps
bball.mov 320×240, 15fps

Back To Top

再生フレームの指定

メッセージボックスを追加して「frame_true $1, bang」を入力する。
ナンバーボックスを追加して、下図のように接続する。

パッチのロック後、ナンバーボックスの数値を変更して映像がスクラッチできることを確認する。
フレーム数はそれぞれchickens.mp4 378frame、countdown15.mov 150frame、ball.mov 68frame。
映像のフレーム数は、getframecountメッセージとprintオブジェクトを利用することで取得できる。詳しくはHelp参照。

Back To Top

ランダムフレーム再生パッチ

これまで作成したものを下図のように接続する。
toggleをONにすると、ランダムに映像のフレームが再生される。
randomオブジェクトのアーギュメントを映像データに合わせて300, 150, 68に変更して実験してみる。
映像データを切り替えたときに自動的に映像再生されるので、処理が重い場合にはji.movieオブジェクトにautostartアトリビュート0を追記する。

max2017_17.zip

Back To Top

外部ウィンドウとフルスクリーン

jit.pwindowオブジェクトを削除して、jit.windowオブジェクトを追加する。
jit.windowオブジェクトは独立したウィンドウ上で映像再生を行う。
下図のfullscreenメッセージ周りを追加することでESCキーでフルスクリーンにすることができる。詳細は授業内で説明する。

max2017_18.zip

Back To Top

makenoteオブジェクト、noteoutオブジェクト

makenoteとnoteoutオブジェクトを組み合わせて利用する。makenoteオブジェクトは、MIDIのノートナンバーをインレットで受け取り、音の強さ、音の長さをアーギュメントで指定してPitchとVelocityに変換する。noteoutはそのPitchとVelocityをもとに音源(シンセサイザーやMIDI機器)の音を鳴らす。

下図では、makenoteオブジェクトの第1アーギュメントが音の強さ(1〜128)、第2アーギュメントが音の長さ(ms)となる。上段のメッセージ・ボックスの60、62、64がそれぞれノートナンバーのドレミを表している。ノートナンバーと音階の対応表はMIDIプログラミングを参照。

keyオブジェクトと組み合わせることでキーボードで演奏することも可能。

ノートナンバーではなく、国際式の階名(音名+音程)表記で指定することができる。ナンバー・ボックスのインスペクタを表示してDisplay FormatからMIDI(C4)を選択する。

音を発生させる音源は、noteoutオブジェクトをダブルクリックして切り替えることもできる。初期設定ではAU DLS Synthが選択される。他のシンセサイザーやMIDI機器を接続している場合はここに表示される。

pgmoutオブジェクトを利用することで、プログラムチェンジ(音色)も変更することができる。プログラムチェンジ・ナンバーと音色の対応表はMIDIプログラミングを参照。pgmoutオブジェクトも同様にダブルクリックして音源を切り替えることができる。

Back To Top

selectオブジェクト

selectオブジェクトは条件分岐してbangを出力する。第1インレットに受け取った数値と同じアーギュメントの時に、そのアーギュメント順のアウトレットからbangを出力する。

selectオブジェクトのオブジェクト名は省略して入力することもできる。「sel」と「select」は同じ機能のオブジェクトである。

Back To Top

ステップシーケンサーパッチ

これまで作成したものを合わせて下図のパッチを作成する。
音と映像が同期したステップシーケンサーとして動作する。
必要に応じて、音階の変更、スピード(metro)の変更、キー操作を加えてみよう。

max2017_21.zip

Back To Top

外部MIDI音源との連動(応用編)

Processing演習と同様に外部音源のKontakt Playerとサウンドライブラリーを利用することができる。
Kontakt Playerを準備した後、noteoutオブジェクトやpgmoutオブジェクトをダブルクリックして音源を選択する。

Back To Top