如何在奈奎斯特中找到声音的平均值/平均值

问题描述:

我正在尝试为Audacity编写一个简单的测量插件,它与撞击我的头骨的岩石一样有趣。我想要做的就是获取大量音频并找到所有样本的平均值(大块的DC offset),以便我可以将它作为数字呈现给用户,以便我可以从样本中减去DC偏移量进一步处理。我知道并理解我想要做的数学,但我不明白如何在Lisp/XLisp/Nyquist /无论如何做。如何在奈奎斯特中找到声音的平均值/平均值

Background information in this thread

据我所知,没有任何功能做到这一点。出于某种原因,snd-avg function实际上并不像您预期​​的那样计算声音的平均值。它先做绝对值,然后然后计算平均值计算平均值再做绝对值。尽管有一个单独的snd-abs函数可以做到这一点。 > :(

所以我想我有写我自己?这意味着转换声音到一个数组,然后计算的,平均?

(snd-fetch-array sound len step)

读取样本 顺序阵列从 声音,返回任 FLONUMs阵列或NIL当声 终止。

(snd-samples sound limit)

将 样本转换为lisp数组。

Nyquist Functions

还有的甚至不是一个普通的功能,所以我必须做的和我自己,太?但数学函数只能用于列表?所以我需要将数组转换为列表?

而且这也会占用大量的内存用于更长的波形(每个样本18个字节),所以最好将其分块处理并做一个cumulative average。但我甚至不知道如何去做未经优化的版本。

不,(hp s 0.1)将无法​​正常工作,因为:

  1. 我只想删除DC,并保持任意低频。 0.01 Hz应该通过不变,DC应该被移除。
  2. 的高通滤波器是因果关系和波形的第一个样本保持不变,不管你用什么拐点频率,使其失去作用测量峰值样品等

没关系

snd-maxsamp正在计算绝对值,而不是snd-avgsnd-avg工作得很好。以下是如何挤号码(“FLONUM”)出来的:

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

这就产生了负样本负数和阳性标本正数,因为它应该。

这个问题应该删除还是作为例子留给别人?

+1

务必留下问题,以便在搜索时可以找到具有类似问题的人。 – 2012-01-31 15:28:29