ウオロェデョイ埠頭

lo vrici selciska be la .xopukas.

純正音程記譜法 Color Notation をざっくり解説

※ この記事は Color notation - Xenharmonic Wiki を原典としています。

※ 12平均律の音楽理論の基本的な用語に加えて,微分音のための ¢ や倍音などの基礎的な概念を前提知識としています。

Color Notation って何?

 Color Notation は Kite Giedraitis によって開発された音程の表現法のひとつで,以下の特徴を持ちます: 

  • 既存の度数の体系を拡張したもの。
  • 基本ラテン文字しか使わないので、見やすく打ちやすい。
  • 純正音程を指す。音名やコード名にも応用できる。
  • 発音できる。(Colorspeak, "微分音のエスペラント"らしい)

 Color Notation では,音程は zogu 2nd とか trizo-agugu 3rd のように書かれます。Xenharmonic Wiki を訪れたことがある方はこの表記を見たことがあるのではないでしょうか。

 "zogu", "trizo-agugu" は「色部分」です(そう呼ぶことにします)。ここで音程に含まれる素数成分を記述しています。

 "2nd", "3rd" は「度数部分」です。従来の音楽理論で用いられる度数表記と同様に,英語で読みます。日本語で「2度」「3度」としてもいいですね。

 この「色部分」「度数部分」を合わせて書くことで,純正音程ひとつを明確に指定することができます。Color Notation による音程名を color name と呼びます。この記事では翻訳借用で「色名」とします。

 発音に関しては母音は i, e, a, o, u (どれもIPA通り) の5母音で,子音はあまり説明がないけど英語のつもりで読めばよさそうです。

音程の表し方

素数ごとの「色」と子音

 小さめの素数には,色に由来する子音が割り当てられます。

 これをわかりやすく素数子音と呼ぶことにしましょう。

 2 は…… オクターブ等価のおかげで影が薄いので飛ばします。(color notation はオクターブ等価を前提としているので,この文書では気軽に「3倍音は5度」みたいな言い方をしていきます。)

 素数 3 には,over(上方、分子)・under(下方、分母) にかかわらず 白 wa (<white) を当てます。度数はおなじみ「5度」です。

3-all     = wa = 白 white = (完全)5度

 素数 5, 7 は over・under によって色が異なります。over は母音が o,underは u です。7-over を b(blue) としてしまうと♭と紛らわしいので azure にしているようですね。度数を扱う時には,5倍音は3度,7倍音は7度とします。

5-over   = yo = 黄 yellow = (長)3度

5-under = gu = 緑 green = (短)6度

7-over   = zo = 青 azure = (超短)7度

7-under = ru = 赤 red = (超長)2度

 超短,短,長,超長 が 青→緑→黄→赤 の順になっているの,いいですね!

 3倍成分の wa は 3-limit 以下の音程で(=5以上の素数成分が含まれない時のみ) 現れ,それ以外の時は省略されます。yo と zo など複数の成分が表記される時は,大きな素数が先に来ます (例えば yozo ではなく zoyo)。

 「度数」部分は基本的に英語の序数詞を使います (公式の例では 1度は unison,8度は octave と書いています)。

 例えば 21/20 は zo(7-over) gu(5-under),7度上の5度上の3度下のオクターブ下=2度なので,色名は zogu 2nd となります。もっと略すと zg2。

重複を避けるための magnitude

 さて、これだけでは名称が重複するものが出てきてしまいます。

 例えばピタゴラス音律の長3度(81/64) と 短3度(32/27) を見てみましょう。どちらも 3-limit の 3度 なので「w3」になってしまいます。

 この区別のために magnitude という指標を設けます。

 名称が重複するもののうち,最も原点の w1(1/1) に近いもの(雑に言うと最も周波数比が単純なもの) を Central と呼び,color name の上では無標にします。Central であるとき,magnitude = 0 であるとします。

 それを基準として,Tonnetz 上で1段階右に来るごとに magnitude が1増え,色名には la-/L-(<large) が1つ付けられます。Central より左側では,1段階ごとに magnitude が1減少し,sa-/s-(<small) が1つ付けられます。

 w1 から見ると 32/27 のほうが 81/64 より近いので,32/27 が w3(Central) となり,81/64 はそれより1段階右側なので Lw3(large) となります。*1

