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

Markov Chain / マルコフ連鎖

Markov Chain/Process (マルコフ連鎖, マルコフ過程)とは

Markov Chain(マルコフ連鎖), Markov Process(マルコフ過程) とは古くから自動作曲/アルゴリズミックコンポジションの分野で利用されているもので、数学の確率論を応用したアプローチです。数学的な細かい説明はそれだけで一冊本が書けるほどの内容なので、リンクのwikipediaを参照してください。

簡単に説明すると、マルコフ連鎖とは連続する事象において未来の状態が現在の状態に依存して決定される現象を確率過程を用いて表す理論です。
これは野球、経済学、ギャンブルからgoogleのページランク(PageRank)のようなインターネットアプリケーションまで幅広い分野で活用されています。

Andrey Andreyevich Markov

markovマルコフモデルはロシアの数学家、Andrey Andreyevich Markov / アンドレイ マルコフ(1865-1922年)によって最初に紹介されました。マルコフはPafnuty Chebyshev / パフヌティ チェビシェフら数論の学者の弟子であり、乱数の研究に従事していました。彼が最初にマルコフ連鎖を利用した例は、A. S. Pushkinの20000文字から成る"Eugeny Onegin"の詩を分析し、母音と子音の遷移過程を確率データとしてまとめました。

音楽におけるマルコフ過程

cadenceこれは音楽理論で考えた場合にも多くの場面で発生している連鎖で、例えば調性和声のTSDのカデンツなどもD – Sという進行はD – Tに比べて出現頻度が格段に低いという遷移過程を持つ連鎖です。
これ以外にも7thの予備、非和声音の解決などもマルコフ連鎖によってデータ化することが可能です。多くの過去の音楽理論、作曲の規則において、現在の状態が一つ前の状態に依存し制限されるものは非常に多いということは容易に想像できるでしょう。対位法も和声もこのような規則は沢山あります。もちろん様式の模倣だけにしか活用できない理論ではありません。

今回はこの連鎖の規則そのものをデザインし、つまり自動作曲のための音楽理論そのものを構築し、音楽を自動生成するプログラムをmax/msp上に実装する方法を解説いたします。尚、この技法を使った最初の作曲家は前衛音楽のみならず、コンピュータ音楽にも多大な影響を与えているIannis Xenakis(クセナキス)です。

Gregorian Chant (グレゴリオ聖歌)

グレゴリオ聖歌を題材として採用した理由は今日の西洋音楽の直接的な原点であるとともに、簡素でモノフォニックな音楽(このことと芸術性には相関関係はありません)であるためアルゴリズミックコンポジション/自動作曲を学習する初期の段階でも比較的軽いソースコードでプログラムを作成することが可能であるためです。

グレゴリオ聖歌の歴史、記譜法の発明

photoグレゴリオ聖歌とは西洋音楽の歴史で遡ることが可能な最古の音楽様式で、中世のポリフォニーからルネサンス、モーツァルトのクラシック、ドビュッシー、ストラヴィンスキーらの近代音楽にまで、定旋律などの形で引用され、現在でも西洋音楽に多大な影響を与えている様式です。

グレゴリオ聖歌はローマ典礼で使用するために編成されたものであり、その紀元はローマともフランク王国とも言われています。現存する最古の楽譜史料は、9世紀後半のもので、それ以前は口頭で音楽が伝承されていました。
口承で音楽が伝えられていた時代は、年に一度しか歌われない聖歌が多く、これらすべてを覚えることは困難であり、オープニング、クロージングや旋律のコンター、装飾法のみ規則を規定し、その範囲内で即興的に歌われていたとも言われています。これは"Deus,Deus meus"の最初の4つのヴァースを見ても推測できます。

この後のネウマ譜による記譜法の発見、発達がヨーロッパ全土へ共通の聖歌が普及する要因となったと考えられています。ネウマ譜の記譜法、読譜法は諸説ありますが、下記のサイトが参考になります。古い聖歌を研究するにはネウマ譜の読譜は欠かせません。

