数式での翻訳 |
---|
調\(N\)と階名\(n\)に対し、 \[ \textrm{Fifth}_{N,n} = (\textrm{OnMeiTable}(N,n+2i))_{i=0}^{2} \] と置きます。\(n,n+2,n+4 \in \textrm{KaiMei}\)が互いに異なることから\(\textrm{Fifth}_{N,n} \in \textrm{SaWaOn}\)となります。\(\textrm{Fifth}_{N,n}\)の同値類である\(3\)和音を\(\overline{\textrm{Fifth}}_{N,n}\)と置きます。
\(3\)和音\(H\)が協和音であるとは、\(H = \overline{\textrm{Fifth}}_{N,n}\)かつ\(n \neq \textrm{VII}\)を満たす調\(N\)と階名\(n\)が存在するということです。この時、\(H\)は調\(N\)における協和音であると言います。協和音全体のなす部分集合を\(\textrm{KyouWaOn} \subset \overline{\textrm{SanWaOn}}\)と置きます。
\(H\)が協和音の時、\(H = \overline{\textrm{Fifth}}_{N,n}\)かつ\(n \neq \textrm{VII}\)を満たす調\(N\)と階名\(n\)は一意ではありません。実際、\((\textrm{Do} \textrm{ChouOnKai},\textrm{I}) \neq (\textrm{So} \textrm{ChouOnKai},\textrm{IV})\)である一方で\(\overline{\textrm{Fifth}}_{\textrm{Do} \textrm{ChouOnKai},\textrm{I}} = \overline{\textrm{Fifth}}_{\textrm{So} \textrm{ChouOnKai},\textrm{IV}}\)となります。その意味で「協和音の調」や「協和音の階名」はill-definedです。一方で調\(N\)を固定した時、\(H\)が調\(N\)における協和音であるならば、\(H = \overline{\textrm{Fifth}}_{N,n}\)かつ\(n \neq \textrm{VII}\)を満たす階名\(n\)が一意に存在します。その意味で、「特定の調における協和音の階名」はwell-definedとなります。ただしここでのwell-defined性は\(3\)和音の記事で解説したような商集合と写像を用いた定式化とはまた少し異なるものなので「その意味で」と断りを入れています。様々なwell-defined性の定式化がいずれも「与えられた論理式で一意に特徴付けが出来る」ということを表現していてよく似た概念であることが納得できれば、同じ「well-defined」という用語で形容したくなる気持ちが分かると思います。
さて、ここからが本題です。協和音に対しその「根音」という概念を定義していきたいと思います。そのためにwell-defined性の新たな定式化を紹介します。集合\(X\)と\(\overline{X}\)と\(Y\)と全射な写像\(\pi \colon X \twoheadrightarrow \overline{X}\)と写像\(f \colon X \to Y\)に対し、\(f\)が\(\pi\)を通じてwell-definedな写像\(\overline{X} \to Y\)を誘導するまたは\(f\)が\(\pi\)を通じて\(\overline{X}\)を経由するとは「写像\(\overline{f} \colon \overline{X} \to Y\)であって以下の条件(*)を満たすものが一意に存在する」ということです。
(*) 任意の\(x \in X\)に対し\(\overline{f}(\pi(x)) = f(x)\)である。
\(f\)が\(\pi\)を通じてwell-definedな写像\(\overline{X} \to Y\)を誘導することは「任意の\((x_1,x_2) \in X^2\)に対し、\(\pi(x_1) = \pi(x_2)\)ならば\(f(x_1) = f(x_2)\)である」という単純な条件と同値であるため、数学においてはwell-definedな写像を誘導することを証明する際には実際に写像の定義を書く代わりにこちらの条件を確認することが多いです。
今回の定式化は、\(3\)和音の記事で紹介した2つのwell-defined性の共通の拡張となっています。実際、集合\(X\)と\(Y\)と写像\(f \colon X \to Y\)と\(X\)上の同値関係\(\approx\)に対し、標準射影\(X \twoheadrightarrow X/{\approx}\)を\(\pi\)と置くと、\(3\)和音の記事の意味で\(f\)がwell-definedな写像\(X/{\approx} \to Y\)を誘導することと先程改めて定式化した意味で\(f\)が\(\pi\)を通じてwell-definedな写像\(X/{\approx} \to Y\)を誘導することが同値となります。また集合\(X\)と\(Y\)と\(I\)と写像\(f \colon X \times I \to Y\)と\(X\)上の同値関係\(\approx\)に対し、標準射影\(X \times I \twoheadrightarrow X/{\approx} \times I\)を\(\pi\)と置くと、\(3\)和音の記事の意味で\(f\)がwell-definedな写像\(X/{\approx} \times I \to Y\)を誘導することと先程改めて定式化した意味で\(f\)が\(\pi\)を通じてwell-definedな写像\(X/{\approx} \times I \to Y\)を誘導することが同値となります。
さて\(3\)和音の記事で述べたように、写像\(\textrm{GetOnMei} \colon \textrm{SanWaOn} \times \{0,1,2\} \to \textrm{OnMei}\)はwell-definedな写像\(\overline{\textrm{SanWaOn}} \times \{0,1,2\} \to \textrm{OnMei}\)を誘導しません。上の用語に直すと、\(\textrm{GetOnMei}\)は標準射影を通じて\(\overline{\textrm{SanWaOn}} \times \{0,1,2\}\)を経由しない、ということになります。一方で写像 \[ \begin{align} (\textrm{Chou} \times (\textrm{KaiMei} \setminus \{\textrm{VII}\})) \times \{0,1,2\} & \to \textrm{OnMei} \\
((N,n),i) & \mapsto \textrm{GetOnMei}(\textrm{Fifth}_{N,n},i) \end{align} \] は全射 \[ \begin{align} (\textrm{Chou} \times (\textrm{KaiMei} \setminus \{\textrm{VII}\})) \times \{0,1,2\} & \twoheadrightarrow \textrm{KyouWaOn} \times \{0,1,2\} \\
((N,n),i) & \mapsto (\overline{\textrm{Fifth}}_{N,n},i) \end{align} \] を通じて\(\textrm{KyouWaOn} \times \{0,1,2\}\)を経由します。何故なら、協和音\(H\)が\(n \neq \textrm{VII}\)を満たす調\(N\)と階名\(n\)を用いて\(\overline{\textrm{Fifth}}_{N,n}\)と表せる時、\(H\)の代表元\(\textrm{Fifth}_{N,n}\)は(\(H\)から一意に定まらない\(N\)と\(n\)を使うことなく\(H\)のみの情報を用いて)「\(H\)の代表元\((N_0,N_1,N_2)\)であって、\(N_0 = \textrm{GetOnMei}(P_0)\)かつ\(N_1 = \textrm{GetOnMei}(P_1)\)かつ\(N_2 = \textrm{GetOnMei}(P_2)\)かつ\(\textrm{GetNoteNumber}(P_0) < \textrm{GetNoteNumber}(P_2)\)かつ\(P_0\)と\(P_1\)の音度と\(P_1\)と\(P_2\)の音度が\(3\)であるようなピッチ\(P_0\)と\(P_1\)と\(P_2\)が存在するもの」と特徴付けることが出来るからです。ここで\(H\)から一意に特徴付けられないピッチの\(3\)つ組\((P_0,P_1,P_2)\)を用いてしまっているように見えますが、量化子と呼ばれる構文「任意の」または「存在する」で束縛されている変数に関しては、一意性がなくても最終的な論理式に自由変数として出現しないので用いても構いません。こうして誘導されたwell-definedな写像 \[ \textrm{KyouWaOn} \times \{0,1,2\} \to \textrm{OnMei} \] を\(\textrm{GetOnMei}\)とオーバーロードします。協和音\(H\)に対し、\(\textrm{GetOnMei}(H,0)\)を\(H\)の根音と呼び、\(\textrm{GetOnMei}(H,1)\)を\(H\)の第三音と呼び、\(\textrm{GetOnMei}(H,2)\)を\(H\)の第五音と呼びます。
\(\textrm{GetOnMei} \colon \textrm{SanWaOn} \times \{0,1,2\} \to \textrm{OnMei}\)が標準射影を通じて\(\overline{\textrm{SanWaOn}} \times \{0,1,2\}\)を経由しないという意味で「\(3\)和音の\(1\)番目の音名」等はill-definedであった一方で、協和音のみに絞ることで「\(1\)番目の音名」等の代わりとなる概念として根音等の概念を自然に定義することができました。これらを厳密に定義して解説したいがために、長々とwell-defined性に関する説明を行っていたわけです。
C++での宣言 |
---|
協和音のクラスおよび関係する関数たちを以下のように宣言します。
class KyouWaOn :
public SanWaOn
{
public:
inline KyouWaOn( const Chou& N , const KaiMei& n ) noexcept;
inline bool IsValid() const noexcept;
inline const OnMei& GetNeOn() const noexcept;
inline const OnMei& GetDaiSanOn() const noexcept;
inline const OnMei& GetDaiGoOn() const noexcept;
};
inline bool operator==( const KyouWaOn& H1 , const KyouWaOn& H2 ) noexcept;
inline bool operator!=( const KyouWaOn& H1 , const KyouWaOn& H2 ) noexcept;
C++での定義 |
---|
実際の実装例についてはこちらをご覧下さい。実装においては以下の仕様を要請します。
inline KyouWaOn::KyouWaOn( const Chou& N , const KaiMei& n ) noexcept
はメンバ初期化子SanWaOn( N.OnMeiTable( n ) , N.OnMeiTable( n + 2 ) , N.OnMeiTable( n + 4 ) )
で定める。inline const bool& KyouWaOn::IsValid() const noexcept
はreturn OnDo( Pitch( GetOnMei( 0 ) , 0 ) , Pitch( GetOnMei( 2 ) , 1 ) ) != OnDo( Pitch( Ti() , 0 ) , Pitch( Fa() , 1 ) );
で定める。inline const OnMei& KyouWaOn::GetNeOn() const noexcept
はreturn GetOnMei( 0 )
で定める。inline const OnMei& KyouWaOn::GetDaiSanOn() const noexcept
はreturn GetOnMei( 1 )
で定める。inline const OnMei& KyouWaOn::GetDaiGoOn() const noexcept
はreturn GetOnMei( 2 )
で定める。bool operator==( const KyouWaOn& H1 , const KyouWaOn& H2 ) noexcept
はH1.m_N0 == H2.m_N0
かつH1.m_N1 == H2.m_N1
かつH1.m_N2 == H2.m_N2
であることとtrue
を返すことが同値である。inline bool operator!=( const KyouWaOn& H1 , const KyouWaOn& H2 ) noexcept
はreturn !( H1 == H2 )
で定める。