「絶対音感の終焉」

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

17/09/20 「ドレミを探そう~一風変わったキーボード(解説編其の一)」
17/09/13 「ドレミを探そう~一風変わったキーボード(純正律編)」
17/09/06 「絶対音感テスト アラカルト(難易度★~★★★★★)」
17/08/30 「40秒でできる絶対音感テスト(ランダム聴音) 機能追加のお知らせ(8/30)」
17/08/23 「40秒でできる絶対音感テスト(ランダム聴音)」
17/08/16 「50秒でできる絶対音感テスト(無調旋律)」
17/08/09 「たとえばこんな相対音感テスト~転回和音当て(解説編)」
17/08/02 「たとえばこんな相対音感テスト~転回和音当て 機能追加のお知らせ(8/2)」
17/07/26 「たとえばこんな相対音感テスト~転回和音当て 機能追加のお知らせ(7/26)」
17/07/19 「たとえばこんな相対音感テスト~転回和音当て」
17/07/12 「たとえばこんな相対音感テスト~音律当て(解説編)」
17/07/05 「たとえばこんな相対音感テスト~音律当て(長音階)」
17/06/28 「たとえばこんな相対音感テスト~音律当て(長三和音)」
17/06/21 「相対音感と因数分解~調は共通因数、移動ドは…(其の五)」
17/06/14 「相対音感と因数分解~調は共通因数、移動ドは…(其の四)」
17/06/07 「相対音感と因数分解~調は共通因数、移動ドは…(其の三)」
17/05/31 「相対音感と因数分解~調は共通因数、移動ドは…(其の二)」
17/05/24 「相対音感と因数分解~調は共通因数、移動ドは…(其の一)」
16/09/18 「Web Audio API版 絶対音感&相対音感アプリ メニュー」

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

 

移調の説明において、

「音程をそのままに…」

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

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

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

例えばキーを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回発生」

するだけで済みます。

 

相対音感では移調の際、

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

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

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

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

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

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

(次回に続く・・・)

 

関連記事

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

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

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

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

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