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

オブジェクト指向プログラミング

Object Oriented Programming(オブジェクト指向プログラミング)とは

Max/MSPは”オブジェクト”という名のボックスの接続、組み合わせによってプログラムを作り上げていくため、比較的オブジェクト指向という考え方が浸透しているソフトウェアですが、Maxのようにグラフィカルにオブジェクト同士をパッチ式で接続していくアプローチがオブジェクト指向と呼ばれるわけではありません。

オブジェクト指向とはオブジェクトと呼ばれる機能の部品でソフトウェアを構成させるものでありますが、一般的にポリモフィズム (多態性、多相性)、カプセル化、クラスの継承の機能や特徴を活用し作成の効率化をはかったプログラミング技法のことをいいます。
オブジェクト指向の場合、各オブジェクトごとの細かい仕組みを知らなくても、メッセージを送るとどのような結果をもたらすのかだけを把握さえしていれば、あとはそれらを相互に組み合わせるだけでプログラムを作成することが可能になります。

このことによる飛躍的な作業効率アップがMaxが多くのインスタレーションやコンサートの現場で利用される要因です。

オブジェクト指向において理解すべき仕組み

  • オブジェクトに蓄えられる情報、データを表現する仕組み。
  • 他のオブジェクトにメッセージを配送する仕組み。
  • 受け入れ可能な各種メッセージに対応して、処理する事柄を記述する仕組み(メソッド)。
  • オブジェクト間の関係を整理分類して系統立てる仕組み。
  • 必要なオブジェクトを作成・準備する仕組み。
  • 不要なオブジェクトを安全に破棄する仕組み。

今後のプログラミングの流れとしてはオブジェクト指向を補完するエージェント指向やアスペクト指向といった方法論や、Ruby、Python、Groovyといった動的言語 (Dynamic Language) もますます普及していき、コンピュータ音楽にも応用される事例が増えてゆくでしょう。

尚、スーパーコライダーやProce55ingなどテキストベースの言語ではオブジェクト指向的にプログラムを作成することも、手続き型言語的に作成することも可能となっています。

Object(オブジェクト)とは

オブジェクトとはプログラミングを専門にしていない音楽家にとってはなじみのない表現法ですが、例えばギターというと弾く、磨く、叩くなどの操作が考えられます。このような操作の対象を表現するのがオブジェクト(この場合ギター)だと言えます。
しかし、我々はギターの作り方、構造などを詳しく知らなくても演奏することが可能です。
同じようにMax/MSPプログラミングにおいては各オブジェクト自体のソースや構造を知らなくても操作法さえわかれば正しく利用することが可能です。このような点がオブジェクト指向プログラミングの最大のメリットでもあります。

上のプログラムはMax/MSPチュートリアルのNo.1、通称”Hello World”と呼ばれるプログラムです。プログラミング言語を学ぶにあたって多くの場合一番最初に動かすのが”Hello World”の文字列を標準出力するプログラムです。画面左下の緑枠で囲まれている[print]という箱がオブジェクトと呼ばれるものです。
(Hello!)に当たる部分はMax/MSPにおいてはメッセージと呼ばれます。
オブジェクトはメッセージを受け取り何らかの処理をするパーツです。その処理の方法はオブジェクトによって異なります。

Max Window

printオブジェクトはmessageオブジェクトやnumberオブジェクトから送信される内容を第一インレットで受信し、Max Windowに出力するオブジェクトです。この流れがMax/MSPプログラミングの最も基本的なパッチングになります。

各オブジェクト同士はワイヤーで連結することで関連づけることができ、どのような情報を受け取るとオブジェクトはどのような処理を行うのかは各々定義されています。

print.helpの画面

各オブジェクトの操作法はEditモードでオプションを押しながらオブジェクトをクリックすることで、Helpファイルが起動し必要情報を調べることができます。
このようなコンパクトなウインドウが開きます。

right-to-left, bottom-to-top

グラフィカルなオブジェクト指向プログラミング環境であるMax/MSPにおいて、処理の実行順序は案外わかりづらいものです。しかし、ここをあいまいにしてしまうと後に大きなプログラムを作った場合のデバッグに苦労することになります。

上の画像にあるようにオブジェクトは同時に信号を受け取った場合、どのような順番で処理を行うかがあらかじめMaxによって定義されています。
それがright-to-left, bottom-to-topの規則です。オブジェクトを配置する際は、視野性だけでなく実行順序も考えながら配置しなければならない点がMaxの特徴でもあります。

特にbangの実行順序はMaxのプログラミングにおいては把握しずらい箇所であり、バグの元になるため極力[trigger]オブジェクトなどを使用してbangが送信される順番を制御することが重要です。

max/msp

triggerオブジェクトのインレットに接続されたbangメッセージを叩くと、右から順に処理が実行されます。これはオブジェクトのleft to rightの配置制限に関わらず同時刻に発生する複数のbangの実行順序を決定できます。
triggerオブジェクトのアウトレット数はtriggerの後に続くアーギュメントの数だけ出現します。
上の例の場合はb i f l s drizzle 2 0.5の8個のアーギュメントがあるため、アウトレットも8つ出現します。

max/msp

triggerの実行結果はmax windowに表示されます。右アウトレットから順に実行されたことがわかるでしょう。

triggerオブジェクトとはアーギュメントによって特徴付けられたフォーマットでメッセージを右アウトレットから左アウトレットに向かって順番に実行していく機能を持ちます。

Max/MSP, オブジェクト指向プログラミング関連参考文献

Max 6+Gen Max 6+Gen

Cycling ’74/MI7 Japan
売り上げランキング : 3149

Amazonで詳しく見る

Composing Music with Computers (Music Technology) Composing Music with Computers (Music Technology)
Eduardo Miranda

Focal Press 2001-06-13
売り上げランキング : 262622

Amazonで詳しく見る

Designing Audio Objects for Max/MSP and Pd (Computer Music and Digital Audio Series) Designing Audio Objects for Max/MSP and Pd (Computer Music and Digital Audio Series)
Eric Lyon David Zicarelli

A-R Editions 2012-10
売り上げランキング : 37275

Amazonで詳しく見る

Electronic Music and Sound Design - Theory and Practice with Max/Msp - Volume 1 Electronic Music and Sound Design – Theory and Practice with Max/Msp – Volume 1
Alessandro Cipriani Maurizio Giri

Contemponet 2010-01
売り上げランキング : 45148

Amazonで詳しく見る

Introduction to Computer Music Introduction to Computer Music
Nick Collins

Wiley 2010-02-09
売り上げランキング : 214342

Amazonで詳しく見る

Computer Music: Synthesis, Composition, and Performance Computer Music: Synthesis, Composition, and Performance
Charles Dodge Thomas A. Jerse

Schirmer Books 1997-07-02
売り上げランキング : 123074

Amazonで詳しく見る

Designing Sound Designing Sound
Andy Farnell

The MIT Press 2010-08-20
売り上げランキング : 42663

Amazonで詳しく見る

Max/Msp Algorithmic Computer Music Online Tutorial