Max for Live体験記 1
Abelton LiveにはIntro、Standard、Suiteの3種類がありますが、最上位のSuiteにしか搭載されていない機能の一つがMax for Liveです。マルチメディア向けのプログラミング言語”Max”をLive用に最適化したもので、Live suiteのブラウザー(図1)にはMax for Liveというカテゴリーがあり、中にはMaxで作られたインストゥルメント、オーディオエフェクト、MIDIエフェクトが60本ほどとMax Audio Effect、Max Instrument、Max MIDI Effectというテンプレートが含まれています。
これで何ができるのか突然興味が湧き、全く知識のないところから始めてタイトル画像のシンセサイザーを組むところまでなんとか辿り着きました。
日本語の情報が少ないように感じたので備忘録も兼ねてこちらにまとめていきたいと思います。
リファレンスもヘルプもメニュー画面も全て英語ですのでこちらのサイトには大変お世話になりました。
3つのテンプレートをそれぞれ立ち上げてみるとデバイスビュー(図2)に以下のように表示されています。
この中で「midiin」「midout」「plugin~」「plugout~」と書かれたものがオブジェクトと呼ばれるものです。こちらの上辺に見える切り欠きのようなものがインレットというデータの入力先、下辺に見える切り欠きがアウトレットというデータの出力先です。Maxではオブジェクトのインレットとアウトレットをパッチコードによって接続してプログラムを作っていきます。
左端のMax MIDI Effectのテンプレートではmidiinのアウトレットとmidioutのインレットがパッチコードで繋がれています。(単純にスルーするだけ)右端のMax Audio EffectのテンプレートではステレオのLRで2本のパッチコードが繋がっていますが、黄色と黒の縞模様はオーディオ信号が流れているという意味です。同様に名前の最後についている「~(チルダ)」もオーディオを扱うオブジェクトの目印です。テキストは全て単なる説明で動作には関係のないものばかりです。
それではインストゥルメントをテンプレートではない何か音の出るものに差し替えて音が出るのを確認してから編集をしてみます。Maxはインタープリンタというコンパイル作業の必要の無いプログラム言語ですので作業をしながらその場で動作を確認することが出来ます。
タイトルバーの右から3番目にあるアイコンをクリックすると「パッチャーウィンドウ」という編集画面が開きます。
先ほどのMIDI Effectのテンプレートのパッチコードを削除してみるとmidiが繋がっていないのがわかると思います。新たに3つのオブジェクトを加えて配線をしてみました(図3)。新しいオブジェクトを追加するにはメニューバーのオブジェクトをクリックするか、ショートカットで『n』を入力した後にオブジェクト名を入力します。正確な綴りがわからなくても一部を覚えていれば入力支援機能があるので簡単に探せます。
xnotein
インレットにMIDI信号を入れると、4つのアウトレットからは
note number、velocity、noteon(1) noteoff(0)、 channelが出力
xnoteout
上記の4つの要素をMIDI信号にまとめます。
+ 1
計算に関しては別にまとめますが単純に1を足します。
この状態のままMIDI Keyboardを弾くと半音上がっているのがわかります。コンパイルが不要なだけでなくLiveの画面に戻ることもなく動作確認できるのはとても便利だと思います。
容易に想像できると思いますが + 1 を +12 にしたらオクターブ上になりますし、-12 にすればオクターブ下になります。velocityやchannelに対して演算をすることもできます。足し算以外の演算のオブジェクトは(図4)
引き算、割り算は頭に!をつけた左右のインレットが逆のものが用意されています。割り算の余りを求めることもできますのでnote numberを12で割った余りを求めれば 0="C"、1="C#"、2="D" のような計算をすることもできます。(中央のCが60)
インレットは2つずつあり、+ 1 と書く替わりに1を右のインレットから入れることができます。よくみるとパッチコードを繋いだアウトレットには黄色の縁がついていますが、インレットには赤と青があります。
青いインレットから入力されたデータは保持されますがすぐに出力されず、赤いインレットに入力があった時点で出力される仕組みになってます。
Maxには”bang”というメッセージがあり、赤いインレットに入れることで
データを入力することなくアウトレットから出力をすることができます。
右側のインレットの数字を変更した場合でもアウトレットに計算結果を出力したい場合は以下のように1つオブジェクトを足します。
t b i となっていますがtはtriggerの略称ですのでフルネームで書いても問題ありません。マニュアルを翻訳すると『受け取った入力を右から左の順に、指定されたオブジェクト引数に従ってフォーマットして出力する。』とのことです。引数とはここではbとiのことでここで選べる書式は
b (bang)
i (integer) 整数
f (floate) 浮動小数点
l (list) 行列
s (symbol) 文字列
今回の場合は左のアウトレットからはbangを右のアウトレットからは整数値を出力しています。ではこちらの図5を図3と組み合わせてみます。
0 の入っているオブジェクトの上で上下にドラッグすることで数値が変わりますので、これでトランスポーズのプラグインが完成します。
実際に試す為にはcommand+Eでlockというモードにする必要があります。編集中のままドラッグすると数値の変更でなくオブジェクトの移動になってしまいます。
使いやすくするには、数値の入力できる範囲を-12〜12とかに設定しておくのが良いかもしれません。数値の入力のnumber boxをダイアル、フェーダー、プルダウンメニュー等に置き換えて不要なオブジェクトを非表示にすると見た目的にも綺麗になります。保存してLiveに戻ればそのままプラグインとなってます。
この手軽さからMax for Liveにハマっていってしまいました。
駆け足での紹介となりましたので不明な点があるかもしれませんがMaxに興味を持つきっかけになれたらと思います。Maxを持っている方は当然知っていることばかりなので、Live suiteをお持ちでMax未体験の方は是非一度お試しください。