teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

意図通りの音を出す方法

2017/05/23 01:16

投稿

ozwk
ozwk

スコア13553

answer CHANGED
@@ -18,3 +18,8 @@
18
18
  t=Tのとき
19
19
  2*fe-f0 = 2*443 - 883 =0となります。
20
20
 
21
+ 逆に、意図通りの周波数変化:`f(t)`となる音を出すには、
22
+ `f(t)`の積分`F(t)`を計算して、
23
+ `sin(2π*F(t))`とすれば良いことがわかります
24
+
25
+

1

瞬時周波数の求め方

2017/05/23 01:16

投稿

ozwk
ozwk

スコア13553

answer CHANGED
@@ -1,2 +1,20 @@
1
1
  bufを書き出してみました(図は最後の方だけ)
2
- ![イメージ説明](d1d8f2300c51cef1382fc2257efc6cf3.png)
2
+ ![イメージ説明](d1d8f2300c51cef1382fc2257efc6cf3.png)
3
+
4
+ これ見ればわかるように最後の方で周波数が0になります。
5
+
6
+ ということは、そもそも根本的に、
7
+ 質問文にあるようなアルゴリズムで886から443Hzに変化する音は作れません。
8
+
9
+ というのも、音の瞬間的な周波数(瞬時周波数)は音の波形が
10
+ `sin(2π*φ(t))`で表せるとき、
11
+ `dφ/dt`で表せます。
12
+
13
+ 単純に、`sin(2π*f(t)*t)`だから`f(t)`が今の周波数になるわけじゃないです。
14
+
15
+ これに基づいて計算すると、
16
+ 今回の波形の瞬時周波数は
17
+ `fs + 2*(fe-fs)*t/T`となり、(t=0~T)
18
+ t=Tのとき
19
+ 2*fe-f0 = 2*443 - 883 =0となります。
20
+