コンマ基底
コンマ基底はレギュラーテンペラメントを特徴づける線形独立なコンマのリストである。
例えば、7リミットミーントーンは 225/224、126/125、81/80 をテンパーアウトするが、これらのうち2つがあれば残り1個は得られる((225/224)*(126/125)=(81/80))。これはつまり、3個中2個のコンマが消され(0 セントにマップされ)るなら残り1個も必然的に消えることになる。したがって、3個中2個を示せば十分である。なのでミーントーンのコンマ基底を (81/80, 225/224) などと書く。またはモンゾを並べて [[-4 4 -1 0⟩, [-5 2 2 -1⟩] という形(列ベクトルを並べて表した行列ともみなせる)とも書ける。便宜上周波数比の形で書くことが多い。(どの2個を取り出せばよいのかという観点で)様々な標準形がテンペラメントの識別子のために開発されている。
数学的には、これはテンペラメント(線形写像)の零空間(核)の基底である。n 個の線形独立のベクトルで構成され、ここで n はnullityである。各ベクトルはそれぞれテンパーアウトされるコンマを表している。零空間は写像の定義域の部分群をなしていて、基底のベクトルの任意の組み合わせ(線型結合)が同様にテンパーアウトされている。
マッピングとの関係
コンマ基底はテンペラメントのマッピング行列の双対と考えられる(ヴァルとモンゾの双対関係と似て…いるか?双対空間が舞台だとしてもそのものではなく双対ベクトル空間 #商空間と零化域あたり?)。テンペラメントはマッピングまたはコンマ基底により特定される。
行列の零空間を求める機能が多くの数学ライブラリで用意されている。零空間が求まればコンマ基底が得られる。零空間を手計算で求める方法については、en:Dave Keenan & Douglas Blumeyer's guide to RTT/Exploring temperaments #Nullspaceを参照のこと。
この操作の逆、つまりコンマ基底からマッピング行列への変換を行いたい場合、同じ方法が使える。
Sageなどいくつかの数学ライブラリは、両方向の機能を提供している。Sageの場合、マッピングからコンマ基底への変換は left_kernel()、コンマ基底からマッピングへの変換は right_kernel() を使う。一方でWolfram Languageの場合、Nullspace[] はマッピングに対して働くように設計されていて、コンマ基底から変換したい場合、コンマ基底をマッピングであるかのように転置してから Nullspace[] に通し、結果を転置し直す必要がある。
細かいことだが、上三角行列を用いる流儀のライブラリ上でこの転置テクニックを使うと、出てくるマッピング行列が下三角行列(右上が0)になる場合がある。これはマッピング行列としては見慣れない形で、基本的に左下が0、1番左の列は1番上以外0になる(すると1番目のジェネレーターがオクターブまたはその等分になる)ほうが解釈しやすい。まあライブラリを使っているならそのままエルミート標準形などに変換すればよいのだが、別の対策としては転置ではなくanti-transpose[定訳なし](右上と左下を入れ替えるのではなく、右下と左上を入れ替える、あるいは、行列を転置しさらに180度回す)を用いることで0を左下に集めることができる。