【问题标题】:How to find the mean/average of a sound in Nyquist如何在奈奎斯特找到声音的平均值/平均值
【发布时间】:2011-03-27 01:23:17
【问题描述】:

我正在尝试为 Audacity 编写一个简单的测量插件,它就像用石头砸我的头骨一样有趣。我要做的就是获取一大块音频并找到所有样本的平均值(块的DC offset),这样我就可以将它作为一个数字呈现给用户,这样我就可以从样品作进一步处理。我知道并理解我想做的数学,但我不明白如何在 Lisp/XLisp/Nyquist/whatever 中完成。

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. 高通滤波器是因果关系,波形的第一个样本保持不变,无论您使用什么拐点频率,都无法测量峰值样本等。

【问题讨论】:

    标签: lisp audio mean audacity


    【解决方案1】:

    没关系

    snd-maxsamp 正在计算绝对值,而不是 snd-avgsnd-avg 工作得很好。以下是如何从中挤出一个数字(“FLONUM”):

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

    这会为负样本产生一个负数,为正样本产生一个正数,这是应该的。

    这个问题应该删掉还是留给别人做示范?

    【讨论】:

    • 请务必保留问题,以便有类似问题的人在搜索 SO 时可以找到它。
    猜你喜欢
    • 2022-11-03
    • 2021-12-22
    • 1970-01-01
    • 1970-01-01
    • 2015-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-09
    相关资源
    最近更新 更多