- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试为 Audacity 编写一个简单的测量插件,它就像用石头砸我的头骨一样有趣。我想要做的就是获取一段音频并找到所有样本的平均值(该 block 的 DC offset ),这样我就可以将它作为一个数字呈现给用户,这样我就可以从 sample 进行进一步处理。我知道并理解我想做的数学,但我不明白如何在 Lisp/XLisp/Nyquist/whatever 中做。
Background information in this thread
据我所知,没有执行此操作的功能。出于某种原因,snd-avg
function正如您可能期望的那样,实际上并没有计算声音的平均值。它首先计算绝对值,然后计算平均值计算平均值,然后计算绝对值。即使有一个单独的 snd-abs
函数可以做到这一点。 >:(
所以我想我必须自己写?这意味着将声音转换为数组,然后计算其平均值?
(snd-fetch-array sound len step)
Reads sequential arrays of samples from sound, returning either an array of FLONUMs or NIL when the sound terminates.
(snd-samples sound limit)
Converts the samples into a lisp array.
而且连一个平均函数都没有,所以我也得自己做一个求和?但是数学函数只适用于列表?所以我需要将数组转换成列表?
这也会为更长的波形占用大量内存(每个样本 18 个字节),因此最好分块处理它并执行 cumulative average。 .但我什至不知道如何做未优化的版本。
不,(hp s 0.1)
不会工作,因为:
最佳答案
没关系
snd-maxsamp
正在计算绝对值,而不是 snd-avg
。 snd-avg
工作得很好。以下是从中提取数字(“FLONUM”)的方法:
(snd-fetch (snd-avg s (round len) (round len) OP-AVERAGE))
这会为负样本生成负数,为正样本生成正数,这是应该的。
这个问题是应该删除还是留作其他人的例子?
关于lisp - 如何在奈奎斯特中找到声音的均值/平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3436194/
我是一名优秀的程序员,十分优秀!