おまけの話でなんですが、空線がデコードできるということは、空線があるか否かがわかるという単純な発想で、作成中の空線デコーダーにいわゆる空線キャンセラーの機能を入れてみました。
空線キャンセラーといえば、空線がどのくらい除去されるのかというのが話題になるのですが…。
やる気になれば、デコード可能な信号という条件なら、ほぼ100%除去することも可能です(といっても、よっぽど電界強度が高く、安定してないと100%のデコードにはなりませんが…)。ただし、キャプチャと信号処理で必ず遅延が生じるので、それをするにはループバック(ラインインから取り込んで、Waveアウトに出力)させないとダメです。しかし、そこまでするのはかなり面倒なのでやりません(少なくともデコーダーの機能ではない)。
そういう意味では、簡易空線キャンセラーというべきかもしれませんが、信号処理でデータが抽出できたら、ミキサーコントロールを操作してミュートにするいう仕組みで、信号処理後にミュートですから、もちろんそれなりの遅延が生じます。
そもそも、キャプチャーはある程度のデータがバッファに溜まってから取り込むので、最悪バッファ長に相当する時間の遅延が発生するわけです。
さらに、そこから信号処理をするわけですが、プロセッサーの処理速度に関係なく遅延するのがフィルタです。
いわゆるデジタルフィルタは、ある程度の数の連続したサンプルを使って、出力を計算するわけですから、キャプチャしたデータの最後のほうは、次の取り込みでデータを取得しないと計算できません。あと、フィルタ長にもよりますが、フィルタによる遅延も影響してきます。
あとの信号処理は、大きく遅延するような処理はしないので、プロセッサーのパワー次第です。ただし、少なくともパソコンの場合、信号処理だけで負荷が高いと結果的にキャプチャーの取りこぼしにつながるので、ほどほどになるようにチューニングしておきます。そういった意味では、そこではそれほどの遅延にはならないはずです。
といった具合で、現在の空線デコーダーに組み込んだ簡易空線キャンセラーの場合、おそらく0.3秒ぐらいの遅延が生じているようです。これは、アップリンクの1パケットがだいたい0.5秒ぐらいなので、そこから聞いた感じで推測しているので、あまり正確な数字はないですが…。
と、いいつつも空線キャンセラーの機能は、デコーダー的にはまったくのおまけなので、これ以上どうにかしようとかは思っていません…。
0 件のコメント:
コメントを投稿