Excelでオンコードを自動表示!ベース音を導く数式

Excelでオンコードを自動表示!ベース音を導く数式 Excel

Excelが「オンコード」を見抜く瞬間 スラッシュ記号とベース音の自動表示ロジック

山本式和音番号の論理エンジン構築も、いよいよ最終コーナーに差し掛かりました。

↓↓↓最初の記事です。まだの方は是非↓↓↓

これまでの記事で、私たちは和音の「ルート音」や、その性質を示す「M」「m」「dim」「aug」、そして「7th」「9th」といった、コードネームを構成する主要な要素を判定する数式を一つずつ構築してきました。

スラッシュとベース音:コードネームの最後のピース

さて、今回はDB_山本式和音シートのAE列に表示されるスラッシュ記号/と、AF列に表示されるオンコードのベース音(例: C/GG)の表示ロジックに焦点を当てます。

Excel画面の説明

オンコードは、和音の最低音(ベース音)が根音(ルート音)ではないことを示す、音楽表現において極めて重要な表記法です。

転回形の例

Excelにこのスラッシュとベース音を正確に表示させることで、和音変換システムの表現力は、ほぼ完成に近づきます。

今回は、このオンコード表記がどのような条件で必要となり、Excelがそのベース音をどのようにして導き出すのか、その緻密な論理を解明します。

特に、第3回記事で作成した音階表の「縦のライン」というデータ構造が、この複雑な参照をいかに効率的に実現するのか、その連携を深掘りしていきましょう。

↓↓↓音階表についてはこちらの記事です↓↓↓

STEP1:オンコードの「スラッシュ」記号を表示させるロジック

まず、コードネームに「/」(スラッシュ)が必要かどうかを判定する、AE列の数式から解説します。

この数式は、和音の「姿勢」、つまり転回しているかどうかを判定する、システムの入口となるロジックです。

和音の「転回形」がオンコードを決定する

AE列(/フラグ)に記述する数式全体

DB_山本式和音シートのAE2セルに、以下の数式を入力します。

=IF(OR(AND(H2>0,I2=“”),AND(H2>=2,I2=8)),”/“,“”)

Excelで数式を入力

OR関数の外枠:二つの主要条件グループ

この数式の論理式部分は、OR関数の中に、2つの異なるAND関数グループが組み込まれた構造になっています。

これは、”/“が表示される条件が、大きく分けて2つの異なるパターンに分類できることを意味します。

このどちらかの条件が満たされれば、”/“が表示されます。

条件グループ1:AND(H2>0,I2=””)

最初のANDグループは、根音省略のない、基本的な転回形の場合にスラッシュを表示させる条件です。

  • H2>0: [転]列であるH2セルが0より大きい、つまり第1第2第3転回形のいずれかであることを判定します。
  • I2=””: [根省]列であるI2セルが空白であること、つまり根音省略が行われていないことを示します。
7thの転回形

【ロジック解説】

これは、C/EG7/Bのような、最も標準的なオンコード(転回形)を捉えるための条件です。

和音が根音位置ではなく、かつ根音が省略されていない場合に、スラッシュ表記が必要となります。

Excelでの挙動

条件グループ2:AND(H2>=2,I2=8)

2番目のANDグループは、根音省略があり、かつ第2転回形以降である」という、非常に特殊なケースを捉えるための条件です。

  • H2>=2: [転]列が2以上、つまり第2または第3転回形であることを判定します。
  • I2=8: [根省]列が8であり、根音省略が行われていることを判定します。
根音省略、転回形の説明

【ロジック解説】

ここで最も重要なのは、H2>=2という条件です。

なぜ第1転回形(H2=1)は除外されるのでしょうか?

それは、根音省略が行われた場合、その和音の最低音は必然的に第3音となるため、その状態を「新たな基本形」と見なすからです。

例えば、G9の根音を省略した和音5918(根音がないので必然的に第1転回形になる)は、Bm7(♭5)として解釈されます。この状態が、この和音の基本形です。

したがって、Bm7(♭5)/Dのように、さらに転回して第5音が最低音になる第2転回形以降で、初めてオンコード表記(スラッシュ)が必要となるのです。

この厳密なルールを、この条件式が表現しています。

STEP2:オンコードの「ベース音名」を自動表示するロジックを解明する!

スラッシュの表示条件が確定しました。

次はいよいよ、そのスラッシュの後に続く「ベース音名」を導出する、おそらくこのシリーズで最も複雑な数式の解剖です。

「音階表の縦のライン」がExcelに「最低音」を教える

AF列(オンコードベース音)に記述する数式全体

DB_山本式和音シートのAF2セルに、以下の数式を入力します。

