アカウント名:
パスワード:
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
ハッカーとクラッカーの違い。大してないと思います -- あるアレゲ
ΔΣがいーんじゃない? (スコア:1)
やり方は...
0.出力しようとする値をv0、誤差をd(後述)、v0とdを足した値をv1とする。
1.v1が値が半分を超えてたら1、半分未満なら0を出力(これはゼロクロスと同じ)。
2.1を出力したら+のフルスケールからv1を引いたものを、0を出力したら-のフルスケールにv1を足したものを誤差(d)とする。
3.次の値v0を取ってきて1から繰り返す。
みたいな感じ。誤差のスペクトルは三角ノイズ。
Re:ΔΣがいーんじゃない? (スコア:1)
これはそんなに難しくなさそう。
PWMでも(サンプリング周波数もたかだか8KHzなので)速度的には問題無いはず。
あと、PWM変換するんだったらターゲットマシンでリアルタイムでPWM変換したほうが容量は有利になりますね。
Re:ΔΣがいーんじゃない? (スコア:1)
そうかなー?分解能が8bitsでも2MHzでカウントする必要があるよ(このくらいはできるだろうけど)。分解能が16bitsになった日には500MHzだし。
それはそうと、ADPCMは基本的にPCMなデータを4bitsでΔΣ変換したものなので元データがADPCMなら分解能を4bitsにしてADPCMデータを4bitsづつ流すという手もあるね。基本的にというのは0000とかにコントロールコードが割り当てられてることがあるからなんだけど。
Re:ΔΣがいーんじゃない? (スコア:1)
そんなことしたら、4KbyteのROMが0.5秒で埋まってしまうデス
4bitもあれば御の字かなあと思ってました。
4bitにしても、今度は代わりにサンプリング周波数を半減しないとROMが厳しい・・・。分解能とサンプリングレートはどの編がベストな割り振りなのか悩みます。(この貧乏システムでは、1ビットが丁度いいのか?)
前のコメントでも書いていただきましたが、8KHzでPWMすると可聴波でピーとかなりそうですね。
4倍の32Khzで動かして、元の1データにつき、PWMを4回やるってのはどうでしょう。これまた、余計なことになるでしょうか?
ADPCMは誤差が蓄積されて、そのうち+側か-側に突き抜けてしまうような不安があるのですが、あれってなんで大丈夫なんでしょう?大丈夫なようにエンコードしてるからだとは思いますが・・・
Re:ΔΣがいーんじゃない? (スコア:1)
>4倍の32Khzで動かして、元の1データにつき、PWMを4回やるってのはどうでしょう。これまた、余計なことになるでしょうか?
基本的にはそれでもOKだけど64kspsはあった方がよいやも。あるいはアナログ側でフィルタするとか。
あるいは予めΔΣしたビット列をハフマンな圧縮するだけでもだいぶ小さくなりそうだけどね。0と1が交互に出やすそうだし。
# 音声合成するならF0の周波数と各フォルマントの強度、それに子音で結構声になるからもっと圧縮効くんだけどー(ぉ
## 全くフィルタせずにフォルマントを出すだけでも「声っぽい」音になるよ。怪しいけどw
>ADPCMは誤差が蓄積されて、そのうち+側か-側に突き抜けてしまうような不安があるのですが、あれってなんで大丈夫なんでしょう?
あるとき+の誤差があったら+に出力しすぎなわけだから次でその分を引くという動作なので問題ないよ。