名古屋作曲の会(旧:名大作曲同好会)

“音楽”を創る。発信する。

音列からスケールを生成する(べき生成スケール前編)

こんにちは。なんすいです。

 

今回の記事では、前回「チャーチスケールの近縁を探す」で紹介した用語を一部断りなしに使うので、記事最後の用語集を眺めてから読むのをおすすめします。

https://nu-composers.hateblo.jp/entry/2023/10/15/190000

 

前回の記事では、スケールに「正規性」という条件を導入し、チャーチスケールに近しいスケールを探してみました。

しかし、実は重要なポイントをすっ飛ばしていたのに気が付いていましたか?

それは…

 

「スケールって何?」

f:id:nu-composers:20231112133546j:image

 

前回の段階では説明しなくても特に問題無かったのですが、今回はどうしても触れなければいけません。

これまでなんとなくの定義でスケールという名前を使っていましたが、改めてスケールとは何なのか、ここでの数学的な定義を明確にしておきましょう。

 

スケールの定義

スケールとは、ある特別な条件を満たす音列であると言えます。

------------------------------

★n音律のスケールとは、次の3条件を満たす音列である:

①要素に0を必ず含む

②全ての要素が0以上n-1以下の相異なる整数である

③要素が左から小さい順に並んでいる

------------------------------

 

例として、n=12(12音律)のもとで、音列a=(0,3,5,6,9,10)を考えてみます。

これは要素0を含んでいるので条件①を満たしています。

また、全ての要素は0以上11以下、さらに相異なる数になっているので②もOK。さらに0<3<5<6<9<10より③もOKです。

したがって、音列aはスケールと見做すことが出来ます。

 

スケールとは言えない例も見てみましょう。やはり12音律のもとで考えます。

b=(0,3,5,5,9,10)とすると、bは要素0を含み、さらに小さい順に並んでいるので①③はOK。

しかし、要素5が重複して含まれているため②は満たしません。

よってbはスケールと見做せません。

 

またc=(0,3,6,5,9,10)とすると、cは①②を満たしますが、今度は0<3<6>5<9<10と小さい順に並んでいないため③が満たされていません。

よってこれもスケールではありません。

 

 

…いかがでしょうか。例を取ってみると何てことはないかなと思います。

前回紹介した各種「スケール」と名の付くものたちも、もちろんこの条件を満たしています。

 

 

 

スケール化可能な音列

さて、以上を踏まえた上で、「より一般の音列からスケールを生成する」というのが今回の本題です。

------------------------------

★n音律のもとで音列aが次の条件を満たすとき、スケール化可能であるという:

①要素に0を必ず含む

②各要素a_jに対してMOD(a_j)が相異なる

ただしMOD(a_j)=(a_jをnで割った余り) である。

------------------------------

 

n=12(12音律)のもとで、例を見てみましょう。

a=(0,10,20,30,40,50)とするとき、

MOD(0)=0

MOD(10)=10

MOD(20)=8

MOD(30)=6

MOD(40)=4

MOD(50)=2

より各要素のMODは相異なり、また要素0も含まれています。

よってaはスケール化可能な音列です。

 

一方、b=(0,10,20,30,40,50,60)の場合、

MOD(0)=MOD(60)=0

より重複項が存在するため、スケール化可能ではありません。

 

ここで、音列がスケール化可能ならば、各要素のMODを小さい順に並べ替えることで、「スケールの生成」が出来ることになります。

 

先程のa=(0,10,20,30,40,50)からスケールを生成してみると、

MOD(a)=MOD(0,10,20,30,40,50)

=(MOD(0),MOD(10), ... ,MOD(50))

=(0,10,8,6,4,2)

より各要素を小さい順に並べ替えて、

→[0,2,4,6,8,10]

となります。

すなわち、音列aから[0,2,4,6,8,10]というスケールが生成出来ました。

これは音列aに対して一意的に導かれたものになっています。

 

