Max/Msp/Jitter

Basic

Max
Object Oriented Programming
Shortcut
ToolBox
Mathematics
Physics
Probability
External Object
MIDI
DMX

Advanced

Psychoacoustics
mxj (Java Class Object)
Arduino
OSC

DSP/Synthesis

Recording & Playback
Time Stretching & Pitchshifting (ableton Live)
Wavetable Synthesis
White Noise (Joji Yuasa)
Sampleing & Processing (Autechre)
Scratching (Grandmaster Flash)
Glitch (Oval)
Theremin (Léon Theremin)
Comb Filter (Paul Lansky)
Auto Tune (Perfume)
Harsh Noise (Merzbow)
Vocal Chop (Prefuse73)
Blur (Akihiko Matsumoto)
Freeze (Jean-François Charles)
FM Synthesis (John Chowning)
Granular Synthesis (Iannis Xenakis)
Phase Vocoder (Charles Dodge)
Convolution (R.Luke Dubois)

Composition

Algorithmic Composition (David Cope)
Chaos Theory (Edward Lorenz)
Genarative music (Brian Eno)
Phasing (Steve Reich)
Markov Chain (Gregorian Chant)
Parallel Organum (Musica enchiriadis)
Shepard Tone (Jean-Claude Risset)
Spectral Technic (Tristan Murail)
12Tone Serial technic (Webern)
Data Mapping (Guido Da Arezzo)
Schenker Theory (Heinrich Schenker)
Tonal Harmony (Jean-Philippe Rameau)
Tintinnabuli (Arvo Pärt)
monome (Brian Crabtree and Kelli Cain)
Golden Mean (John Chowning)
Analog Sequencer (Robert Moog)
Pitch-class Set Theory (Allen Forte)
Irregular Rhythm(Igor Stravinsky)
Iso Rhythm (Philippe de Vitry)
Rhythmic Mode (Notre Dame School)
Graphic Score (Morton Feldman)
Tone Cluster (Ligeti)
Brown Noise (Leonin)
Fibonacci Series (Bartok)
Fractal (Charles Dodge)
Stochastic technic (Xenakis)

Video

Chromakey (Peter Campus)
Transition

Openmusic

Operation

Spectral Harmony (Tristan Murail)
New Complexity (Brian Ferneyhough)
12 Tone operation (Arnold Schoenberg)
Contour Inversion
Morphing

RTcmix

Basic

RTcmix
Unix Command
Unix Directory
Emacs Command

Synthesis/DSP

Additive Synthesis
Subtractive Synthesis
FM Synthesis
Delay
Flange
Comb Filter
AM Synthesis
Granular Synthesis
Phisical Modeling Synthesis
Waveshape Synthesis
Wavetable Synthesis
Stochastic Synthesis
PVOC

mxj – Max/MSP上でのJava

mxjはmax/msp上でjava言語との橋渡しをするオブジェクトで、豊富に用意されているjavaのクラスを利用し信号処理、数値の計算を行うことができるmaxのツールです。現在のコンピュータにおいては実行速度の面でJava/mxjをリアルタイム音響処理や音響合成の実行に利用する場合は内部オブジェクトを利用するよりも不利になる場合が多いですが、繰り返し処理の実行速度などは、むしろmax/msp上でアルゴリズムを作って実行するよりも、mxjでループを作り実行したほうが有利な場合があります。アルゴリズミックコンポジションのちょっとした作曲計算などにはおおいに活用可能です。もう一つmxjにはメリットがあり、windowsでもmacでもクロスプラットフォームでオブジェクトが動作するということです。これからの時代、OS、ソフトも仮想化が進み、仮想マシン上で動くという仕組みをあらかじめ備えていたJavaに再び注目が集まっています。

Max上のJava

javaJavaで開発されたソフトウェアはJava仮想マシンのもとで動作するため、プラットフォームに依存しないアプリケーションソフトウェアの開発と配備を行うことができます。つまり、mxj用に書かれたコードはwindows版max/mspでもmac版max/mspでも同様に動作することが可能です。
mxjを利用するとmaxが苦手とするテキストベースのプログラミングもjavaを通じて補うことができます。それどころか、javaでは貧弱なオーディオ関係のオブジェクトがmaxには豊富に容易されているため、Javaで作曲を行ない、mspで音響合成を行なうことも可能です。反対にJavaはネットワーク関係のクラスが豊富なため、OSCなどを利用すれば他のクライアントマシンを操作したり、別のソフトと連携をとることが可能です。
当然maxのエクスターナルオブジェクトを経由させてcsoundやsupercollider、RTcmixの音響合成エンジンを利用することも可能で、javascriptに加えmxjのクラスを経由しますがLispやProce55ingとも連携をとることが可能なので、max/mspをマルチ音楽言語を扱える中枢として据えて他の言語と連携をとる方法をとると、それぞれの言語のいいとこ取りをできるため新たな制作環境の可能性が広がります。

JVMのインストール

