問題タブ [waveform]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
cocoa - 何百万もの点で線を引く効率的な方法
Cocoa で、さまざまなズーム オプションを備えたオーディオ波形エディターを作成しています。幅を最大にすると、曲全体の波形が表示されます (最大 1,000 万サンプルが表示されます)。最も狭い範囲では、音波のピクセル精度の表現が表示されます (1 ビューで最大 1,000 サンプル)。これらのズーム レベル間をスムーズに移行できるようにしたいと考えています。Ableton Live などの一部の商用エディターは、非常に安価な方法でこれを行っているようです。
私の現在の実装は、希望するズーム範囲を満たしていますが、非効率的で途切れ途切れです。このデザインは、クォーツを使用した波形の描画に関する次の優れた記事に大きく影響を受けています。
http://supermegaultragroovy.com/blog/2009/10/06/drawing-waveforms/
さまざまな削減レベルでオーディオ ファイル用に複数の CGMutablePathRef を作成します。完全にズームアウトすると、x 千サンプルごとに 1 つのポイントに縮小されたパスを使用します。完全にズームインすると、すべてのサンプルのポイントを含むそのパスを使用します。削減レベルの間にいるときは、パスを水平方向にスケーリングします。これにより機能しますが、それでもかなりコストがかかり、削減レベル間を移行するときにアーティファクトが表示されます。
これをより安価にする方法についての 1 つの考えは、アンチエイリアシングを取り除くことです。私のエディタの波形はアンチエイリアスされていますが、Ableton の波形はそうではありません (以下の比較を参照)。
CGMutablePathRef のアンチエイリアシングをオフにする方法がわかりません。Cocoa の世界で CGMutablePathRef に代わるアンチエイリアスのない代替手段はありますか? そうでない場合、巨大な線をより効率的に描画するためのコースに私を設定する可能性のある OpenGL クラスまたはサンプル コードを知っている人はいますか?
2014 年 1 月 21 日更新:まさに私が探していた機能を備えた優れたライブラリがあります: https://github.com/syedhali/EZAudio
audio - 特定の高さ範囲内の波形を表現する良い方法は何ですか?
pcm データから画面に波形を喜んで描画しています。波形の高さが表示領域の高さを超える場合があります。
pcm データのセット全体をリッピングして、見つかった最大値から正規化することなく、波形プロット データが特定の高さを決して超えないようにするにはどうすればよいですか?
linux-kernel - デバイス ドライバー コードをロジック アナライザーの波形にマップする
SDIO 仕様に従って、一連の操作 (書き込みトランザクションの場合) は次のように行われます。
Command53 -- CommandLatency -- Command53Response -- ResponseLatency -- startbit -- 書き込みバイト数 -- CRC -- endbit -- WriteLatency -- startbit -- CRC -- endbit -- busybit。
SDIO UART ドライバーのベンチマーク中に、得られた時間値は予想以上でした。特に書き込みトランザクション中に多くのレイテンシが見つかりました。
遅延の理由としては、スケジューラがプロセッサ時間を他のプロセスに割り当てている、ワーク キューの遅延などが考えられます。
レイテンシを分析して理解したいと思います。デバイス ドライバー コードとロジック アナライザーの波形の間のマッピングを理解すると、何らかの手がかりが得られる可能性があります。
誰かがこれに光を当てることができますか?
ありがとうございました。
編集1:ごめんなさい!私はいくつかのことを想定しました。
sdio_uart_transmit_chars ()には、sdio_writeb()sdio_out()
を呼び出す呼び出しがあり、この呼び出しは SDIO UART デバイスにバイト単位で (一度に 1 バイトずつ) 書き込みます。sdio_writesb() 、つまりマルチバイトモードを使用するようにドライバーを変更しました。これにより、X バイトの書き込みにかかる時間が相対的に短縮されました。興味深いことに、書き込みデータのサイズが増加すると、WriteLatency が指数関数的に増加しました (前述のとおり)。
この待ち時間は、多くの理由で発生する可能性があります。これらの理由を理解したいと思います。
セットアップ: Linux (v 2.6.32) ラップトップとロード可能なカーネル モジュール (変更されたsdio_uart.c )を使用しています。
編集2:
この質問に「SDIO」を追加することは誤解を招く可能性があります..(現時点ではわかりません)。遅延の理由は、ハードウェアと対話しているときにデバイス ドライバーに共通する可能性があり、SDIO 書き込みプロセスとは無関係である可能性があります。
誰かが関連するオンライン リソースを教えてくれれば、ここで結果を調べて更新したいと思います。
今回はより明確にすることを願っています。質問がまだ明確でない場合はコメントしてください。
お時間をいただきありがとうございます。
編集3:
はい、ロジック アナライザー (LA) で信号を確認しましたが、書き込み中および書き込み間の遅延が予想よりも長くなっています。
512 バイトの転送の場合:
ハードウェア レベルでは、理論的には書き込みに 50 マイクロ秒 (us) かかるはずですが、実際には 200 秒かかりました。
この 150 us のギャップを理解したいと思います。
注:
1) ケースを単純化するために、時間の値を四捨五入しています。
2) すべての時間値はカーネル レベルで計算され、ここではユーザー スペースの問題は関係ありません。
java - JavaでXHz音波を生成する最も簡単な方法は何ですか?
後で描画できるように(たとえばCanvasを使用して視覚化)、ウェーブをエクスポートするのがかなり簡単であれば、それも素晴らしいことです。
明確にするために:私はX Hzの波を聞くことができ、できればそれを描くことができるようにしたいと思います。
python - Python 内でオーディオ波形グラフィックを生成する
出来ますか?オーディオ ファイルのバッチを実行し、それらからグラフィック波形ファイルを生成したいと考えています。SoundCloud が表示するものと似ていますが、おそらく、私が探しているモジュールはさらにいくつかのオプションを提供します。
そこに何がありますか?どうよ?
iphone - AVAssetReaderで波形を描く
assetUrl (コードでは audioUrl という名前) を使用して iPod ライブラリから曲を読み込んでいますCMSampleBufferRef で波形描画用データを取得!ピーク値に関する情報が必要です。どうすればこの方法で (おそらく別の方法で) 取得できますか?
私を助けてください!
python - Djangoでは、ユーザーがファイルをサーバーにアップロードしてからAmazon S3に移動する方法はありますか?
ユーザーが.wavファイルをアップロードしているWebプロジェクトがあります。アップロードしたら、.wavファイルから波形画像を生成したいと思います。しかし、一般的にストレージには、AmazonS3を使用したいと思います。つまり、TimeSide(http://code.google.com/p/timeside/wiki/PythonApi)のようなものを使用して、.wavファイルから波形画像を生成したいと思います。
TimeSideプロジェクトのコーダーと話した後、彼は、.wavファイルがAmazonS3からのものであるときに波形画像を生成することは適切ではないと述べました。そのため、ユーザーが.wavファイルをアップロードしたらすぐに実行する必要があると考えていました。その後、TimeSideが実行した後、.wavファイルと波形イメージをAmazon S3にコピーして、ファイルをAmazonS3から削除します。アップロードサーバー。それを行うのが最も理にかなっていますか?
このような目的でPythonBotoライブラリを使用できますか?または、独自のDjangoバックエンドをコーディングする必要がありますか?
c# - C#で波形を描く
ズームや選択などのいくつかの簡単な機能とともに、C#で波形を表示できるようにしたいと考えています。私はすでに振幅値のshort[]としてデータを持っています。
ただし、GUIのハードコーディングに関しては、私はアマチュアです。これを達成するのに役立つ可能性のあるヘルパークラスWaveFormClassをすでに見つけましたが、バックアップとして、手動で行う方法を学びたいと思います。
それで、私はいくつかの方法とおそらく役立ついくつかのリンクを求めることができますか?ありがとう!
charts - 大きなデータセットを小さなセットに減らすアルゴリズム?
グラフに表示する必要があるデータ ポイント (倍精度) の大規模なデータ セット (数十億) があります。すべてのデータを一度に表示するのは役に立たないため、セット全体から最適な N ポイントを選択するのに役立つアルゴリズムを探していました。
現在、データセットを減らすために系統的サンプリングを行っています。それを改善する方法について何か提案はありますか?ありがとう。
更新: データは、波形の振幅を示す 16 ビットの符号付き数値です。そのため、値は -32,768 から 32,767 の範囲になります。セット全体から表示するために選択された N ポイントがセット全体の近似値を与えるように、ピークと谷をキャプチャしたいと考えています。
c# - 再生および録音されたサウンドの波形を表示するC#WinFormsアプリケーション
WAVファイルを再生できるC#WinFormsアプリケーションを作成したいと思います。ファイルを再生している間、波形が表示されます(オシロスコープと同様)。
同時に、ユーザーはマイクを介してサウンドを録音し、再生された元のサウンド(カラオケなど)を追跡することができます。プログラムは録音された音の波形をリアルタイムで表示するので、元の波形ファイルとユーザーが録音した波形ファイルの波形表示から比較を見ることができます。比較は、元の音と録音された音の時間差(遅延)と同じように行われます。波形表示は非常に高度である必要はありません(カット、コピー、または貼り付けの必要はありません)。タイムラインでそれを見ることができれば十分です。
これが十分に明確であることを願っています。不明な点がある場合は、遠慮なく詳細をお尋ねください。どうもありがとうございます。