電音の工場ブログ

当ブログは…

自作エフェクターシンセサイザ製作のネタや開発覚え書きなど、筆者の電音活動を記録しています。お探しの記事が見つからない方は、検索カテゴリ一覧をご利用ください。

スパマーが来訪すると、ときどきコメントをはてなユーザのみに絞ったり開放したりすることがあります。

2007-03-06

一日が過ぎるのが速い

|  一日が過ぎるのが速い - 電音の工場ブログ を含むブックマーク はてなブックマーク -  一日が過ぎるのが速い - 電音の工場ブログ  一日が過ぎるのが速い - 電音の工場ブログ のブックマークコメント

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

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

8pin AVR LFO 机上検討1

| 8pin AVR LFO 机上検討1 - 電音の工場ブログ を含むブックマーク はてなブックマーク - 8pin AVR LFO 机上検討1 - 電音の工場ブログ 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]
01244
12122
2461.0
3830.5
1381920.029833.6
14163840.014967.1
15327680.00745134

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

*1:アルゴリズムそのものとマイコン制約や実装上の問題となるべく切り離してメモって置きたいが、なかなか難しいかも。

*2ATtiny45PLLを持っていてPWMのクロックに64MHzを使うことができる。64MHzで8bit PWM時にはPWM周期は250kHz。