https://github.com/ryood/ArduinoPyunPyun/tree/master/Arduino/PyunPyunNo2
パソコンを新調して
波形を録画するのと同時に録音する方法がわからなくなったので今回は音無しだ
サイン波→三角波→ノコギリ波(上昇)→ノコギリ波(下降)→矩形波と
基本波形を変更
LFOの位相変調でまた同じように基本波形を揺らしている
2つほどわからないことがあった
ソースのコメントに書いてあるが、LFOの演算を分周しているところで比較対象が
浮動小数点少数ならちゃんと動くんだが、整数にするとダメっぽい
SAMPLE_CLOCK / LFO_CLOCK
は、#defineの定義にしたがって
5.0
になるので、即値で「5.0」にするとOK
なのに「5」だとアウト
全く動かないわけではなくてブチブチノイズが入る
なんなんだこれは?
シリアル通信とかLCDへの出力はそれなりにwaitがかかるので
Timer割り込み中のprintfデバッグはしにくい
いずれまじめにデバッグすることにする(予定)
もう一つは位相変調の係数だ
前回は変調の値をマイナスにするとNGっぽいと書いたが(http://dad8893.blogspot.jp/2014/07/dds.html)
マイナスにふられてる値でもなんとなく大丈夫そうだ
理屈としては時間をさかのぼることになるが
逆に面白いノイズとなっている気がする
これもちゃんと調べないといかんな
5.0と5問題
返信削除tickがfloat値ならなんとなく推察できるのですがuint16ですからね。
コンパイラの問題か?
if文の処理系で、右辺左辺両方float化してから比較なんてやっぢまってるのかな。
故に判断処理が少し遅くなってノイズ乗るとか。
バイナリを逆アセンブルするとか、マシン語でどう処理しているかを覗くとなにかわかるかも。それもまたものっそ手間ですが。
ArduinoのIDEは途中経過を残さないんですよ
返信削除それゆえに初心者でも気軽に扱えるという
調べればどっかにあると思うんですが
プラグインを入れればAtmel StudioでもArduinoを扱えるみたいなので
そのうち調べてみます