检测第一个非静默样本索引

Detecting first non silent sample index

我有一个用 [tabread~] 阅读的音频文件。音频以静音开始,我正在尝试找到第一个非静音样本索引。

我曾尝试使用 [bonk~]、[fiddle~] 或 [sigmund~],但结果是近似值而不是常量。

有人对此有解决方案吗?谢谢

帕斯卡

我已经在 Pure Data forum 中回答了这个问题,但我将其复制到此处(稍作改编)以防其他人发现它有用:

如果在您标记的点之前声音完全静音(也就是说,table 到该点之前都用零填充),那么您可以使用 简单地遍历数组的元素[tabread],从第一个样本开始,检查后续样本的绝对值是否大于零。如果信号不是完全无声而是接近无声,那么你可以使用某种攻击检测(例如 [bonk~])或者简单地使用这样的东西:

...
|
[tabread array1]
|
{abs]
|
[> 0.001]
|
[sel 1]
|
...

请注意我是如何使用 [> 0.001] 而不是 [> 0] 的。调整这个数字(直接作为参数或通过 [>] 最右边的入口)来控制检测的灵敏度。然后一旦 [sel 1] 收到一个值 1 的浮点数,你可以使用它的 bang 来停止这个过程,因为你找到了你的第一个非静默元素。