このスケールの生成をイメージしやすく図示すると、下図のように何オクターブもある鍵盤から音をいくつか拾ってきた時に、これらの音を1つのオクターブ内に配置し直してスケールを構成する、という作業と等価です。

各要素のMODを取るという操作が、鍵盤上の各要素をオクターブ違いの同じ音に移す操作に対応しています。

 


f:id:nu-composers:20231112132824j:image

 

一般の音列のスケール化

以上から、スケール化可能な音列からはスケールを生成出来るようになりました。

さらにこれを広げて、一般の音列に対してスケール化を考えることも出来ます。

 

まず、スケール化可能条件の②は取っ払ってしまって、①…「要素として0を含む」だけを満たす音列について考えてみましょう。

このとき、条件②が無いので、要素のMODが重複する可能性があります。

例えば、n=12(12音律)のもとで、先程の例で使用したb=(0,10,20,30,40,50,60)は条件①を満たしますが、MOD(0)=MOD(60)=0と重複項があるため②を満たさない音列になっています。

 

こういう時は、重複している要素を1つだけ残して他を消去することで、スケール化可能条件を満たす音列にすることが出来ます。

すなわち、bの場合は0と60が重複していますので、0だけ残して(0,10,20,30,40,50)とし、これをスケール化すればOKです。

 

以上の方法により、条件①さえ満たせばどんな音列でもスケール化出来るようになりました。

 

では、①すら満たさない音列の場合はどうでしょう。

このときは、各要素を同じ数ずつマイナスし、特定の要素が0になるようにすればOKです。

カラオケの移調みたいなイメージですね。

 

例として、n=12(12音律)のもとで、c=(4,14,3,6,10,15,28)という音列を考えてみましょう。

とてもスケールとは程遠い音列ですが、上の手順を踏めば必ずスケール化出来るはずです。

 

まず、cを「移調」することで要素0を作ります。

今回は最初の4を0にするために、各要素をマイナス4します。

 

(4,14,3,6,10,15,28)

(0,10,-1,2,6,11,24)

 

これで条件①が満たされました。

次に、各要素のMODを取って、重複を解消します。

 

(MOD(0), MOD(10), ... , MOD(24))

=(0,10,11,2,6,11,0)

0,11の重複を解消

(0,10,11,2,6)

 

これで②が満たされ、スケール化可能な音列になりました。

先の操作で既にMODを取っているので、あとは小さい順に並べ替えると…

 

(0,10,11,2,6)

[0,2,6,10,11]

 

となり、無事スケールが生成出来ました。やったー!

ここで、最初の音列は位数が7だったのに対して、出来たスケールは位数が5になっています。ちっちゃくなっちゃいましたね。

当たり前ですが、スケール生成の操作でMODの重複項を消去する過程を踏んでいるため、スケール化可能条件②を満たさない音列からスケールを生成した場合、位数が生成前と後で一致しないということが起こってしまいます。

 

さらに、先の生成では最初の「移調」操作で、全体をマイナス4することで要素0を作り出しました。

しかし、移調の仕方は一通りではありません。

例えば、先程のc=(4,14,3,6,10,15,28)に対して、今度は3が要素0になるように全体をマイナス3してみましょう。

 

(4,14,3,6,10,15,28)

(1,11,0,3,7,12,25)

 

ここから同様の操作でスケールを生成してみると…

 

MOD(1,11,0,3,7,12,25)

=(1,11,0,3,7,0,1)

重複を解消

(1,11,0,3,7)

並べ替え

[0,1,3,7,11]

 

あれ?最初のスケール生成とは異なるスケールが出てきてしまいました。

全体をマイナス4したものから作ったスケールは[0,2,6,10,11]、マイナス3したものから作ったスケールは[0,1,3,7,11]となっています。

すなわち、条件①を満たさない音列からスケールを生成する場合、作り方によってその結果は一意に定まらないことが分かります。

 

しかし、まだ言えることがあります。

[0,2,6,10,11]と[0,1,3,7,11]はよく見ると、巡回によって一致します。すなわち巡回同値関係にあると言えます。

