武満徹「鳥は星形の庭に降りる」分析パッチ
今回は武満徹のオーケストラ作品「鳥は星形の庭に降りる A Flock descends into the Pentagonal Garden」で使われた和音構成を、作曲者本人の著書「夢と数」(リブロポート社 1987年(絶版)、ただし「武満徹著作集 第5巻」新潮社 2000年 に再録)に書かれた自作分析の解説をもとに、OpenMusic上で再現するためのパッチを作ってみよう。
- 武満徹「鳥は星形の庭に降りる」Toru Takemitsu : A Flock descends into the Pentagonal Garden
- Spotify (2曲目)
武満徹の「鳥は星形の庭に降りる」は1977年に書かれたオーケストラ作品で、作曲家の代表作の一つである。この作品は、それ以前の1960年代までの複雑な音響を伴う作風から、初版の小澤征爾指揮のレコードでカップリングされた同時期の作品「カトレーン」、あるいは雅楽「秋庭歌」(のちの秋庭歌一具)などと共に、作曲者本人によって「汎調性(パントーナル)」と呼ばれる、基調音の明らかな調性の色調の濃い1980年代以降の氏の作風へと移行して行く過渡期に書かれた作品である。
この曲を含む幾つかの作品について、作曲者本人が講演録を元に自作の分析を書き起こした「夢と数」という著書がある。
初版はリブロポート社から1987年に出版されたが、これは2013年現在絶版である。横書きで書かれており、必要な図版の他にも、武満自身のスケッチを元にしたカラーの様々なイラストで彩られた美しい装丁の本なので、図書館などで閲覧できる環境にある人は、ぜひこのリブロポート版を手に取って読んでみてほしい。
さもなければ、新潮社から2000年に刊行された「武満徹著作集 第5巻」にも収録されている(注:小学館から2002年に刊行された音楽作品CD全集とは別もの)。こちらは縦書きの装丁でイラストは省かれているが、最低限必要な図版は載っている。現在も入手可能であり、各地の図書館にもこちらの方が所蔵されている可能性が高い。
初版はリブロポート社から1987年に出版されたが、これは2013年現在絶版である。横書きで書かれており、必要な図版の他にも、武満自身のスケッチを元にしたカラーの様々なイラストで彩られた美しい装丁の本なので、図書館などで閲覧できる環境にある人は、ぜひこのリブロポート版を手に取って読んでみてほしい。
さもなければ、新潮社から2000年に刊行された「武満徹著作集 第5巻」にも収録されている(注:小学館から2002年に刊行された音楽作品CD全集とは別もの)。こちらは縦書きの装丁でイラストは省かれているが、最低限必要な図版は載っている。現在も入手可能であり、各地の図書館にもこちらの方が所蔵されている可能性が高い。
この曲については、マルセル・デュシャンの写真展へ行き、彼の後頭部を星形に刈った写真の印象から、その晩に見た「鳥の群れが舞い降りる夢」を元に書かれたという。
星形というタイトルにあるとおり、この曲では5という数値が重要なファクターとなっている。ピアノの黒鍵に端を発する伝統的な五音音階から、数理操作に寄って複雑なプロセスを経て「汎調性」の響きを得るまでの過程が書かれている。
星形というタイトルにあるとおり、この曲では5という数値が重要なファクターとなっている。ピアノの黒鍵に端を発する伝統的な五音音階から、数理操作に寄って複雑なプロセスを経て「汎調性」の響きを得るまでの過程が書かれている。
今回のパッチの目的は、この「夢と数」の記述を元に、武満自身の数理操作をリアライズしてみることである。
はじめにお断りしておくが、画像左側のn-cercleに関する部分は、n-cercleとZnの解説のためのもので、少々蛇足である。本稿の読者の皆さんがご自分でプログラミングするときは、この部分を省略しても構わない。右側の部分は、ここまでの非公式チュートリアルで触れて来た知識で十分理解できるはずである。
まずはその、クラスn-cercleについて見てみよう。
cercleはフランス語で「円環」の意味で、英語のcircleに相当する。基本的にOpenMusicの各オブジェクトは英語のはずだが、開発しているのがパリのIRCAMであるため、たまにフランス語由来のものがあるので注意。
cercleはフランス語で「円環」の意味で、英語のcircleに相当する。基本的にOpenMusicの各オブジェクトは英語のはずだが、開発しているのがパリのIRCAMであるため、たまにフランス語由来のものがあるので注意。
これは半音階を円環上に表示するためのクラスで、ピッチクラスセットなどを見やすく表示するのに使う。通常では12個の点が与えられ(変更も可能)、一番上はドを意味し、時計回りに半音ずつ高くなるように並んでいる。(いわゆる五度圏の円環とは異なるので注意。)
ここでは五音音階を作るのが目的なので、まずは「夢と数」から該当する部分を見てみよう。
以下の引用文はすべて「夢と数」によるものである。
以下の引用文はすべて「夢と数」によるものである。
この作品では、夢に現れた(五角形の)星の庭がイメージとして重要なので、5という数から、すべての音程(ハーモニック・ピッチ)と音場(ハーモニック・フィールド)を作りました。5という数から、私たちが(音楽的に)すぐ思いつくのは五音音階(ペンタトニック)という、東洋やアフリカの旋法(モード)ですね。それは簡単に言えば、ピアノの黒鍵だけの音階です。つまりC# E♭ F# A♭ B♭の五つの音です。ちょうど中央にF#があって(これはドイツよみでFisといいますが)、この音をフィクス(fis)ーー何か語呂合わせのようですがーーとして、持続音(ドローン)のように扱う。
この五音の音程関係(インターバル)を見てみると、図6のように、長2度(2)、短3度(3)、長2度(2)、長2度(2)、そしてオクターヴ上の基音C#に到る短3度(3)です。
(注:原文は長2度(+2)、短3度(-3)のように書かれているが、数値をプラスするかマイナスするか非常にややこしい記述なので、以後演算子は省く。)
というわけで、まずこの音程をn-cercleで図表化してみよう。
まず「夢と数」の表記に従い、 (2 3 2 2) という音程の数列を用意する。dx->xを用意し、左辺に1を、右辺にこのリストを繋げる。ここでの出力結果は、 (1 3 6 8 10) となる。
ここでn-cercleを用意し、mキーで中身を表示し、すこし広げておく。
このdx->xの出力をn-cercleのinput 2(LISPは0からものを数えるので左から3番目、つまり一番右)に繋ぐ。ここでevaluateしてみると、このような図が表示される。
これのoutput 0に、c2chordというファンクションを作り、その下にクラスchordを作り、それのinput0(一番左)に繋げる。ここまでのチュートリアルでは全てinput 1(左から2番目)に繋げていたが、ここでは異なるので注意!
ここでそのchordをevaluateしてみると、「ド#、レ#、ファ#、ソ#、ラ#」(C#4, D#4, F#4, G#4, A#4)という和音が現れる。
これにom+で1200を足して1オクターヴ高くしたchordを作っておこう。後の話はここから再開する。
その前に、n-cercleとの組み合わせに不可欠なZn関連のファンクションについて触れておく。
invというファンクションを用意する。input 0はオプション選択式だが、標準のintegerのままで良い。input 1に先ほどのdx->xを繋ぐ。
その下にさらにtranspというファンクションを作り、input 1には 2 を、input 2にはinvの出力を繋ぐ。
invというファンクションを用意する。input 0はオプション選択式だが、標準のintegerのままで良い。input 1に先ほどのdx->xを繋ぐ。
その下にさらにtranspというファンクションを作り、input 1には 2 を、input 2にはinvの出力を繋ぐ。
ここで新たにn-cercleを用意し、transpの出力をinput 2に繋いでみると、その結果はこのようになる。
同じ五角形を保ってはいるが、構成音が替わっている。
これらは、後で引用する「夢と数」の図8と同一のものである。
これらは、後で引用する「夢と数」の図8と同一のものである。
これを先ほどと同じようにc2chordで繋ぐ(それぞれoutput 0, input 0であることに注意)。これを見ると「ド#、ミ、ファ#、ソ#、シ」という和音が出力されるが、orderモードにして良く見ると「ド#、シ、ソ#、ファ#、ミ」という配列になっている。これは先ほどinvでリストを反転させ、さらにtranspで移動させたことによるものだが、つねにドが一番低い値になるのでこのような表記となるのである。
そこでこれをsort.(語尾にドットがつくことに注意)で低い順に並び替える。それをcdr(クダー)で最初の値を切り落としたものに、firstで最初の値を取り出してom+で1200(1オクターヴ)上げたものをx-appendで繋げると、「ミ・ファ・ソ#・シ#・ド#」という並びになる。
n-cercleの部分を読み飛ばした人は、ここから作り始める。その場合は以下に記述する和音をchordで入力し、ブロックしておこう。
さて、ここまででピアノの黒鍵に相当する「ド#、ミ♭、ファ#、ラ♭、シ♭」(C#5, Eb5, F#5, Ab5, Bb5) が構築できた。
このように調性が明確な音響に於けるシャープとフラットの混ぜ書きは通常しないものだが、原著を尊重してここでは敢えて原著のまま記述する。
OpenMusicでは通常はシャープだけで表示されているが、chordの中身を開いて各音符を右クリックすれば、フラットはもとよりダブルシャープやダブルフラットなどにも臨時記号を変更できる。
このように調性が明確な音響に於けるシャープとフラットの混ぜ書きは通常しないものだが、原著を尊重してここでは敢えて原著のまま記述する。
OpenMusicでは通常はシャープだけで表示されているが、chordの中身を開いて各音符を右クリックすれば、フラットはもとよりダブルシャープやダブルフラットなどにも臨時記号を変更できる。
ここでいよいよ「夢と数」で触れられている分析解説をパッチ化して行く。
(「武満徹著作集 第5巻 夢と数」新潮社 より引用)
先ほどと引用箇所がかぶるが、もう一度引用最後の一節を読み返してみよう。
この五音の音程関係(インターバル)を見てみると、図6のように、長2度(2)、短3度(3)、長2度(2)、長2度(2)、そしてオクターヴ上の基音C#に到る短3度(3)です。
この場合は、x->dxを使えばこの値はすぐに参照できる。(非公式チュートリアル5を参照)
まずオクターヴ上の音が必要ということで、chordのoutput 1からfirstで最初の音程(C#5)を読み取り、om+で1200(オクターヴ)を足した「1オクターヴ上のC#6」をx-appendで融合し、各音程の差をx->dxで抽出してみよう。
結果は (200 300 200 200 300) となる。
OpenMusicではセント単位で音程を表記するので、ここでは先ほどの2と3を100倍したものと考えれば良い。
まずオクターヴ上の音が必要ということで、chordのoutput 1からfirstで最初の音程(C#5)を読み取り、om+で1200(オクターヴ)を足した「1オクターヴ上のC#6」をx-appendで融合し、各音程の差をx->dxで抽出してみよう。
結果は (200 300 200 200 300) となる。
OpenMusicではセント単位で音程を表記するので、ここでは先ほどの2と3を100倍したものと考えれば良い。
原著の次の段落を見てみよう。
この、2、3、2、2、3の関係を、一種の単純な魔方陣のように組み立ててみます。(図7)
上向拡大 | ↑ | Bb | 3 | 2 | 3 | 2 | 2 |
上向拡大 | ↑ | Ab | 2 | 3 | 2 | 3 | 2 |
下向拡大 | ↓ | F# | 2 | 2 | 3 | 2 | 3 |
下向拡大 | ↓ | Eb | 3 | 2 | 2 | 3 | 2 |
下向拡大 | ↓ | C# | 2 | 3 | 2 | 2 | 3 |
(「夢と数」図7、ただし上下の順は反転した。)
和音は下から上へ積み重ねて書くものなので、読みやすさの点から敢えて武満のオリジナルのものと上下を反転していることをお断りしておく。
この図表をよく見ると、1段目の最後の数値が2段目の先頭に来ており、以後その繰り返しになっていることが分かる。
これはOpenMusicではrotateを使えば再現できる。
これはOpenMusicではrotateを使えば再現できる。
F# (fix) を中心に、上の三音C# E F#、そして下の二音Ab Bbを、この魔方陣によって上下に拡大する操作をします。C#を例にとると、まず長二度(2)下がってBナチュラル(H)、つぎに短三度(3)下がってAb(G#)、また長二度(2)下がってF#、同じようにつぎも長二度(2)下がってEナチュラル、最後に短三度(3)下がって元の(オクターヴ低い)C#になります。(図8)この音程は図9のようになります。
それぞれの音は、上向下向、同じようなプロセスによって図10のような音程(ハーモニック・ピッチ)を得ることが出来ます。
ということでこのプロセスをパッチ化してみる。
まずomloopを作成してinputを2つ用意する。
input 0には先ほどのx->dxの出力を繋ぐ。
input 1には、chordのoutput 1からfirst-nで最初の3つ(下向拡大)を取り出して繋ぐ。
input 0には先ほどのx->dxの出力を繋ぐ。
input 1には、chordのoutput 1からfirst-nで最初の3つ(下向拡大)を取り出して繋ぐ。
omloopの中身を開く。
input 0にはx->dxの出力結果が入力されている。「下向拡大」するのだから、先ほどの差をom*で-1を与え、負数に変換しておく。ここの出力は (-200 -300 -200 -200 -300) となる。
input 0にはx->dxの出力結果が入力されている。「下向拡大」するのだから、先ほどの差をom*で-1を与え、負数に変換しておく。ここの出力は (-200 -300 -200 -200 -300) となる。
input 1を使ってここでは図のようにループを構築する。
forloop, length, nthの組み合わせは、つまりはlistloopと同様であるが、ここでの利点はforloopによって何回目のループであるかの数値を取得できることである。
listloopとcountを使っても同様のカウントが出来るが、この方法は多少冗長ではあるものの見た目が分かりやすい。
listloopとcountを使っても同様のカウントが出来るが、この方法は多少冗長ではあるものの見た目が分かりやすい。
これを用いて、nthでリスト内の値を順番に呼び出すと同時に、rotateで先ほどのx->dxおよびom* -1 で得られた負数の音程を順次ローテートして行く。これで先ほどの図7の「下向拡大」の部分が再現できる。
ここまでをcollectに繋ぎ、eachTimeとfinallyに繋いでおく。
ここまでをcollectに繋ぎ、eachTimeとfinallyに繋いでおく。
ローテートされた音程と、和音の各音(最初の3音のうちの1つずつ)をdx->xに入れると、引用図9のような「下向する音程」が得られる。
この原理を応用して「上向拡大」用のもう一つomloopを作る。
今度はinput 0の値は負数ではなく正数のままで良いが、処理の都合上reverseしておく。
今度はinput 0の値は負数ではなく正数のままで良いが、処理の都合上reverseしておく。
forloopからの出力にom* -1を与えて負数にする。input 0, reverse, length, om+の順に繋ぎ、先ほどのom*の出力と足す。
ここでのom+の出力結果はまず5となり、次に4となり、そこまでである。
これをrotateに繋ぎ、ローテーションをそれぞれ変える。
ここまでをcollectに繋ぎ、eachTimeとfinallyに繋いでおく。
ここでのom+の出力結果はまず5となり、次に4となり、そこまでである。
これをrotateに繋ぎ、ローテーションをそれぞれ変える。
ここまでをcollectに繋ぎ、eachTimeとfinallyに繋いでおく。
これら2つのomloopをx-appendすると、その出力結果は以下のようになる。
((7300 7100 6800 6600 6400 6100) (7500 7200 7000 6800 6500 6300) (7800 7600 7400 7100 6900 6600) (8000 8200 8500 8700 8900 9200) (8200 8500 8700 9000 9200 9400))
((7300 7100 6800 6600 6400 6100) (7500 7200 7000 6800 6500 6300) (7800 7600 7400 7100 6900 6600) (8000 8200 8500 8700 8900 9200) (8200 8500 8700 9000 9200 9400))
試しにこれをchord-seqのinput 1に入れてみると、意図とそぐわず以下のようになる。
(ここでのchord-seqの表示は、五線譜staffをGGF(ト音記号2つとヘ音記号1つ)にしてある。)
(ここでのchord-seqの表示は、五線譜staffをGGF(ト音記号2つとヘ音記号1つ)にしてある。)
これは和音の横のラインの各「声部」がそれぞれ一まとまりの括弧となり、その括弧を縦のラインの「和音」として読み込んでいるためである。
このような場合にはmat-transを用いる。
mat-transは(非公式チュートリアル5で説明した通り)、((1 2 3)(4 5 6)(7 8 9))というリストがあると、それらの各値を最初から順に読み込み、((1 4 7)(2 5 8)(3 6 9))の順に配置する。
mat-transは(非公式チュートリアル5で説明した通り)、((1 2 3)(4 5 6)(7 8 9))というリストがあると、それらの各値を最初から順に読み込み、((1 4 7)(2 5 8)(3 6 9))の順に配置する。
このパッチの場合、x-appendの後にmat-transを用意すると、その出力は以下のようになる。
((7300 7500 7800 8000 8200) (7100 7200 7600 8200 8500) (6800 7000 7400 8500 8700) (6600 6800 7100 8700 9000) (6400 6500 6900 8900 9200) (6100 6300 6600 9200 9400))
((7300 7500 7800 8000 8200) (7100 7200 7600 8200 8500) (6800 7000 7400 8500 8700) (6600 6800 7100 8700 9000) (6400 6500 6900 8900 9200) (6100 6300 6600 9200 9400))
これをchord-seqのinput 1に入れれば、「夢と数」に掲載されている図10のようになる。
さて、この和音だけで終わりではない。「夢と数」の次の部分を見てみよう。
(図10の)0と5は、当然同じ五つの音ですが、音程関係は著しく異なった結果になっています。そして、この1、2、3、4、5、五つの異なった音階に、つねに、前に述べたように、F#が持続音(ドローン)として鳴っています。また、それぞれの音階の基音(ファンダメンタル)に、基本の(五音音階の)逆行(リヴァース)を葡萄の房のようにたらしてみます。さて、以上のすべてを図示すると図11のようになります。
ということで、ここで付け加えるのは「持続音としてのF#」と、「基本の五音音階の逆行」である。
まず「基本の五音音階の逆行」を作ってみよう。これはx->dxおよびom*で-1を掛け、firstから値を取ってdx->xに通せば良い。
これについては公式チュートリアルの2と3で触れられているので、それを参考にしてほしい。
これによって「ミ、ファ#、ソ#、シ、ド#」(E4, F#4, G#4, B4, C#5)という和音が得られる。
これについては公式チュートリアルの2と3で触れられているので、それを参考にしてほしい。
これによって「ミ、ファ#、ソ#、シ、ド#」(E4, F#4, G#4, B4, C#5)という和音が得られる。
ただし、このプロセスの代わりに、先ほどn-cercleとinvを用いて反転させて作った同じ和音を用いても良い。
ここで3つめのomloopを用意する。inputは3つ用意する。
まずinput 0には逆行した五音音階(E4, F#4, G#4, B4, C#5)を入れる。
input 1にはオリジナルの五音音階(C#5, Eb5, F#5, Ab5, Bb5)からthirdでF#5 7800を取って入れる。
input 2には先ほどのchord-seq(「夢と数」の図10に相当するもの)のoutput 1を繋ぎ、listloopを与える。これでそれぞれの和音がループごとに呼び出されることになる。
input 1にはオリジナルの五音音階(C#5, Eb5, F#5, Ab5, Bb5)からthirdでF#5 7800を取って入れる。
input 2には先ほどのchord-seq(「夢と数」の図10に相当するもの)のoutput 1を繋ぎ、listloopを与える。これでそれぞれの和音がループごとに呼び出されることになる。
input 0では既に「加工する音形」としての負数がomloop以前のメインパッチで得られている。ここでの入力は (7300 7100 6800 6600 6400) となる。
これをx->dxして各音程 (-200 -300 -200 -200) を出力する。先ほどのlistloopからfirstを呼び出し、dx->xの左辺に繋ぐ。これで、
それぞれの音階の基音(ファンダメンタル)に、基本の(五音音階の)逆行(リヴァース)を葡萄の房のようにたらしてみます。
の部分が実現できることになる。
しかしながらそうすると基音の部分の音が二重に表記されることになるので、ここではcdr(クダー)を使っておこう。ここでのcdrの役割は「リストから最初の値を省いて出力するもの」と思っておけば良い。(実際はLISPの基本にかかわる重要な概念だが、これは後にLISPを扱う時に詳述する)
x-appendを用いて、今のcdrの出力、input 1、listloopを順に繋ぐ。最後にcollectに繋ぎ、eachTimeとfinallyに繋いでおく。
いよいよ最終的な出力である。新たにchord-seqを用意し、input 1に繋いでevaluateしてみる。
これで出力が「夢と数」の図11のようになれば、成功である。
この和音の出力を聴いてみたら、「鳥は星形の庭に降りる」の録音の11:30付近を聴いてみよう。
同じ和音が現れるのが聞き取れる。
同じ和音が現れるのが聞き取れる。
- 武満徹「鳥は星形の庭に降りる」Toru Takemitsu : A Flock descends into the Pentagonal Garden
- Spotify (2曲目)
最後にこれは本編とあまり関係の無い内容だが、「夢と数」の中でも特に筆者(Imahori)が好きな一文が前述の引用の直後にあるので、本稿の締めくくりとしてその武満徹の言葉を引用しておこう。
私が音楽を考える時には、お話しして来たように、楽譜の上で平面的に音を見、記号的に音を捉えていますが、私の音楽の場合には、それが実際に楽器によって響きとして具体的なものにならない限りは意味がありません。書法の論理だけでは、音は響きとしての肉体を持ったことにはなりません。私の場合には、具体的な響きが重要ですし、すべてのシステムは、響きを念頭に案出されたものです。
バッハという偉大な作曲家がいますが、あの素晴しい「フーガの技法」にしても、構造そのものがとても重要で、どんな楽器で演奏しても、それは害われることはありません。その論理は極めて普遍的です。ところが私の場合は、それとは事情がいささか異なります。私は、ドビュッシーの音楽から多くを学んでいます。おおむね独学ですが、私の師匠はドビュッシーだと思っています。ドビュッシーがどうして私にとって価値ある存在かというと、かれの音楽はいくつかに要約できるけれど、大事なのはその色彩、光と影だと思います。それは独特な管弦楽法において顕著です。一個の主題を強調するのではなく、音響焦点を複数にした、一種の汎焦点(パンフォーカス)のようなオーケストレーションは類例のないものです。(中略)
日本の伝統的な音楽は、音色に対して並外れて敏感でした。ーー先ほどまでは便宜的に音をひとつの機能として話を進めてきましたが、ひとつひとつの音、Eとか、E♭とか、Aとかいう音にはそれぞれいろいろなスペクトラムがあり、またそれぞれ異なった運動があります。ーーそうした繊細な動きを聞き出そうというのが、強いて言えば、ドビュッシーや、私たち日本人の音楽の感受性だったと思います。
参照
非公式チュートリアル 前後
添付ファイル
- Unofficial-tutorial07-1.png
- Unofficial-tutorial07-10.png
- Unofficial-tutorial07-11.png
- Unofficial-tutorial07-12.png
- Unofficial-tutorial07-2.png
- Unofficial-tutorial07-3.png
- unofficial-tutorial07-4.png
- unofficial-tutorial07-5.png
- unofficial-tutorial07-6.png
- unofficial-tutorial07-7.png
- unofficial-tutorial07-8.png
- unofficial-tutorial07-9.png
- Unofficial-tutorial07.png