detamamoruのブログ

興味を持ったことや勉強したことに関して記事を書きます。主に低レイヤー寄りの記事を公開。

Voice changerを作りたくて(4): 正弦波もわからへんから

出田 守です。
このシリーズは、ほとんど何もわからない状況からVoice changerを作る過程の記録です。

環境(私も含めて)

[私について]
算数・数学: 苦手で避けてきた(後悔中)。おそらく中学2年生で止まっている。
プログラミング: 努力中
[開発環境 - PC0]
OS: Windows10 Home 64bit 1903
CPU: Intel Core i5-3470 @ 3.20GHz
Rust: 1.39.0
RAM: 8.00GB
Editor: Vim 8.1.1
Terminal: PowerShell

周期と振動数の関係

周期T

媒質を一回振動させるのにかかる時間を周期といいます。Tと表され、単位はsです。

振動数f

1秒間に媒質が振動する回数を振動数といいます。fと表され、単位はHzです。

関係

周期と振動数について、時間と回数の関係を表すと以下になります。
 \begin{align}
周期T &=> 時間:回数 &= T:1 \\
振動数f &=> 時間:回数 &= 1:f
\end{align}
一定のスピードで振動させている場合この比は変わらないので、
 \begin{align}
T:1 &= 1:f \\
fT &= 1
\end{align}

波の基本式

波長λ

波から波までの長さを波長といいます。波長はλで表されます。波から波なので波の山を目印に、次の山までを波長としてもいいですし、谷を目印にしてもいいですし、それ以外の地点でもいいです。

f:id:detamamoru:20191124160238p:plain
図1: 波長λ

波の速さv

波は、波源から離れる方向に進んでいきます。この時の速さを、波の速さといいます。波の速さはvで表されます。波の移動は、もし媒質に変化がないのであれば等速直線運動をします。
つまり、

波の速さv = \frac{距離}{時間}

波の基本式

2つの波を連続して発生させた場合、1つ目の波は波源から波一つ分進みます。つまり、T秒経つとλm進みます。
このことから、波の速さvは
 \begin{align}
波の速さv &= \frac{距離}{時間}より \\
波の速さv &= \frac{λ}{T}
\end{align}
と表すことができます。
また、振動数と周期の関係の式を利用すると、

T = \frac{1}{f}を代入して \\
波の速さv = fλ
と表すことができます。

# 正弦波
## 波は円運動を横から見たもの?
波源の振動は周期的です。これはばねにおもりを付けて振動させたときと同じ運動だそうです。これを単振動といいます。
さらに、この単振動は、円周上を一定のスピードで回る運動つまり等速円運動を真横から見たものと同じになります。
このことを利用すると波源から時刻t秒後の波の変位を求めることができます。
 \begin{align}
y &= Asinωt \\
A&: 振幅 \\
ω&: 角振動数または角速度 \\
t&: 時刻
\end{align}
物体が一秒間で円周上を回る角度を、角振動数または角速度といいます。角振動数はωで表されます。例えばt秒間で回った角度をθとすると、
 \begin{align}
距離(角度) &= 速さ×時間より \\
θ &= ωt
\end{align}
となります。これを
 \begin{align}
y &= Asinθにθ=ωtを代入すると、\\
y &= Asinωt
\end{align}
となります。
円を一周できる時間を周期Tとすると、さらに式を変形できます。
 \begin{align}
ωT &= 2π \\
ω &= \frac{2π}{T} \\
\end{align}
これをy = Asinωtに代入すると、

y = Asin2π\frac{t}{T}
と表すことができます。
この式は、x=0のとき、つまり波源での波の変位を求めることができます。
任意のx位置にある、波の変位はx=0まで時間を戻してあげることで求めることができます。
時刻tの波は距離xまで波の速さvで移動することを考えると、x=0まで戻すには、時刻tから距離xと波の速さvで求める時刻を引いてあげることで求められます。
 \begin{align}
y &= Asinω(t-\frac{x}{v}) \\
y &= Asin\frac{2π}{T}(t-\frac{x}{v}) \\
y &= Asin2π(\frac{t}{T}-\frac{x}{vT}) \\
波の基本式vT &= λより \\
y &= Asin2π(\frac{t}{T}-\frac{x}{λ})
\end{align}
これが波の関数です。