読者です 読者をやめる 読者になる 読者になる

「絶対音感の終焉」

のんびり気ままにゴーイングマイウェイ ~Blog by 川本零~

絶対音感と相対音感のアルゴリズムを考える(其の八)

音感の正体

 

移調の説明において、

「音程をそのままに…」

と言った表現をよく見掛けることがありますが、
そもそも、

「具体的にどのような操作」

をしたら音程をそのままにできるのでしょうか?

例えばキーを1音上げるには、

「周波数を全体的に1音分高くする」

必要がありますが、周波数を1音分高くするには、

「周波数を全体的に9/8倍する」

必要があります(平均律なら2の6乗根≒1.12倍)。

 

この操作を相対音感的にプログラムで実現すると、
次のようなイメージになります。

var 基本周波数; //書き換え可
var 移動ド = [ ]; //音律(周波数比)を格納

基本周波数 = 原曲キー * 9/8;
for(i = 0; i < 移動ド.length; i++){
 周波数[i] = 基本周波数 * 移動ド[i];
}

実際には自分で原曲キーを9/8倍するのではなく、
原曲キーを9/8倍した値が外部からセットされる、
いわゆる、

「基準音をもらう」

ことになりますが、ここでのポイントは、

基本周波数 = ○○;

の部分で基本周波数に原曲キーがセットされようが
移調されたキーがセットされようが、

「後続の処理は全く変わらない」

結果的に9/8倍すると言う操作が、

「ループの中で個々の音に対して毎回発生」

するのではなく、

「ループの前で基本周波数に対して1回発生」

するだけで済みます。

 

相対音感では移調の際、

「音程がそのままになるような操作、計算」

が行われていると言うよりも、もともと

「自然と音程がそのままになるような仕組み」

で音が取られている、だから最初に基本周波数に
移調されたキーをセットするだけであとは、

「原曲キーの時と同じ感覚」

で容易に音が取れるのではないでしょうか?

(次回に続く・・・)

 

関連記事

(其の一) (其の二) (其の三) (其の四) (其の五)

(其の六) (其の七) (其の八) (其の九) (其の十)

(其の十一) (其の十二) (其の十三) (其の十四) (其の十五)

(其の十六) (其の十七) (其の十八) (其の十九) (其の二十)

(其の二一)