投稿日: May 30, 2018 8:6:18 AM
学校とかで三角関数苦手だったとか多いと思うけど、あれは使い方を知らされてなくて式だけ覚えるとかいう教え方をしている学校の教育に問題があるので、使い方を知っていると三角関数とか便利で死ぬレベル。本当に便利。
今回またbareAudioで三角関数の出番があったのでついでだから取り上げちゃおう、レッツスタディ!
つまりこういうこと。
距離を座標のXとYで扱うと円が描けるけど、ぶっちゃけ欲しいのはYの変化だけ。
なのでYを取り出す式を使う。
※右下が189度までになってるけど180度までね。直すの大変だから気にしない方向で。
Y = cos(r)
r はラジアン、角度。
なので270度から180度に移動しながらYを得てゆけば綺麗な弧を描く減衰が取得出来るって事ですね。
でも返ってくる値は 0から-1だと思います。ちょっと都合がわるい。
デジタルで音を扱う場合には -1 ~ 1 で扱うから、もしも減衰にこのカーブを使いたいなら 0 ~ 1 にしてやって、サウンドの出力にかけてやる必要がある。ので、式はこうなる。
Y = cos(r) + 1
これで0~1の値がとれるはずだね?
三角関数とかは全部 math モジュールに入ってますので math を使う。
ありがたいことにラジアンを得るためのradiansというファンクションも含まれている。ありがたやありがたや。
ちなみに自分でラジアンを計算する場合。角度 r から ラジアン値 r2を求めるとして。
r2 = r *( π / 180 )
です。
なににしても計算するのはコンピュータですからあんまり難しく考えることはないわけで、こういうもんだって理屈さえ覚えて式さえ解れば着実にコンピュータがやってくれる。便利ですねー。
さて、本当に270度から180度へ移動しながら 1から0の値が取れるか試してみましょう。
270度から180度へ遡って90度分のデータがほしいからコードは次の様になりますよ。
import math as m data = [0.0]*90for i in range(90): data[i] = m.cos(m.radians(270-i))+1
で、データを見てみよう。
こーんな感じ。
実際のデータでは ぴったり1からはじまって、しかしぴったり0っていうわけじゃなくて0.00015230484360873042なんていう値が出ていますが、まあ。あんまり問題は無いと思う・・・多分。しっかり0にするなら91度分動かす必要があるけど、様子見ながら調整かな。
あとは掛け合わせてゆく時間の変化とかを考えないといけないけど、これも多分三角関数がつかえそうだね。
そんな感じで三角関数はサウンドデザインでは欠かせない要素だってことを再確認しながらここで突如終わる。