CANTICUM NOVUM

http://interletras.com/canticum/Eng/notation_ENG.htm

当時はものを書き記すことができるのは聖職者に限られていたため、西洋音楽の歴史を遡れば遡るほど多くの市民に愛された音楽ではなく、一部の聖職者に好まれた音楽こそ現在まで形として楽譜が残っていることがわかります。
西洋音楽はグレゴリオ聖歌の時代からバロック、古典派、ロマン派の時代、そして現在まである特定の社会階層の人間によって支えられてきた音楽であるという特徴があります。

chant口承の音楽(広い意味でレコーディング芸術も含む)は次第に形を変えたり廃れたりしてしまいますが、きちんと記譜された音楽は形を変えることもなく、原稿が消失しないかぎり永遠に存在することが可能な音楽です。
これは今日のポピュラー音楽とクラシック音楽の比較でも同様のことが考えらると思います。
楽譜に記されておらず音源の発売が停止したロックやポップスはすぐに廃れ、完全に忘れ去られてしまう一方、クラシック(現代音楽)は作者が死んでから初演される作品も決して珍しい現象ではありません。
楽譜として音楽を残すということは口承の音楽とは決定的に違う特徴を持つものです。もしも西洋音楽に楽譜がなければここまでの伝統、歴史を維持することは出来なかったかもしれません。

2008年現在も多くの音楽学者がグレゴリオ聖歌の研究を行っており、その成果は日進月歩で更新されています。古くから伝承されている590年から604年に在位した教皇グレゴリウス1世がヨーロッパ各地の単旋律聖歌をまとめたという説は現在はほぼ否定されています。
グレゴリオ聖歌の最初期の楽譜は、主にドイツのレーゲンスブルク、スイスのザンクト・ガレン修道院、フランスのランおよびリモージュのサン・マルシャル修道院に残されています。

音楽的特徴

グレゴリオ聖歌には立派な様式として見て取れるほどの音楽的特徴があります。

kyrie

  • 旋律はモノフォニックでユニゾン(斉唱)される。
  • リズムは拍節には基づいておらず等価の音価で歌われる(諸説あり)
  • 教会8旋法に基づいた1モーダルオクターブのダイアトニック音階組織が利用されている
  • 各旋法はFinal(終止音)に支配されている
  • ピッチは絶対的に決まってはいない
  • シャープ、フラットはmusica fictaと呼ばれ曲の終止部などで即興的に歌われる
  • 楽式はAAA BBB AAA’, AAA BBB CCC’, ABA CDC EFE’などの形式が主

Max/MSPで自動生成するグレゴリオ聖歌

Max/MSPにおける第一階マルコフ連鎖を実行するオブジェクトはprobオブジェクトです。

これにピッチのトランジションテーブルをメッセージとして与えればbangメッセージで次々にマルコフ連鎖を実行した結果を出力します。
具体的な書き方は、左から順に[last next 確率,last next 確率, …]のように記述するだけです。これはjavaやスーパーコライダーなどでアルゴリズムを一から実装するよりも遥かに簡単です。コンピュータ音楽の作曲においてはプログラミングにかかるスピードというのも大切な要素です。

グレゴリオ聖歌を模倣した旋律を自動生成する際に最も重要になってくるのがトランジションテーブルの作り方です。
前述のように音楽的な特徴を考慮してプログラミングしていくアプローチもありますが、より厳密に様式を模倣するためには各時代、各地域ごとの聖歌の譜面からピッチの遷移過程を分析し、トランジションテーブルに落とし込んでやる事で忠実に様式の差異まで模倣する事が可能になります。

古い聖歌の楽譜を分析する際にはネウマ譜の読譜が必須となります。歌詞と音楽も密接にリンクしているため、分析には音楽だけでなく歌詞も考慮しなければなりません。グレゴリオ聖歌を正しく理解するにはラテン語が必須となります。

