4

私は Audacity 用の簡単な測定プラグインを作成しようとしていますが、それは私の頭蓋骨に岩を打ち付けるのと同じくらい楽しいものです。私がやりたいことは、オーディオのチャンクを取り、すべてのサンプルの平均 (チャンクのDC オフセット) を見つけて、それを数値としてユーザーに提示できるようにすることと、サンプルから DC オフセットを差し引くことです。さらなる処理のために。私は自分がやりたい数学を知っていて理解していますが、Lisp/XLisp/Nyquist などでそれを行う方法を理解していません。

このスレッドの背景情報

私の知る限り、これを行う機能はありません。なんらかの理由で、期待どおりに、snd-avg関数は実際にはサウンドの平均を計算しません。最初に絶対値を計算し、次に平均を計算します平均を計算してから絶対値を計算します。snd-absそれを行うことができる別の機能がありますが。>:(

だから私は自分で書く必要があると思いますか?これは、サウンドを配列に変換してから、その平均を計算することを意味しますか?

(snd-fetch-array sound len step)

サウンドからサンプルのシーケンシャル配列を読み取り、サウンドが終了したときに FLONUM の配列または NIL を返します。

(snd-samples sound limit)

サンプルを Lisp 配列に変換します。

ナイキスト関数

平均関数すらないので、自分で合計する必要がありますか? しかし、数学関数はリストでしか機能しませんか? では、配列をリストに変換する必要がありますか?

また、これは長い波形 (サンプルあたり 18 バイト) のために大量のメモリを使用するため、チャンクで処理して累積平均を実行するのが最善です。しかし、最適化されていないバージョンを実行する方法さえわかりません。

いいえ、(hp s 0.1)機能しません。

  1. DC のみを除去し、任意の低周波数を維持したい。0.01 Hz はそのまま通過し、DC を除去する必要があります。
  2. ハイパス フィルターは因果関係があり、使用するニー周波数に関係なく、波形の最初のサンプルは変化しないため、ピーク サンプルなどの測定には役に立ちません。
4

1 に答える 1

0

気にしない

snd-maxsampではなく、絶対値を計算していsnd-avgます。 snd-avgうまく動作します。数字( "FLONUM")を絞り出す方法は次のとおりです。

(snd-fetch (snd-avg s (round len) (round len) OP-AVERAGE))

これにより、必要に応じて、負のサンプルの場合は負の数、正のサンプルの場合は正の数が生成されます。

この質問を削除するか、他の人に例として残す必要がありますか?

于 2010-08-18T01:01:36.420 に答える