Java Virtual Machine(JVM)はOSXかwindowsかでインストールの方法が異なります。OSXの場合、MacのOSに標準でJavaが付属するため別途インストールする必要はありません。バージョンアップを行う場合はAppleのADCメンバーになり、開発者向けのサイトから最新版のJDKをダウンロードしましょう。自分のマシンにインストールされているJavaのバージョンを調べる場合はTerminal.appでjava -versionと入力しましょう。

java version "1.4.2_03"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_03-117.1)
Java HotSpot(TM) Client VM (build 1.4.2-34, mixed mode)

というメッセージが表示されます。

Windowsの場合はJ2SE (Java 2 Software Environment)をSun microsystemsのサイトからダウンロードしインストールします。インストールが完了したらMacの場合と同じようにpromptからjava -version.とタイプしましょう。

コーディング

以下のソースコードはフィボナッチ数列を生成するオブジェクトのソースです。ソースは基本的にjavaのプログラム同様に書くことが可能ですが、始めに必ずimport com.cycling74.max.*;の一行を書きましょう。これを抜かすとoutlet()などのmax/msp固有の命令を解釈できず、コンパイルエラーが出ます。

import com.cycling74.max.*;
import java.math.BigInteger;
public class fibonacci extends MaxObject { private BigInteger a = BigInteger.valueOf(0);
private BigInteger b = BigInteger.valueOf(1);
private BigInteger c = BigInteger.valueOf(1);
int radix = 10; //start with base 10

public fibonacci(Atom[] args) {
declareAttribute("radix");
}

public void inlet(int i) {
if (i<=0) {
error("fibonacci: needs an integer index i > 0");
return;
}
a = BigInteger.valueOf(0);
b = BigInteger.valueOf(1);

for (int j = 2; j <= i; j++) {
c=a.add(b);
a=b;
b=c;
}
outlet(0,b.toString(radix));
}
}
public class fibonacci extends MaxObject {という行の命令のclass名に指定した部分がそのままmxjオブジェクト名になります。オブジェクトを利用する際にオブジェクトボックスに[mxj class名]と入力しましょう。

コンパイル

javac ファイル名.java

javaのソースコードは必ずコンパイルし、classファイルを生成しなければmax/msp上で実行することができません。上が通常のjavaのコンパイルのコマンドですが、mxjの場合max/mspが持つ固有のclassを読み込ませる必要があるため、コンパイルには以下のコマンドを入力してください。

Mac

javac -classpath "/Library/Application Support/Cycling '74/java/lib/max.jar" ファイル名.java

Windows

javac -classpath "\Program Files\Common Files\Cycling '74\java\lib\max.jar"ファイル名.java

もし上記のようなコマンド入力によるコンパイルが苦手な人向けにmax/mspにはquickieという簡易開発環境があります。

これはmax/msp上のmxjオブジェクトに対してviewsourceというメッセージを送ることで開く小さなウインドウを使い、コーディングやコンパイルを行う環境です。ターミナルやxcodeを使うユーザーでも小規模な定数の手直しなどはquickieを利用すると便利でしょう。

Java classpathの設定

max/mspでjavaを利用する場合、mxjオブジェクトを介してjavaのclassファイルにアクセスするわけですが、.javaファイルから.classファイルの中間コードにコンパイルする際、max/msp固有のclassを利用している場合、javacコマンドに-classpathのオプション記述でmaxのjavaディレクトリの指定を毎回行わなければならず、タイピングのストレスになります。上記のような長いクラスパスを含むコマンドを打たずに、javacコマンドだけでコンパイルを行う方法もあります。そのためにはjavaのクラスパスを設定する必要があります。

クラスパスの設定はjavaの.jarなどで保存されているライブラリを参照する際に必要になるものなのですが、max/mspの場合、javaがデフォルトで参照するクラスパス以外にもMax/MSPのmxj固有のクラスの置き場を指示してあげる必要があります。
/Library/Application Support/Cycling ’74/java/lib/の中にあるmax.jarというファイルがクラスパスを通す必要があるライブラリファイルになります。
ここにクラスパスを通す方法はwindows, mac, LinuxなどのOS環境ではなく、使用しているシェルに依存して変わってきます。
windowsは環境がないので未確認ですが、Macの場合、cshかbashを使っている人が多いと思われますので下記のクラスパスの設定方法をご参照ください。

(csh 系)

% setenv CLASSPATH 任意のパスその1:任意のパスその2:…

(sh系)

$ CLASSPATH=任意のパスその1:任意のパスその2:…; export CLASSPATH

Macでbashをご利用のかたはホームディレクトリ直下の.bash_profileなどの隠しファイルをemacsやviで編集し、
export CLASSPATH=$"/Library/Application Support/Cycling ’74/java/lib/max.jar":.
上の一行を追記してください。

一度ログアウトし再ログインすることでパスが通ります。
以降はjavacのコマンドだけでmaxのクラスまで参照しコンパイルを行う事ができるようになります。


Max/Msp Algorithmic Computer Music Online Tutorial