一方、移調を絶対音感的にブログラムで実現すると、
次のようなイメージになるのではないでしょうか?
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つの比を使い分けるより複雑な操作が要求されます。
おそらく、
「絶対音感では移調できない」
あるいは、
「移調は相対音感で行われるもの」
と言う前提で物を考えている人も多いと思いますが、
即興でハモることができる人がいることを考えると、
絶対音感上で移調(ループの中で個々の音に対して
毎回単純に一定比を掛けるだけ)ができたとしても
不思議ではないと思いませんか?
絶対音感保持者が移調唱や移動ド唱を苦手とするのは、
絶対音感が相対音感の邪魔をしているからではなく、
「絶対音感上で実現している」
からではないでしょうか?
関連記事
(其の十一) (其の十二) (其の十三) (其の十四) (其の十五)