「PIC AVR 工作室」サイトの日記的なブログです。
サイトに挙げなかった他愛ないことを日記的に書き残してます。
PIC AVR 工作室 ブログ
CALENDAR
2011年2月
日
月
火
水
木
金
土
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
前月
翌月
Entry Archive
2025年01月
2024年12月
2024年11月
2024年10月
2024年09月
2024年08月
2024年07月
2024年06月
2024年05月
2024年04月
2024年03月
2024年02月
2024年01月
2023年12月
2023年11月
2023年10月
2023年09月
2023年08月
2023年07月
2023年06月
2023年05月
2023年04月
2023年03月
2023年02月
2023年01月
2022年12月
2022年11月
2022年10月
2022年09月
2022年08月
2022年07月
2022年06月
2022年05月
2022年04月
2022年03月
2022年02月
2022年01月
2021年12月
2021年11月
2021年10月
2021年09月
2021年08月
2021年07月
2021年06月
2021年05月
2021年04月
2021年03月
2021年02月
2021年01月
2020年12月
2020年11月
2020年10月
2020年09月
2020年08月
2020年07月
2020年06月
2020年05月
2020年04月
2020年03月
2020年02月
2020年01月
2019年12月
2019年11月
2019年10月
2019年09月
2019年08月
2019年07月
2019年06月
2019年05月
2019年04月
2019年03月
2019年02月
2019年01月
2018年12月
2018年11月
2018年10月
2018年09月
2018年08月
2018年07月
2018年06月
2018年05月
2018年04月
2018年03月
2018年02月
2018年01月
2017年12月
2017年11月
2017年10月
2017年09月
2017年08月
2017年07月
2017年06月
2017年05月
2017年04月
2017年03月
2017年02月
2017年01月
2016年12月
2016年11月
2016年10月
2016年09月
2016年08月
2016年07月
2016年06月
2016年05月
2016年04月
2016年03月
2016年02月
2016年01月
2015年12月
2015年11月
2015年10月
2015年09月
2015年08月
2015年07月
2015年06月
2015年05月
2015年04月
2015年03月
2015年02月
2015年01月
2014年12月
2014年11月
2014年10月
2014年09月
2014年08月
2014年07月
2014年06月
2014年05月
2014年04月
2014年03月
2014年02月
2014年01月
2013年12月
2013年11月
2013年10月
2013年09月
2013年08月
2013年07月
2013年06月
2013年05月
2013年04月
2013年03月
2013年02月
2013年01月
2012年12月
2012年11月
2012年10月
2012年09月
2012年08月
2012年07月
2012年06月
2012年05月
2012年04月
2012年03月
2012年02月
2012年01月
2011年12月
2011年11月
2011年10月
2011年09月
2011年08月
2011年07月
2011年06月
2011年05月
2011年04月
2011年03月
2011年02月
2011年01月
2010年12月
2010年11月
2010年10月
2010年09月
2010年08月
2010年07月
2010年06月
2010年05月
2010年04月
2010年03月
2010年02月
2010年01月
2009年12月
2009年11月
2009年10月
2009年09月
2009年08月
2009年07月
2009年06月
2009年05月
2009年04月
2009年03月
2009年02月
2009年01月
2008年12月
2008年11月
2008年10月
2008年09月
2008年08月
2008年07月
2008年06月
2008年05月
2008年04月
2008年03月
2008年02月
2008年01月
2007年12月
2007年11月
Recent Entry
初詣いってきた
振り返り2024
こないだのロボット
ロボット行ってきた
追加で中古ソフト買ってきた
こないだのロボット
ロボット行ってきた
レトロコンボ2グリーンを9Vで試す
SFCのラインヘッドネジ
こないだのロボット
Recent Comment
nekosan/
JYRUSSやってきたメモ
フルタニアン/
JYRUSSやってきたメモ
nekosan/
JYRUSSやってきたメモ
フルタニアン/
JYRUSSやってきたメモ
nekosan/
こないだのロボット
フルタニアン/
こないだのロボット
nekosan/
こないだのロボット
フルタニアン/
こないだのロボット
nekosan0/
レジ袋ホルダーを考える
フルタニアン/
レジ袋ホルダーを考える
Category
ノンジャンル
(2864)
PIC
(47)
AVR
(341)
Arduino
(446)
Raspberry Pi
(194)
mbed
(41)
ARM
(30)
ESP32
(15)
Android
(10)
OPアンプ
(125)
VHDL
(57)
PSoC
(4)
アナログ回路
(110)
クルマ
(127)
rails
(51)
本
(42)
導電塗料
(3)
Fritzing
(41)
Edison
(2)
FFT
(34)
写真
(158)
MIDI
(24)
その他日記
(11)
Python
(57)
3Dプリンタ
(124)
Bookmark
最初はgoo
goo blogトップ
スタッフブログ
My Profile
ブログID
nekosan0
自己紹介
Search
このブログ内で
ウェブ全て
回転因子
FFT
/
2011年02月28日
引き続きFFTをアセンブラフルスクラッチの作戦を継続。
二分法による平方根の開平は目処が立ったので、
次は一つの肝:バタフライ演算1個分の計算処理。
ザックリとi/f仕様をあぶりだしつつ、使用リソース
の試算をしてみたら、マクロ化して全処理をメモリ展開
してしまうとすごい量食いそうなので、ここは大人しく
サブルーチン化しておいた方が安全っぽい。
マクロの方が何かと都合が良いんだけど、仕方ないので
サブルーチン化する方向に。
とりあえず負数の扱いとか一切無視して思いつくまま
コードを書いてみると、1回のサブルーチンコールから
リターンまで30~40クロックといったところ。実際は
この後桁数とか精度とか桁あふれとか色々考えながら
調整しないといけないので、40~50クロック程度と考えて
おけばいいかな。
64点FFTだと、6段階の2点DFTに分けて処理することに
なるので、計算では6段×32回×50クロックとすると
1回のFFTがおよそ9600クロックかな。
これにビットリバーサル処理や平方根算出の処理が
追加されると、10000クロック少々といったところ。
単独で使えば毎秒1600回(@16Mhz)といった感じ。
今回のウケシンセとしては、8パートに分けてFFTを
掛ける予定なので、FFTだけに費やせば毎秒200回
程度の頻度で全パート分のFFT計算が出来るはず。よし。
残りのアプリ要件のロジックしだいだけど、FFTよりは
軽い処理になるだろうから、ADC終了からMIDIデータ出力
まで最短では1/200秒程度の遅れにしかならないはず
なんだけど、MIDIの遅延問題はこれだけじゃないから
厄介。遅延というと…
(1)弦をはじいてからADCするまでの遅延時間
(2)ADCしてからFFT掛けるまでの遅延時間
(3)FFT掛けてからMIDIデータ出力までの遅延時間
(4)MIDI音源が信号を受けてから発音するまでの遅延時間
(5)発音してからADSR制御の振幅が最大になるまでの時間
単純にこれらが直列で積みあがったのが遅延時間に
なると思うんだけど、厄介なのは(2)と(5)。
がんばってナントカできるっていうものじゃない部分。
特に(2)は悩ましかったところ。FFTの処理自体をどれだけ
高速化しても、仮に64点FFTなら64個のデータがそろって
からようやく各周波数ごとのエネルギーが安定して出力される
わけで、1サンプル辺りの時間(サンプル周波数の逆数)×点数
の時間が必ず必要になってしまうということ。
プロセッサの処理速度や計算ロジックとは無関係に、
「一定量のサンプリングデータを取り込む時間が必要」
なわけ。
まぁ、実際は半分くらいのデータがサンプリングできた
時点である程度の情報は取り出せているんだけど、
それをどう踏まえてどう料理するか…。
http://ja.wikipedia.org/wiki/%E3%82%AE%E3%82%BF%E3%83%BC%E3%82%B7%E3%83%B3%E3%82%BB%E3%82%B5%E3%82%A4%E3%82%B6%E3%83%BC
FVCを使っているギターシンセでもその辺の問題は多かれ
少なかれあるみたい。まぁ、やるだけやってみよう。
さて、バタフライ演算がおよそ目処付いたところで、
次はバタフライ演算に与えるデータのことを考える。
まずは回転因子(twiddle factor)。こいつはさすがに
sin、cosを馬鹿正直に計算するわけに行かないので、
あらかじめ定数テーブル化。
この手の定数テーブルはPC上でサクッと作るのが
簡単なので、久々に99basicを使ってみることに。
(久しくスクリプト系言語から離れているので、
perlとかrubyとか候補に挙がらないのが悲しいところ)
BASIC自体は子供のころから染み付いているので、
さすがに殆どhelp見ずにすらすら手が動くんだけど、
いざ実行してみたらおかしな結果に。出力された
ファイルをテキストエディタで開いてみると
奇奇怪怪
な文字列に… うーーーん。
しばらく悩んで思い当たったのは、改行コードの
強制出力処理のところ。
BASICだから、ファイル相手だろうと画面相手だろうと、
print文で出力パラメタ無しにすれば改行してくれる
だろうと思ったらおお間違え。
確かに99basicでも画面出力はそれで改行できるっぽい
んだけど、ファイル相手にパラメタ無しで出力すると
その直前に出力していたものを再出力するみたい。
(例えば、 「print #1」だけみたいな)
仕様?バグ?とりあえず、
print #1,""
って感じで長さゼロの文字列を吐いておけば改行される
みたい。判るまでにえらい時間かかった…
とりあえず、回転因子の定数テーブルは一通り出来たので、
残るはメインディッシュのFFT計算ロジックのところと
ビットリバーサル処理だけだな。
ちょっと前に入手したままになってた
デフレの正体
を
ようやく読み始める。
まだ読み始めて1/4も進んでないんだけど、これまでに会計、
ミクロ経済、マクロ経済…と通り一辺倒のお勉強をした
だけではよく判らなかったもう少し巨視的な、かつ
データに即した視点が得られたのはなかなか。
少し楽観的な印象がないでもないんだけど、オイラが以前
からおぼろげに思っていたような、生産者人口の減少
(言い換えれば消費人口の減少)っていう視点が出てきて、
なんとなく腑に落ちる部分があっていい感じ。
まぁ、本は「答え」じゃなく「視点」を提供してくれれば
いいのだ。模範解答を求めているわけじゃないのだ。
それにしても、目下半分は興味、半分は狐につままれた
ような感覚。
これを読み終わったら次は
超マクロ展望 世界経済の真実
だな。
それにしても、お金持ち高齢者から現役世代への資産
移動を本気でやりたいなら、ある意味簡単なんじゃ
ないかなぁ?
生前贈与の税率を大幅に下げて、一方で遺産相続税を
大幅に上げちゃえばいいんじゃない?時限立法とかで。
と以前考えてみて、そういえばマクロ経済では貯蓄の
総額(国全体での預貯金?)と企業の設備・在庫投資は
一致するという話があったんじゃないかな?
http://ja.wikipedia.org/wiki/%E3%83%9E%E3%82%AF%E3%83%AD%E3%83%90%E3%83%A9%E3%83%B3%E3%82%B9
↑ここか?
そうすると、貯蓄が消費に回った途端に投資にお金が
回らなくなるっていう話になるような…まずくない?
とか、悶々としながら本を読むのが何だかんだ言って
好きです。
コメント (
0
)
goo ブログ
ブログの作成・編集
gooおすすめリンク
おすすめブログ
【あなたはどっち?】クリームシチューをご飯にかける or かけない
@goo_blog
【お知らせ】
ブログを読むだけ。毎月の訪問日数に応じてポイント進呈
【あなたはどっち?】クリームシチューをご飯にかける or かけない
訪問者数に応じてdポイント最大1,000pt当たる!
dポイントが当たる!無料『毎日くじ』