magnitude の計算方法

 「w1 から遠い」という漠然とした言い方をしましたが,厳密には magnitude は以下のように計算されます:

  magnitude は,monzo の3倍音以上の指数の和を7で割ってから 四捨五入で整数に(round)した値。

 先ほどの長3度(81/64) と 短3度(32/27) の magnitude を計算してみると

  • magnitude(81/64) = magnitude(|-6 4>) = round(4/7) = 1
  • magnitude(32/27) = magnitude(|5 -3>) = round(-3/7) = 0

 となります。

指数接辞 bi-, tri-

 倍音成分を2乗,3乗にするとき,gugu や zozozo のように連ねても書けますが,bi-(2), tri-(3) を使って短くすることもできます。4重以上の large/small については後述します。略記のときは累乗のように上付き数字で書けます。

  • 49/25 = zozogugu 9th = bizogu 9th 
  • 128/125 = gugugu 2nd = trigu 2nd = g³2

 ただし,bi- はそれを使うことで全体が短くなるときしか使いません。25/16 は yoyo 5th。biyo 5th としても短くならないので意味がないのですね。

 これらの指数接辞は la, sa の前にも付けられます。

「負の度数」

 音程自体が正でも,度数が負になる場合があります。50/49, 405/392 などが負の2度 (negative 2nd) です。日本語では「2度下がる」と言ったほうが分かりやすそう。

複合音程

 color notation ではオクターブ単位で広げられた音程を複合(compound)音程といい,co- (略記で c) と表します。発音は多分 [ko] でしょう(記述が見つからないけど)。

 逆に,co- を含まない色名は必ず1オクターブ未満の音程を表します。

 例えば 15/4 は 15/7(=yo 7th) の1オクターブ上なので coyo 7th と書きます。一般に 9th は co-2nd *2となります。

 yo や la, sa などと同様に co- にも指数接頭辞を付けることができます。bico- で 2オクターブ上,trico- で3オクターブ上になります。

音名の表し方

 これまでに出てきた音程名の規則に従って,度数のかわりに音高を使うと,color notation による音名を作れます。例: zEb (読み: zo E flat), yyG#(yoyo G sharp)

 3-limit 以下の音程の場合は wa が必要でしたが,音名の場合は wa も省略できます。wG は単純に G と書けます。

 音高に音程を足して音高を求めたり,音高から音高を引いて度数を求めたりもできます。例: 

  • D + y3 = yF
  • yE(5/4) と ryF#(10/7) の間の音程は r2(8/7)
素数グループの表し方

 素数 3 を表す wa と同様に,overの色名の母音を -a に変えた ya, za は over/under に関係なくその素数を示します。これを連ねることで素数の組み合わせを表せます。

 素数 2 は ca(<clear)。

 ca, wa はデフォルトで素数グループに含まれる。含まない時には no- で表す。素数グループ [2, 3, 7] は za,[2, 3, 5, 7] は yaza,[2, 5, 7] は yaza nowa。[3, 5, 7] は yaza nowa。[5, 7] は yaza nowaca。

 これを使うと「3, 5, 7 倍音を使えて 2 倍音を使えない音律」*3 のことを「yaza nowa 音律」みたいに短く言えます。これは便利!