音源、パッチのダウンロード

Midi

Patch

gregorian.pat (for Max4.x)
gregorian.maxpat (for Max5.x)
max5Runtime(上記のプログラムの実行用フリーソフトウェア for Mac)
max5Runtime(上記のプログラムの実行用フリーソフトウェア for win)

[Prob] オブジェクトによる旋律遷移テーブルの作成

グレゴリオ聖歌の旋律には特徴的な動きがあり、それらの音楽的特徴、規則をトランジションテーブル(遷移テーブル)として記述することにより、自動作曲/アルゴリズミックコンポジションのための確率テーブルとして利用することが可能になります。

[prob]オブジェクトは第一階マルコフ連鎖を実行するためのオブジェクトです。これは過去の状態に依存し現在の状態を確率的に決定するオブジェクトであり、このパッチでは旋律の進行の規則を[message]オブジェクトに書き込み、[prob]オブジェクトに送信することでマルコフ連鎖実行のためのトランジションテーブルを作成しています。
より高次なマルコフ連鎖を利用するためにはmax標準のオブジェクトではなく、徳井さんが開発された[markov]オブジェクトなどを利用することをお勧めします。

markovオブジェクトダウンロード

http://www.naotokui.com/2002/02/maxmsp-objects-2002/ (Nao Tokui External objects for Cycling’74 Max/MSP)

モード、音域

今回のmax/mspパッチでは多くのグレゴリオ聖歌の伝統に習い、音域は1オクターブ±1音、モードは教会8旋法の第1旋法であるドリアンモードを採用しています。この規則は[message]オブジェクトの中にmidiノートナンバーの数値として書き込んでいます。

gregorian chant

Melody 旋律

旋律を生成するための規則はマルコフ連鎖によって実行されます。この規則は多くのグレゴリオ聖歌に見られる特徴を抽象化したもので、2度、3度、4度、5度、8度の旋律的音程が使用され、順次進行の出現頻度は跳躍進行の出現頻度の5倍になっています。モーダルオクターブから外れる音域の音は必ず順次進行で次の音符に進行します。

これ以外の規則は様式を決定づける以上に作者の個人的価値観が介入する恐れがあるため、あえて設けておりません。

旋律の進行の確率をコントロールすることでこのアルゴリズムは時代様式を実行するアルゴリズムから個人様式による音楽を生成するアルゴリズムへと移行します。このように旋律そのものを作るのではなく、旋律を生成するための規則、つまりは音楽理論そのものを創造していくことでアルゴリズミックコンポジションを行います。これはある種のメタ芸術と言える手法での作曲を行うことになります。

Music form 音楽の形式

今回は旋律の生成に焦点を当てているため、楽式music formの組み立ては割愛しております。音楽作品に仕上げるためにはABA, AABなどの楽式を導入し、長期記憶に訴えるような構成を行う必要があります。音響/サウンドアートと音楽作品の最も異なる点は瞬間的な短期記憶のための音響芸術であるか、長期記憶のための音響芸術であるかです。

マルコフ連鎖によるアルゴリズミックコンポジションの問題点

第一階マルコフ連鎖のアルゴリズムの限界とも関連してきますが、このパッチのアルゴリズムの場合、全ての音が跳躍で進行する可能性がゼロではありません。ところが実際のグレゴリオ聖歌にそのような旋律は皆無です。この相違を防ぐためには最低でも2次以上の高次マルコフによる数列の生成が必要となります。
2次以上であれば跳躍進行の連続が発生することを制限する規則を設定することが可能になり、より実際のグレゴリオ聖歌に近い音楽を生成することが可能になる反面、あまり次数を上げすぎるとフレーズとフレーズを引用し接続しただけのような音楽になってしまうため、実際の音楽様式の模倣などに利用する場合はトライアル&エラーによる実験が不可欠となります。

Markov Chain / グレゴリオ聖歌の参考文献 , 音源









Max/Msp Algorithmic Computer Music Online Tutorial