電音の工場ブログ

趣味の電子工作を中心としたブログです.音モノの工作が多いです.

当ブログは…

一日が過ぎるのが速い

昨日はちょっと早く職場を出て懸案のポルタメントの検討を進めようと考えていた。あのプロジェクトが場所取り&フン詰まりで他が進まないのである。

意気揚々と家に帰ったら、家族が風邪で倒れていた。ということで火事もとい家事を少々こなして一日が終わった。

8pin AVR LFO 机上検討1

最近、開発ネタ・妄想がどんどんと増えている。が、まったくこれっぽちも全然実装が追いついていない。ネタ100個のうち実現しているのが1、2個って感じ。

id:Chuck:20060808:p1 で挙げた AVR LFO もその実現していないもののひとつ。半年ぶりに見直したらアルゴリズムを忘れていた。実装はもう3ヶ月先かもしれないが、またアルゴリズムを忘れてはなんなのでメモ。このアルゴリズム*1EGを作るときにも使えるかもしれない。

前提
  • ATtiny45を使用し、64MHzのPWM*2でのLFO出力2系統
    • システムクロックは16MHzが使える
  • コントロールは周波数と位相
    • 片系統の周波数を決め、もうひとつはテーブル参照位相をずらしてreadするだけ
    • コントロールを取得するA/D変換は10bit
  • LFO波形は1周期 256ポイントのテーブルを引く
  • LFOそのものに関しては、
    • レンジとして16オクターブ(出来高で良い)
    • 周波数が低いところでは解像度が粗くてよい

システムクロックが16MHzなので、仮に256ポイントのテーブルをぶん回すと、\frac{16M}{256} = 62.5 [kHz]

256ckごとに割込んでテーブルポインタを更新する場合だと、\frac{16M}{256 \times 256} \simeq 244 [Hz]

512ckごとだと、\frac{16M}{256 \times 512} \simeq 122 [Hz]

1024ckごとだと、\frac{16M}{256 \times 1024} \simeq 61 [Hz]

これを式にすると、f = \frac{16M}{256 \times 256 \times n}

となる。以下に n = 2^i  (i=0,1,2,...,15)となる nf の関係を表にする。

i n f[Hz] 1/f[sec]
0 1 244
1 2 122
2 4 61.0
3 8 30.5
13 8192 0.0298 33.6
14 16384 0.0149 67.1
15 32768 0.00745 134

(8pin AVR LFO 机上検討2へ続く)