Woolyのホームページ
調波極性:
新しい音の関係の捉え方の
"数学的"アイデア
Woolyです。
今回は前回の音律の話(Harmonics Major)とは変わって、音の倍音的な関係(調波関係)についての評価を実際の音声データに対して行う方法についての研究報告で、形式ばっていない研究ノートのような記事です。
数学は使いますが、原理・原則の話というよりは、計算の話です。
これは私自身もまだ整理を続けている内容で、私はこの"調波極性"をある種の人の音の聞こえ方の数学的な表現に使えるのではないかと思っています。ただし実際の音楽理論とのつながりなど、まだ全容が分かっているわけではありません。あくまで1つの計算法を提案するという形になります。
ですが、もし私の方法を面白いと思って自分で計算して使い始めて音楽の研究に活用してくれる方がいらっしゃればと思って今回は公開しました。
数式が分からない方でも倍音的な関係に興味がある方など、最初の方だけでも読んでいただければと思います。🙇
最初は音の+, -の関数としての"調波極性"についての話で、複素数への拡張の話は後半にあります。また、ページの最後にこの記事で紹介した関数を実際に計算できるウェブアプリへのリンクを貼っているので、ぜひご利用ください。
音色の認識(調波融合)
複数の周波数が存在し、特にそれが倍音列に整列している場合にそれらが統合され、1つのピッチとして基本周波数の音高で知覚される現象は調波融合(Harmonic Fusion)と呼ばれているらしい。
実際は複数の音の高さの正弦波が同時に鳴っているとみなせる場合でも、それが基本周波数の音の高さで聞こえて、かつ、”音色が違う”という言葉で表現されるような差異を持って認識されるのだ。
私はこれが音色の仕組みだけでなく、一般の音楽現象との関連があるのではないかと考えている。音楽における”調”には主音や中心的な音の概念があるし、コード理論においても機能の考え方がある(機能はキーによって相対的に変わるので、調性的な概念だ。)それらはもしかすると、調波融合のような複数の周波数を統合する知覚作用との関係があるのでは?
そこでまず、こういうことを考えた:ある周波数スペクトルが与えられたときに、その各周波数で”どれくらいの調波融合が起こっているか”のような量を計算し、調波融合の度合いの周波数のスペクトルを計算することはできるだろうか。
C3の音高にノコギリ波の倍音に対応する音を重ねてみましょう。一体化して聞こえてしまい、個々の音を認識するのが難しくなっていくと思います。
音量 ♫
停止中
基本音:C3(約130.81 Hz)。各倍音は正弦波、相対振幅は 1/n。第1〜16倍音でノコギリ波を近似します。
調波融合の評価(調波極性)
周波数スペクトルについてその実数の強度の関数をとする。私は主に音声波形のフーリエ変換の、振幅の絶対値の2乗の形を利用している。
ここで調波融合のモデルを考えると
ある周波数に対して、その倍音が存在するときにに正の寄与を与える
というものを考えるのは自然だろう。
しかし私はさらに逆の関係についても評価を加えたいと思う。それは
ある周波数に対して、その下方倍音が存在するときにに負の寄与を与える
というものだ。倍音がの倍であるのに対し、下方倍音と呼ばれているものは、の倍に相当する。これは実際前者の逆の場合になっていて、このとき周波数は下方倍音にたいして
なので、は”の”、第次倍音となっているのだ。こういう関係が存在するときは、の方が基本周波数としての評価が高いとし、それでからはがの倍音となる分の評価を差し引くという設計だ。
それで具体的には
に対しての位置に値が存在するとき、の寄与
に対しての位置に値が存在するとき、の寄与
として、
を”調波極性”と呼ぶことにする。理論的にはでもいい(収束する場合)、計算の際は有限で打ち切るのでにしている。
名前を”極性”としたのは、これがすべての周波数について、ある+や-の値を与える関数になっているからで:
正の値が大きいほど調波融合における基本周波数としての評価が高く、他の周波数を自身の倍音として取り込む性質を持つ周波数である。
負の値が大きいほどそれは”倍音側”で、他の周波数に”取り込まれる”側の周波数である。
という捉え方ができる。私は周波数同士の”引力”をイメージする。なんだか、音のクーロンの法則みたいです。
調波融合においては高次倍音は減衰するのが普通である。そこでにはやなどを用いる。私は主にを利用している(すべての倍音を含む波形の代表としてノコギリ波を考えるとその振幅減衰はです、それでに2乗強度を使うのならを使うのが妥当だと思います)。
また今回の式はからの和になっているので、には周波数自体が持つ周波数スペクトルでの値は加算されていない。純粋な他の音との関係性だけを評価する関数となっている。
またついでに、倍音・下方倍音側の和それぞれには
の記号を割り当てておく。倍音=Harmonicsからである。高調波とも呼ばれる。下方倍音はSubharmonics, 分調波とも呼ばれる。
この記号では、
と表せる。
計算してみる
バッハのC major PreludeのmidiをMutopiaから取得し、正弦波で演奏した音源を作成した。
この音源のスペクトルはまず、
表示位置に近づくとブラウザー内で計算します。
このようになっている。これが今回は音声のフーリエ変換の2乗振幅として選んだである(実際に音声に含まれていた音の周波数の分布)。今回は各時刻のSTFT(短時間フーリエ変換、瞬間的なスペクトルを求める方法)を時間全体で平均する方法で音声全体のスペクトルを計算している。周波数軸は対数になっていることに注意。
これの調波極性を計算すると、
表示位置に近づくとブラウザー内で計算します。
こうなっている。元のスペクトルよりも広い音域に値が広がり、左側(低音域)は正の値が多く、右側(中音域~高音域)の方が負の値が多くなったのが分かるだろうか。これはこのの計算そのものの性質で、他の音源でも基本的にはこうなる。
単一の純音の場合を考えるとわかりやすい。周波数に値があるとき、
が成り立つため、各倍音次数でこれが起きて下のような調波極性のグラフとなる。
表示位置に近づくとブラウザー内で計算します。
このように、左側に正の値、右側に負の値が出現していくのだ。通常の音声でもこれが重なってあのようなグラフとなる。
先述の通り、自体には周波数自体の値が入っておらず、調波関係(倍音・下方倍音の存在)のみを評価した関数になっている。しかしそのためもあって、すでに見たように実際に周波数が存在しない領域にも値が広がっている。関係だけを見た仮想的な評価なのだ。ここで本当の意味での調波融合の評価のためには、基本周波数自体の強さも入れた方がいいだろう。そこで例えば
として
とすればよい(値のスケールをとそろえるために正規化している)。これを今回は”調波融合評価”の関数と呼ぶ。これは先ほどの音源ではこういう風な分布になる。
表示位置に近づくとブラウザー内で計算します。
1つ注意してほしいのは、今回私がやっていることは普通の調波融合の評価とは違って、変なことをしている。調波融合の評価は、普通は例えば楽器の音色の基本周波数を推定するために行うものだ。
しかし今回はそれを1つの楽曲の中で利用された音の集計としての意味の時間平均の周波数スペクトルに対して行い、その音の集合の上で調波融合の関係を考えたときにどの周波数が基本周波数として評価できるのか、またその程度が各周波数によってどう変わるのかを見ているのだ。
そういう特徴の観察だと理解した上で、今回の解析条件では、この曲での値が最も大きいのはのようだ。音楽的な音名としてはG(G1付近)に対応している。
オクターブ集計(音名で見る)
音楽的な”調”(キー)は、音高に依存しない。それはオクターブ離れた音に同じ音名を割り当てるような、オクターブ等価性の原理を採用したときに生じる音の捉え方だ。そこでその方向性の評価のためにスペクトルのオクターブ集計を考える。
1オクターブ分の周波数について、そのオクターブ関係にある周波数すべてとの平均(または単に合算)を計算して、1オクターブ上に並べるのだ。オクターブは数学的には2倍なので、その連鎖のすべてということで周波数に対して
kは負の値も含む整数
のすべてのkの周波数の値を参照すればいい。こういう計算で得られる、音名を横軸に持ってきた分布を私は音名分布や音名スペクトルと呼んでいる。音名を12平均律に限定する必要はなく、連続的なオクターブ上での計算が可能である。
実際に計算してみると、先ほどの音源では、まず周波数スペクトルのの値の集計ではこうなる
表示位置に近づくとブラウザー内で計算します。
すでにC majorとしての特徴が見えているので面白いと思う(C D E F G A B)。値の大きさはだいたい曲中でのその音の使用回数に比例する。この曲ではCの音の使用量が実際に多いということのようだ。ただし、調の判定は必ずしもその曲の主音を多く使えばよいというわけではないので注意しておく。またほかの特徴として、Cの次にはGが多く、この曲ではAやBの使用はほかのC majorの音名の使用よりも少ないみたいだ。
ここで、今度は調波極性についてのオクターブ集計の計算を行う。するとこうなっている
表示位置に近づくとブラウザー内で計算します。
こちらを観察するともっと面白いと思う。まず一番大きな値はFへ変わっている。これはおそらくFの第3倍音がCに相当するため、多数のCの寄与でこうなったのだろう。また、C majorのサブドミナントがF majorなので、その寄与もあっただろう。
音名によってプラスとマイナスが分かれている。各12平均律音名の位置から±50 centの範囲で平均すると、
表示位置に近づくとブラウザー内で計算します。
+側:C, F, A#/B♭
-側:C#/D♭, D, D#/E♭, E, F#/G♭, G, G#/A♭, A, B
最初に説明したように、プラスはほかの音を倍音として引き込むような基本周波数側の音であることの程度、マイナスはほかの音に倍音として引き込まれるような倍音側の音であることの程度、を意味する。ただしオクターブ集計しているので通常の意味とは異なり、そういう値が音名というオクターブ族で平均してどんな傾向であったかを示している。
EとGがマイナス側にいるのは特にわかりやすいだろう、Cの第3倍音はGに相当し、第5倍音は平均律位置だと厳密には少しズレるが、Eに相当する。
そして(調波融合評価)はこうなる。
表示位置に近づくとブラウザー内で計算します。
単体のときとあまり変わっていないようにも見えるかもしれないが、例えば調波極性で正の値が大きかったFが大きくなり、DやEの値は低下している。G#/A♭, A, A#/B♭, Bあたりがほぼ同じ値になって平坦化したのも興味深いだろう。
これは曲全体での音の平均のスペクトルを使っているから複数の和音の関係が混ざっているが、もちろん各時刻や、一定の区間で平均したスペクトルについて計算すればその時間範囲でつかわれた音の組み合わせについての調波極性を計算することができる。
楽曲の音声ではなくて、今度はもっと単純な和音の調波極性を調べてみよう。まずC E Gを等振幅で平均律位置に配置した和音の調波極性を見てみる。
表示位置に近づくとブラウザー内で計算します。
今回は等振幅とした影響もあるだろうが、ほぼ第3倍音の寄与で主要ピークが形成されている。プラス側を見ると
C F AつまりFメジャーコード、
マイナス側はD G BつまりGメジャーコード
になっている。これはそのままC E Gの各音の3倍位置(×3と×1/3)が現れただけの結果である。
スペクトル強度を足して調波融合評価を見てみる。
表示位置に近づくとブラウザー内で計算します。
音源はC, E, Gともに等振幅であったが、調波融合評価では倍音側に相当するE, Gの値が少し小さくなって、Cが最大の値を持つ音名となった。このようにして、調波融合評価の関数は調波関係的に基本周波数側にある音がどれなのかをある程度評価することができる。Cメジャーコードはその具体例として分かりやすい結果となった。
また、今の例の和音は等振幅(今回の場合簡単には音量が等しいと考えていい)だったが、実際の楽曲の中では様々な音の存在比率で、また振幅も複数の周波数に広がった形での和音がいろいろ演奏されると思う。こういう一般の和音について調波極性を計算するのが本当は面白いと思っている。12平均律のほかのコードタイプで計算してもいいし、また例えばそれは12平均律に限定される必要はなく、任意の周波数の組み合わせについて実行できる。
ベクトル化
(ここからは調波極性から少し進んだアイデアを紹介します。)
ここまでは、以上の倍音と下方倍音の成分をプラスマイナスで評価する調波極性と、スペクトル強度とそれを合わせた調波融合評価を見てきた。ここで調波的な関係についてのもう一つの面白い視点について話したい。
倍音列の最初の方の音を見てみると
これらは実は
| 比 | ||||||
|---|---|---|---|---|---|---|
| 音名 | ド | ド | ソ | ド | ミ | ソ |
に対応している。C majorならばC C G C E Gである。
オクターブは2倍なので、本質的には
| 比 | |||
|---|---|---|---|
| 音名 | ド | ソ | ミ |
の奇数項が重要である。このように、倍音列は長調に関連している感じがする。
それで下方倍音列を見てみると、面白いことに
は
| 比 | ||||||
|---|---|---|---|---|---|---|
| 音名 | ド | ド | ファ | ド | ラ♭ | ファ |
に対応している。ここで””をドに読み替えると
| 比 | ||||||
|---|---|---|---|---|---|---|
| 音名 | ソ | ソ | ド | ソ | ミ♭ | ド |
に対応する。つまりマイナーコードである。従来の10:12:15の比は, , の部分で一致する。ただしが根音である。
そんな風にして、下方倍音列と短調の関連性がなんとなく示唆される。
そこで、調波極性でこれを評価できないだろうかと考えた。いくつか案があった。列の”1”(実音、の部分)が問題で、倍音列の仲間にするならプラスの符号で、調波融合評価で計算するのが合うが、もしマイナーコード的に見るために下方倍音列の仲間にしたいなら、にマイナスの符号をつけてを計算するという方法もある。調波極性のマイナスの部分がn=2以降の下方倍音列になっているので、をその仲間にするわけである。
それで実際にをCマイナーコードについて計算してみると
表示位置に近づくとブラウザー内で計算します。
このように実際、Gが負の最大となり、下方倍音列の特徴が出る。
しかし、の符号を長調系短調系の判定ごとに変えなければいけないのは少し面倒だと私は考えた。それで、
という複素数を設計してみた。これを”調波極性ベクトル”と呼んでいる。複素数であり、ある種の2次元ベクトルである。
この表現のいいところは、先に提案したの符号を変えて加算する評価の両方の値を含んでいることである。+45°への射影と-45°への射影がそれぞれ
であり、同種の量になっているのだ。射影でなく複素数そのものを見れば、その周波数が倍音列の調波融合寄りなのか、下方倍音列の仲間になるような方向寄りなのかを、その間の評価を含めてみることができる。
Cメジャーについては:
表示位置に近づくとブラウザー内で計算します。
Cマイナーについては:
表示位置に近づくとブラウザー内で計算します。
C major Prelude(Bach)については:
表示位置に近づくとブラウザー内で計算します。
ただし、調波極性ベクトルのままでは落としてしまう部分がある。それは、ある周波数に、倍音列的な調波関係と下方倍音列的な調波関係の両方が存在する場合である。例えばFとGを重ねた和音では、FはCの×側、GはCの×3側にいるため、Cが両方の調波関係を持つことになる。これが調波極性ベクトルでは実部につぶれてしまい、の大きさ(音が実際に存在する量)と混ざってしまうのだ。
そこで次の式を思いついた。
色の三原色のように、複素平面上の角度の3等分割の方向に実際のスペクトル強度, 倍音列的な調波関係項の, 下方倍音列的な調波関係項のを並べた複素数である。実部と虚部に式展開すると実は
となっていて、調波極性ベクトルと同じ(ものを定数倍した)虚部を含んでいるのである!(※)
を+120°の位置、を-120°の位置に配置したため、両者が強い場合にはちょうどベクトルの合成で±180°に近い方向を向くことになる(さらに実部も強いと打ち消されて座標の原点に近づく。)
これを、”調波特性ベクトル”と呼んでいる。音の調波関係的なキャラクターを示す複素数値として使えるのではないかと考えて、私もまだいろいろ実験しているところです。
Cメジャーについては:
表示位置に近づくとブラウザー内で計算します。
Cマイナーについては:
表示位置に近づくとブラウザー内で計算します。
C major Prelude(Bach)については:
表示位置に近づくとブラウザー内で計算します。
あとがき
今回の記事はここで終わりにします。いかがだったでしょうか。調波特性ベクトルについては、
など実はまだまだ話したい内容があったのですが、まだ研究・発見が続いていて体系的にこのベクトルの性質を説明できるほどの内容が組めていないことと、また調波極性の説明だけで割と長いページになってしまったのもあって、今回は思い切って省略してしまいました。
調波極性だけでも新しい概念だったと思うので(調波融合の計算自体は新規性があるわけでもなく、複数の論文やソフトウェアでの実装で扱われているものですが、下方倍音を計算に取り入れたものは少ないようです)、新鮮な感じを受けてもらえたかと思います。
特に、"下方倍音がある意味で倍音列の逆であるというアイデア"は、今回の調波極性の計算以外でも活用していただける発想なのではないでしょうか?
これは下方倍音列を"ある固定された周波数を第n倍音に持つような周波数の列"と捉えることができるという話でもあります。
「下方倍音列は物理的に存在しないから、理論は成り立たない」
という風な捉え方をされてしまうことが多いこの概念ですが、そもそも倍音と、和音の協和の関係自体が、倍音を含まない波である、"正弦波(純音)"でも成り立つ話です。
倍音や下方倍音を周波数間の数的な"関係"として捉えるという見方が意外に一般の認識として広まっていないようで、少し残念に思っています。ですが今回の記事を読んで、今後新しい視点として取り入れてくださる方がいらっしゃれば幸いです。
計算が分からなかった方でもここだけでも持ち帰っていただけたらと思います。
しかし、グラフを見るだけでも、今回は式の紹介くらいしかできませんでしたが調波特性ベクトルの面白さは分かってもらえるのではないでしょうか。上のC major Preludeのグラフでは音によって偏角がかなり変わっていて、それぞれの音の調波関係的な役割の違いが可視化できているのではないかと思います。
もっとも、今回は少ない音源で簡単な例しか示せていません。そこで、皆さんご自身で実験や観察ができるように、ウェブアプリを作ってあります。
簡易的なものとしては、こちら:
基音の知覚・シミュレーター

