新しいものを表示

これです><;
Belinda Carlisle - Heaven Is A Place On Earth -- HQ Audio -- LYRICS youtu.be/D8OYvMUiTPI

ずっと曲名を思い出せなくて聴けなかった曲、耳に残ってた単語2つ、heaven earthでググったらすぐ出た><;

専用ハードウェアなデジタルスペアナってどうやってるんだろう?><;

すごく当たり前だけどわかりやすく強調すると、10秒ごとに届くデータを滑らかに表示しようとすると10秒のレイテンシになっちゃう><;

レイテンシを下げようとすると録音バッファの更新のタイミングでしか表示を更新できないから、結果的に、(簡単にバッファの更新タイミングがFFTのサイズより大きい場合で言うと)各サンプルが一度しかFFT通されない事になっちゃう><; それだとめちゃくちゃ不自然な表示になっちゃう><

スペアナ自分で作ってみてやっとWaveSpectraの録音のリアルタイム表示のレイテンシが長い理由わかった><; 表示を滑らかにしようとすると原理的に不可能なのか・・・><

FFTしたデータ関連のバグだと思って悩んでたのもこれだったっぽい・・・><;

BytesRecordedと言うものに気づかず、録音バッファが埋まったらイベントが起きるんだと勘違いしてた><; github.com/naudio/NAudio/blob/

見つけたのさっきのリングバッファのバグじゃなく根本的にNAudioの使い方を間違えてたと言う・・・><;

Array.Copy、全然C# っぽく無いしすごく使いづらい><;

なんかバグってるきがする><;

orange さんがブースト

よーするに追加削除とアクセスのどちらに即応性を求めるかという話なのでユースケースによりけりです

なんて名前にすればいいのかわかんなくてExport()にした><;

orange さんがブースト

ん、いや、バッファは定数長だからすべて O(1) か。この説明は間違ってるな(まあ雰囲気で察してください)

スレッドを表示
orange さんがブースト

前者は push / pop が常に O(1) だけど書き出し時(連続領域の配列としてアクセスしたいとき)に(たぶん)常に O(N) かかります。
後者は push/pop が O(1) にならない(償却できるかは知らん)代わりに、常に O(1) で連続領域の配列に乗ったデータにアクセスできます

スレッドを表示

あ!>< オレンジが書いたのは、内部的にはズラしてなくて、読む時に、普通に読むんじゃなく連続にした配列を返すようにしてる感じ><(どっちにしてもコピーしたのを使うので、コピーする時に連続に直してる><)

orange さんがブースト

リングバッファ自体は、内部データがバッファ両端を跨いでいても動く(→push / pop が O(1) になる)のがメリットなので、そのメリットを潰さず連続領域にデータを乗せたいなら、

・外部のバッファに書き出す関数を用意する
・少ないずらし頻度で連続領域に乗せる

のどちらかになるかと。
この図は後者の実装です

スレッドを表示
orange さんがブースト
古いものを表示
:realtek:

思考の /dev/null