11以上の素数子音

 11以上の素数成分は over/under で共通の子音を持ち,後続する母音が a, u, o と活用します。Ca(両方) - Co(over) - Cu(under) と活用する。20を超えるような大きい素数成分は C ではなく CVC だったりもっと長かったりします。

 la, lo, sa, no, nu はそれぞれ (階名の)la, (英語の)low, (small の)sa-, (素数グループ除外の)no-, (英語の)new と紛らわしいため,単独で使う場合には i- を付ける必要があります。

 color notation で扱えるすべての素数成分の呼び名を示します:

  • 2 = ca (素数グループを表す時に noca の形でのみ現れる)
  • 3 = wa (通常は省略する)
  • 5 = ya, yo, gu
  • 7 = za, zo, ru
  • 11 = (i)la, (i)lo, lu (1a, 1o, 1u)
  • 13 = tha, tho, thu (3a, 3o, 3u)
  • 17 = (i)sa, so, su (17a, 17o, 17u; これ以上の素数も同様)
  • 19 = na, (i)no, (i)nu
  • 23 = twetha, twetho, twethu
  • 29 = twena,  (以下すべて同様に -o, -u と変化する)
  • 31 = thiwa / 37 = thisa
  • 41 = fowa / 43 = fotha / 47 = fosa
  • 53 = fitha / 59 = fina / 61 = siwa
  • 71 = fitwewa / 73 = fitwetha / 79 = fitwena
  • 83 = fithitha / 89 = fithina / 97 = fifosa
  • 101 = fifiwa / 103 = fifitha / 107 = fifisa
  • 109 = fifina / 113 = fisitha / 127 = sisisa

 英語の数詞から来てるっぽいですね。70 以上は 50+20, 50+60, 60+60 のように分解できます。何でこんなことになってるのかは謎。

 127より上は定義されていないようです。*4

 各素数倍の音程に対応する度数は "8ve-reduced cents" (オクターブを除いた部分の音程の ¢ 表記) によって定まります。1度は 0~50¢,2度は 50~250¢,3度は 250~450¢,4度は 450~600¢。4度と5度の境が 600¢ にあり,5度以降は 600¢ で折り返して計算します。例えば 23/16 = 628¢ は5度,31/16 = 1145¢ は7度 となります。

 ちなみに,この度数は <7 11 16 20 24 26 29 30 32 34 37...] というふうに "pseudo-edomapping" することができます。なんだそれは? 後で詳しく説明します。

その他の指数接辞

 2(bi-), 3(tri-) より大きい指数にも略号があります。

  • 4 = quad-
  • 5 = quin-
  • 7 = sep-

 11以降の指数には,素数子音に -e を付けたもので表します。Ca, Cu, Co に続く第4の活用ですね。

  • 11 = le-
  • 13 = the-
  • 17 = se-
  • 19 = ne-
  • 23 = twethe-
  • 29 = twene-
  • ...

 4 の他は素数しかないじゃん! 6 とかはどうすんのさ!?

 そう……これも周波数比と同じく,素数の積で表せばいいのです。4 は小さくてよく使うので特別にショートカットとして quad- を用意してくれています。9乗は tritri-, 10乗は quinbi-, 14乗は sepbi-, 16乗は quadquad- となります。倍音子音と同様,倍数接辞も降順に並びます。

 指数表現は,デフォルトではそれに続く部分すべてに作用します。trizogu の tri- は zogu 部分 にかかるため z³g³ となります。

 指数の作用範囲を制限するためには分離符(delimiter) -a- を使います。trizo-agu は z³g になります。

 magnitude の話で出た la-, sa- の "a" もこの働きをすると解釈できるらしく(?)*5,trilayo は L³y³ ではなく L³y を表します。

ハイフンで区切る

 Color Notation は膠着語みたいに単語(?)が伸びるので,下記の箇所にハイフンを挟んで読みやすくする必要があります。

  • 分離符 -a- の前
  • magnitude を示す la-, sa- の後
  • compound を示す co- の後
  • 英語の数詞を代わりに用いる時にはその前と後

 ただし,1音節ごとに綺麗に分解できる(?)場合はハイフンを省略できるため,layo, lalagu, sagugu, coyo, cocowa はこの通りに書いて問題ありません。

 

 ここで記法の解説は終わります。

 実際に比の形と色名の形を変換する手順を見ていきます。

Color Notation を使ってみよう!

  周波数比をより簡単な比に分解したり,戻したりする操作は,色部分と度数部分をそれぞれ個別に足し合わせることでできます。例えば 45/32(=y4) は,5/4(=y3) と 9/8(=w2) の合成で作れます。w+y=y,3度+2度=4度 ですね。

 この例では登場する音程がどれも単純なので magnitude を使わずに済みました。しかし実際の使用では magnitude を考慮する必要があります。magnitude は,計算過程に四捨五入を含むので単純に足せず,毎回 monzo から計算する必要があります。