=IF(AE2=”/“,INDEX(INDIRECT(C2&IF(J2=””,”_dur”,”_moll”)),F2+H2*2+IF(AND(G2=7,H2=2,K2=”+“),-2),IF(E2=“”,1,E2)+IF(AND(G2=7,H2=2,K2=”+“),2)),””)

この数式の骨格は、=IF(AE2=”/”, …, “”)となっており、AE列に/が表示されている場合にのみ、内側のINDEX関数が実行され、ベース音名を導き出す構造です。

Excelでの挙動

INDEX関数の引数全体を理解する

この数式の核心は、INDEX関数がいかにして広大な音階データベースから、たった一つの正しいベース音を抜き出すか、という部分にあります。

その鍵となるのが、第3回記事で作成した各調の「音階表の縦のライン」です。

音階表の各列は、半音階ではなく、長音階和声的短音階といった、音楽的に意味のある音の並びで構成されています。

音階表

INDEX関数は、これから解説する引数によって、その音階表の「何列目の、何行目」の音を取ってくるかを決定します。

引数1: INDIRECT(…)(参照範囲の指定)

INDEX関数の最初の引数は、参照すべき「範囲」を指定します。

ここは、第8回記事で詳細に解説した、INDIRECT関数で動的に音階表を切り替える部分です。

↓↓↓詳しくはこちらを参照ください↓↓↓

C列(キー名)とJ列(借用和音フラグ)の値を基に、C_durc_mollといった、適切な音階表の名前を動的に生成し、INDEX関数に渡します。

引数2: F2+H2*2+IF(AND(G2=7,H2=2,K2=”+”),-2)(行番号の指定)

2番目の引数「行番号」は、ベース音を特定するための、最も巧妙な計算部分です。

F2: [度]列の値

これが、和音の根音(ルート音)が、音階表の何行目にあるかを示す基本位置となります。

H2*2

ここが、転回形による行のオフセットを計算する核心部です。

[転]列であるH2の値に2を掛けています。これは、音階表の「縦のライン」を「2つ下、4つ下、6つ下…」と移動することを意味します。

例えば、第1転回形(H2=1)なら+2で「2つ下の音」、つまり和音の第3音を参照します。

音階表での転回形の動き

第2転回形(H2=2)なら+4で「4つ下の音」、つまり第5音を参照します。

音階表での第2転回形の動き

このように、音階表の構造そのものを利用して、転回後のベース音の相対位置を導き出しているのです。

IF(AND(G2=7,H2=2,K2=”+”),-2):

これは、572+C durであればG7(#5)/D#」のような、ごく特殊な和音に対応するための例外処理です。

この条件が満たされた場合に行番号を-2することで、音階表の特殊な位置にある変化音(この場合はD#)をピンポイントで参照しにいきます。

特殊なケース

引数3: IF(E2=””,1,E2)+IF(…)(列番号の指定)

3番目の引数「列番号」は、どの度数の音階列を参照するかを決定します。

IF(E2=””,1,E2)

[調]列であるE2が空白なら1列目、数値が入っていれば(セカンダリードミナントの場合など)、その数値に応じたを参照します。

IF(AND(G2=7,H2=2,K2=”+”),2)

これも、上記の572+のための例外処理です。

この条件が満たされた場合に列番号を+2します。先ほどの行番号の-2と、この列番号の+2が同時に作用することで、基準セルから斜め方向にジャンプするように、目的の変化音のセルを正確に参照するのです。

音階表と数式では表示が困難なケース

例えば、C durにおいて5572+は「D7(♯5)/A♯」と表示されなければなりません。

しかし、C_durと同主単調であるc_mollの音階表の中に、A♯の音は存在しません。

このような場合、無理に複雑な数式を組むことを避け、AK列にコードネームを手入力します。

たった1つのコードネームのために、複雑な数式を組み込むのは効率が悪いと判断しています。
(殆ど使用しませんが、定義はしないといけない和音です。)

まとめ:和音の「最低音」を完全に制御

今回の記事では、山本式和音番号システムにおける、オンコード(スラッシュ記号とベース音名)を自動表示させる、非常に精緻なロジックを徹底的に解説しました。

AE列のスラッシュ表示における厳密な条件設定、そしてAF列のベース音導出におけるINDEXINDIRECTの連携、特にH2*2という計算が音階表の構造を巧みに利用した相対位置計算であることなど、システムの設計思想の奥深さを理解いただけたかと思います。

さて、これでコードネームの主要な構成要素は、ほぼ出揃いました。

次回の記事では、いよいよ、山本式和音番号におけるn, i, f, gといった特殊和音に焦点を当て、それらをデータベースに登録し、最終的なコードネームに反映させる方法を解説します。

それが終われば、いよいよグランドフィナーレ、全要素を結合する最終工程です。

お楽しみに!

<続く>

タイトルとURLをコピーしました