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

「絶対音感の終焉」

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

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

音感の正体

 

一方、移調を絶対音感的にブログラムで実現すると、
次のようなイメージになるのではないでしょうか?

const 基本周波数 = 音名「C」; //書き換え不可
var 固定ド = [ ]; //音律(周波数比)を格納

for(i = 0; i < 固定ド.length; i++){
 周波数[i] = 基本周波数 * (固定ド[i] * 9/8);
}

前回の相対音感的なプログラムとの決定的な違いは、
基本周波数が定数で定義されているため、

「基本周波数自体を9/8倍することができない」

結果的に、

「ループの中で個々の音に対して毎回9/8倍する」

ことになりますが、これがいわゆる

「『ド』を『レ』に、『レ』を『ミ』にずらす」

と言う感覚を生じさせているのではないでしょうか?

相対音感であれば最初に基本周波数を操作するだけで、
ループの中で毎回操作する必要はありません。

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

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

 

しかし、相対音感でもループの中で個々の音をずらす
操作を必要とする処理があります。

for(i = 0; i < 移動ド.length; i++){
 if(…){
  周波数[i] = 基本周波数 * (移動ド[i] * 5/4);
 }else{
  周波数[i] = 基本周波数 * (移動ド[i] * 6/5);
 }
}

それは「ハモリ」です。

しかもハモリでは単純に一定比を掛けるだけではなく、
例えば3度のハモリであれば条件によって、

「5/4(長3度)と6/5(短3度)」

2つの比を使い分けるより複雑な操作が要求されます。

 

おそらく、

絶対音感では移調できない」

あるいは、

「移調は相対音感で行われるもの」

と言う前提で物を考えている人も多いと思いますが、
即興でハモることができる人がいることを考えると、
絶対音感上で移調(ループの中で個々の音に対して
毎回単純に一定比を掛けるだけ)ができたとしても
不思議ではないと思いませんか?

絶対音感保持者が移調唱や移動ド唱を苦手とするのは、
絶対音感が相対音感の邪魔をしているからではなく、

絶対音感上で実現している」

からではないでしょうか?

(次回に続く・・・)

 

関連記事

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

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

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

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

(其の二一)