周波数比を色名に変換する

 色部分を決めるには,まず周波数比に対応する monzo を算出して,3より高い成分に対応する色名を高い方から順に書いていきます。

 度数部分はそれぞれの倍音ごとに定められた度数を (もちろん度数の加算のしかたに従って)足し合わせることで求まります。多分ここは12平均律の度数の扱いに慣れた人はなんとなくできてしまう所でしょう。

 度数を足し合わせる計算は以下のように説明されています:

  • val <7 11 16 20 24 26 29 30...] に音程の monzo を「掛ける」ことで step 数を出す。
  • step 数が0以上なら1を加え,0未満なら1を引く。

 んん??

 急に val が出てきましたね?

 「val と monzo を掛ける (というか内積を求める)」計算って,特定の平均律における純正音程の近似の step 数を求める時に使うやつですよね?

 この val,最初の2倍音の step 数が「7」ですね。これは7平均律の話?

 そう。"pseudo-edomapping" 云々はこのことを言っていました。「度数のあの独特の足し算,いちいち手でやるの面倒だから,7平均律の val と monzo の計算のしくみを借りてやろうぜ」ってことなんですね。*6

 実際に計算をやってみましょう。

【 例: 周波数比 63/40 を色名に変換する 】

  • monzo = [-3 2 -1 1>
  • 色名部分 = 7 → zo, 5-1 → gu を合わせて zogu
  • step 数 = <7 11 16 20][-3 2 -1 1> = -21+22-16+20 = 5 step
  • 度数 = 5+1 = 6
  • magnitude =  round( (2-1+1)/7) = 0 より Central, 無標

 以上より色名は zogu 6th (略式 zg6)

色名を周波数比に変換する

 こちらはやや複雑な計算が必要です。

  1. 前に述べた val <7 11 16 20 24 ... ] を定義しておく。
  2. 色名の度数部分からその sign を引くと,7音音律 edomapping における step 数 (これを S とする) が求まる。色名の magnitude を M とし,compound されたオクターブの数を C とする。音程の monzo を [a b c d e ...> とし,色名から読み取った5以上の素数の成分の指数を a, b 以外の要素に代入する。
  3. S' を [0 0 c d e ...> と val のドット積とし,M' を round ( (2(S-S')+c+d+e+...) / 7) としたとき,a = -3(S-S')-11(M-M')+C,b = 2(S-S')+7(M-M') となる。

 手順3で急に謎の式が出てきましたね??

 こちらも原典に実際の計算の例が載ってるのだけど,行間がデカすぎるので,逆張りして行間をめっちゃ解説します。

 多分ここからがこの記事の †本編† です。

【 例: 色名 sgg2 (sagugu 2nd) を周波数比に変換する 】

  • S = 2-1 = 1,  M = -1,  C = 0
    度数は2度。7平均律 val では s = 1 step。
    s- が1つあるので M(= magnitude) = -1 です。
    ca- が無いから,compound されていない,すなわち C = 0 と分かります。
  • Monzo = [a b -2 >
    素数成分 2, 3 の指数は色部分に反映されないのでまだ分かりません。
    これを仮に a, b と置いておきましょう。
    "gugu" から,素数成分 5 の指数は -2 です。
  • S' = <7 11 16][0 0 -2 > = -32
    今分かっている 5 以上の素数の成分だけで音程を作ると,-32 steps になるようです。
  • S - S' = 1 - (-32) = 33
    ここで「a, b (2倍と3倍の成分)だけで作った音程は 33 steps になる」という条件が見えました。これを 条件① としておきます。

 これから a, b を求めるために,便利な2つの音程をユニットとして活用します。

 1つ目は 音程 U = [-3 2> です。

 U を1個積むごとに,magnitude に影響する素因数(つまり3以上の素因数) の総数は 2 だけ増えます。また val と合わせて step 数を計算すると <7 11][-3 2> = 1 より,U は7平均律 val では 1 step 幅となります。

 U を33個積むと 33 steps となり,条件①を満たします。

 

 それから,「"sasagu 2nd" の magnitude は -1 である」はずです。これを 条件② としましょう。

 ここでもう1つの音程 V = [-11 7> を定義します。

 val と合わせて step 数を計算すると <7 11][-11 7> = 0 となります。つまり V は 0 steps の音程だから,Vをいくつ積んでも step 数に影響しません。

 一方,magnitude に影響する素因数は 7 だけ増えるので,magnitude は 1 増えます。

 U, V の特質が分かったところで本筋に戻りましょう。

  • M' = round ( (2×33 + (-2) ) / 7) = round (64/7) = 9
    ・ 仮に sagugu 2nd のうち 2倍と3倍の部分を [-3×33 2×33> (=U を33個積んでできる音程) だとすると,全体の monzo は [-3×33 2×33 -2>,magnitude(=M') は 9 となります。
  • M-M' = -1-9 = -10
    ・ 実際の magnitude(=M) は -1 であり,差(=M-M') は -10。だから,U を 33(=S-S') 個積んでから V を -10(=M-M') 個積めば,条件① と 条件② を同時に満たす音程になります。
  • a = -3(S-S') - 11(M-M') + C = -3×33 - 11×(-10) + 0 = 11 
  • b = 2(S-S') + 7(M-M') = 2×33 + 7×(-10) = 66 - 70 = -4
    ・U, V の定義に基づいて a, b を計算します。
  • Monzo = [11 -4 -2>,したがって周波数比は 2048/2025

 ようやく答えが出ました。長かったですね。てか U と V とか原典にひとことも書かれてないから大変だったわよ(👈️数字に弱い)。

 この計算,表計算ソフトとかで自動化しないと大変ですね。Color Notation,案外常用するの厳しくないか? 微分音界のエスペラントってより微分音界のイスクイルだろこれ…… ; ; *7

 ちなみに音程 U [-3 2> (= 9/8) はおなじみの「大全音」。V [-11 7> は 2187/2048 で「(ピタゴラス音律の)半音階的半音」と呼ばれています。どちらも 3-limit の超重要な音程です。上の計算の最終結果 2048/2025 にも diaschisma という名前があります。*8

 原典ではこのあと Color Notation を使った和音の表記法とかを解説してるんですが,今回は入門編だし時間が無い*9 のでここまでとします。

おわりに

 最近にわかに人工言語と音楽理論(特に微分音)の接触が盛んになってきてて嬉しいですね。お隣さんの語語語アドカレとか,初日でもうソルレソルがボレピになってるし。どういうことなの。

 私は微分音に触れはじめてから3年くらいになりますが,自由に調律できるプラグインが少なすぎたり人工言語に夢中になったりしていてなかなか曲が書けていません。近いうちに何か出したいものです。うに。

 苔むしたバベルの塔では,音楽の記譜法やコンピュータ言語などの話もできるコーナーが設けられています。苔バベルアドカレ で人工言語じゃない記事を書くのもアリだわよ!(あと Migdal 以外に投稿するのもアリだわよ!) ってことで,このようなテーマと場所で書くことにしました。

 以上です。読んでくれてありがとう!

 この記事は《苔むしたバベルの塔》人工言語アドベントカレンダー2024 で公開されています。ほかの記事も見てね!

adventar.org

 では tawa pona 👋

*1:w3 と Lw3 の間にある音程は 2187/2048,apotome です。magnitude が1増えると,音程は apotome 1つ分広がります。

*2:co-2nd の "-" は負の度数を表すマイナスではなく,読みやすくするためのハイフンです。紛らわしいな…

*3:ボレピとかね

*4:まあ使うこともないでしょう。128倍音は基音のちょうど7オクターブ(=84半音)上で,88鍵のピアノのほぼ端から端くらい離れています。

*5:「la, sa に付く指数表現はそれにしか作用しません」みたいな説明の方がわかりやすそう

*6:最後に「0以上なら1を加え…」とかいう妙な調整をしているのは,現行の度数のシステムが同音を「0度」ではなく「1度」としているせいです。同音を「0度」とする体系なら「3度+2度=5度」と通常の数のように加減算ができて,妙な調整も必要ありません。……やはり,我々はさっさと現行の度数を捨てて,7平均律の step 数のように同音を「0度」とする新しい度数に乗り換えるべきだ!

*7:なお真の「微分音界のイスクイル」は Sagittal Notation だという話もある

*8:使いやすい小さめの音程(コンマ)にはだいたい名前が付けられていて,コンマの一覧を見るのは辞書を眺めるような楽しさがありますね。

*9:アドカレは11月30日に建てるべきものではない