連分数を使用して、周波数間の整数比を特定の精度で生成し、誤差 (整数比と実際の比との差) を生成しています。だから私は次のようなものになります:
101 Hz で 200 Hz = 1:2 + 0.0005
61 Hz で 92 Hz = 2:3 - 0.0036
しかし、これらのうちどれが他のものよりも不協和音になるかを実際に判断する際に問題が発生しました。最初は数字が小さいほど良いと思っていましたが、1:51 のようなものは、他の音より 51 オクターブ高い周波数なので、あまり不協和音ではないでしょう。悲鳴を上げるような、耳から出血するピッチかもしれませんが、不協和音はないと思います。
構成要素と比較した比率の両側の積に何らかの関係があるに違いないと私には思えます。1 * 51 = 51 で、片側からは「あまり上がりません」。2 * 3 = 6、これは 1:51 よりも高い不協和音を示していると思います。しかし、この感覚を実際の数値に変換する必要があるので、5:7 と 3:8、またはその他の組み合わせを比較できます。
そして、どうすればこれにエラーを組み込むことができますか? 確かに、1:2 + 0 は 1:2 + 1 よりも不協和が少なくなります。上記の整数比で機能するアルゴリズムを周波数自体に直接適用する方が簡単でしょうか? または、エラーのある整数比を使用すると、より簡単な計算が可能になりますか?
編集: 考えてみると、コード内の N 個の周波数の任意のセットに拡張できるアルゴリズムは素晴らしいですが、それははるかに難しいと感じています...
編集2:明確化:私が純粋な正弦波を扱っており、人間の耳の特定のしきい値を無視するか、それらを変数に抽象化していると考えてみましょう。重度の合併症がある場合、それらは無視されます。私の質問は、その場合、アルゴリズムでどのように表現できるかです。