うなり
ギターの調律で、うなりがなくなるようにします。
うなりが周波数の差であることは経験的にも理解できます。
しかし、何秒かに1回の周波数を聴く能力はないので、聞こえているのは音の高さの差ではありません。
20Hz以下の音は普通聞こえません。
以下に述べるようなことを考えて、それを試してみるプログラムを作りました。
Silverlightアプリケーションで、下図をクリックすると起動します。
-
「Start」をクリックすると、左右のスピーカーから、設定した周波数の音が 5秒間 鳴ります。
-
1秒間のうなりの回数は、周波数の差に等しいので、左右、近い周波数を指定します。
-
初期位相や音量がどう関係するのか試せます。
-
左の波形の図は、2つの周波数のずれを見るものです。先頭の短い時間の波形を描いています。
青が、左のスピーカーから出る音の波形です。
-
右の図は、耳に達するはずの波形です。左右のスピーカに出力している波形の合成波形の1秒分です。
-
周波数は、2から2000Hzの範囲で入力できます。
-
Vol(音量)を左端に寄せるとゼロになり、片側の出力を確認できます。
音の強弱と周波数
100Hz と 105Hz の正弦波を合成して1秒分を描いています。
5回振幅がゼロになり、音の大きさの変化がうなりだと言うことが分かります。
(一方の位相を30°ずらしてあります。)
- # 100Hzと105Hzの正弦波の合成
- t <- seq(0,1,length=1000) # 1秒
- s1 <- sin(2*pi*100*t+(pi/6))# 位相を30度ずらす
- s2 <- sin(2*pi*105*t)
- s <- (s1 + s2) / 2
- plot(t,s,type="l",col="red",xlab="時間(秒)",
- ylab="振幅")
- title("100Hz,105Hz正弦波合成",cex.main=1)
空気の振動は、振幅データで表されますが、この振幅データは音の大きさと、周波数の両方を表しています。
100Hz と 105Hz は、1つの音高(1つの周波数)に聞こえ、うなりを伴うと言うことです。
音階の差程度の周波数差になると、1つの音高ではなく、和音のように独立した音高を認識できるようになります。
この、うなりと、独立した音高に聞こえる場合の差は、わたしには説明が付きませんが、合成波形の様子を上げておきます。
まず、100Hz と 105Hz の正弦波の合成波形の詳細を見ておきます。
図は、100Hz と 105Hz の正弦波の位相が同じ場合の例です。青が100Hz、緑が105Hzです。2つの計の半分を合成波形として赤で描いています。
波形がズレていくにしたがって計は小さな値になっていきます。0.1秒の時点で、100Hzは10回、105Hzは10.5回回転し、位相が反対になり計はゼロになります。それ以降は、増加に転じます。
次に、うなりに聞こえない例を見ます。
左図は、130.81Hz(c) と 164.81Hz(e) の正弦波の合成波形です。(低い方のドとミ)
これも振幅がゼロに近い箇所がありますが、その間隔はうなりの例よりずっと短いことが分かります。
この場合、音の大きさの変化としては認識されません。
音は、同じ大きさでなり続けていて、2つの音が鳴っていると感じます。
|