回答編集履歴
1
訂正:連続性という表現を削除
answer
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
原因は位相の求め方にあります。
|
2
2
|
|
3
|
-
本件ではサンプルごとになだらかに周波数を変えようとしていますね。このときある瞬間の周波数は直前の位相との位相差により決まります。ところが質問コードでは隣り合ったサンプルの位相に
|
3
|
+
本件ではサンプルごとになだらかに周波数を変えようとしていますね。このときある瞬間の周波数は直前の位相との位相差により決まります。ところが質問コードでは隣り合ったサンプルの位相の差は期待した周波数になりません。そのため意図した周波数とずれた周波数の音になってしまうのです。
|
4
4
|
|
5
5
|
`y = sin(2 * M_PI * freq * t);`
|
6
6
|
|
7
7
|
で波形を求めるためには条件が必要で、その条件はこの式を用いる期間で「**周波数が不変でt=0の時の位相が2πの倍数**」であることです。
|
8
8
|
|
9
|
-
以下のようにするとサンプル間の位相
|
9
|
+
以下のようにするとサンプル間の位相差がi番目のサンプルの周波数に従った値になるため期待通りの結果になります。
|
10
10
|
|
11
11
|
```C
|
12
12
|
...
|