今回の記事で紹介した関数のグラフを、音声ファイルまたはマイク入力で計算表示することができ、また"コード理論の裏側"では、12平均律の音名の音量バーを上げ下げすることで和音を作り、その調波関係のグラフを見ることができるような機能となっています。
細かいパラメータ変更やグラフ出力がついているものとしては、こちら:
TONAL / WAVE WEB

音声ファイルを読み込ませて調波極性系のグラフを計算できるアプリです。グラフのpng, csvなどの出力に対応しています。グラフの表示方法も複数実装されていて、例えば一つの音高・音名を指定してその調波関係の値を時間波形として並べて見る機能や、複素値の対応する複素平面上に音高・音名の値に対応する曲線を描画する機能などもあります。また、曲のテンポに合わせた四分音符などの時間区間でスペクトル値を平均しての調波関係の連続的な解析など、便利な機能がついています。
ぜひ、自分の好きな和音コードや、曲・自分の作った曲について調波極性を計算してみて新しい発見をしてみてください。
私が目指しているのは人が感じている音の空間を色彩科学の色の空間のように表現できるようにする音の理論を作ることです。実用的な内容にはまだまだ達していないですが、今後も研究を続けていくつもりですので良かったらまたXのアカウントやこのホームページを覗いてみてください。
ご拝読ありがとうございました。Woolyでした。