一般に、条件①を満たさない音列からスケールを生成し、異なる0の取り方によって2通りのスケールs,tが生成された場合、sとtは常に巡回同値関係で結ばれています。

つまり、一般の音列からスケールを生成した場合、生成されるスケールが属する巡回同値類は必ず一意に定まる、ということになります。

 

 

 

べき倍音列によるリディアンスケールの生成

私たちにとって最も馴染み深いチャーチスケール、実はこれも、特殊な音列から生成されたスケールとして考えられます。

 

何かと無限に擦られるジョージ・ラッセル提唱の「Lydian Chromatic Concept」では、チャーチスケールの1つであるリディアンスケールが、「べき倍音列」から自然に構成される"根源的なスケール"である、というようなことが言われています。

 

べき倍音列とは、「ド、ソ、レ、ラ、ミ、…」と完全五度音程で堆積される音列のことです。

すなわち数列で表すならば、(0,7,14,21,35, ...)と7の倍数が並んでいくようなものになります。

このべき倍音列から、リディアンスケールを生成してみましょう。

 

まず、上のべき倍音列を位数7の所までで区切ります。

(0,7,14,21,28,35,42)

 

これにスケール化を施してみると…

 

MOD(0,7,14,21,28,35,42)

=(0,7,2,9,4,11,6)

並べ替え

[0,2,4,6,7,9,11]

 

このように、ちゃんとリディアンスケールが出てきました。

これは従来説明されるスケール生成の手順を、ちょうどそのまま数列の変換として書き直したものになっています。

 

いかがでしたか?

最後に断っておくと、このような手順によりリディアンスケールが生成されたということで、「これがリディアンスケールの絶対的な正体だ!」みたいなことを主張するものではありません。(逃げーる)

 

感覚が先立つ音楽の世界でその仕組みを論理的に解明しようとすると、どこかで必ず「飛躍」を生じざるを得ません。

したがってむしろ、論理的な手法は飛躍を含む既存の音楽理論の解剖、あるいは拡張していくための「道具」として使われるのが適当だと思っています。

 

すなわち、ここでのリディアンスケールの場合、これをべき倍音列による生成スケールとして見ること"も"出来、そしてそれが既存の理論にどのような影響を及ぼしているのか、どのように拡張されうるのか、について、話を進めていきたいところです。

次回後編ではそんな感じのを書く予定です。

 

 

 

【定義・表記集】

数列によって音列を表記する方法:インターバル構成など単に音列のときは()、スケールを数列で書くときは[]で囲むことで区別する

 

スケールのインターバル構成:スケールの各インターバル(隣接音程)を順に並べた数列

 

巡回同値関係:2つのスケールを適当な巡回によって一致させることが出来るとき、2スケールは巡回同値関係で結ばれているという

 

巡回同値類:どの2スケールを取っても巡回同値関係で結ばれているようなスケールたちの集合を巡回同値類といい、そこに含まれるスケールを1つ取ってきて括弧でくくり表記する

 

位数:スケールに含まれる音の個数

 

正規条件:①各インターバルが長さ2以下②長さ1のインターバルが連続しない

正規条件を満たすスケールを正規スケールと呼ぶ。

 

------------------------------

 

スケール:  n音律のスケールとは、次の3条件を満たす音列である:

①要素に0を必ず含む

②全ての要素が0以上n-1以下の相異なる整数である

③要素が左から小さい順に並んでいる

 

スケール化可能性: n音律のもとで音列aが次の条件を満たすとき、スケール化可能であるという:

①要素に0を必ず含む

②各要素a_jに対してMOD(a_j)が相異なる

 

スケール化: スケール化可能な音列に対して、その音列の各要素を小さい順に並べ替えてスケールを生成することをスケール化、生成したスケールを生成スケールと呼ぶ。

 

MOD: n音律のもとで、MODは次のように計算される:

単音eに対して

MOD(e)=(eをnで割った余り)

音列a=(a[0], a[1], ... , a[m-1])に対して

MOD(a)=( MOD(a[0]), ... , MOD(a[m-1]) )