波形不如应有的平滑

GRO*_*ER. 5 php c++ audio ffmpeg

因此,我一直在尝试创建一个SoundClouds“峰值”波形的小克隆。我已经注意到,与我的“响度”突然变化相比,它们的波形更加精简。峰值之间的动态范围似乎从未陡峭,它们始终很好地代表了音轨各部分的感知响度。


这是一个例子:

例

通知所有的“滴”如何是相当区分在他们的波形的“故障”,但我的是所有的地方(除了最后一滴血和击穿,这是一种类似)。有一些细微的相似之处,但是即使在那些区域,“锯齿状”仍然非常突出。

我将wav2json用作峰转换器(通过命令行运行并在中编程C++)。这是我如何使用它的一个示例:

/*
*    --channels: mids and min
*    --db-min (minimum level in dB to capture): -35dB
*    --db-max (pretty self explanatory): 6dB
*    -d: use logarithmic instead of linear scale
*    -s (number of peaks to generate): 1800
*    -o (output file): outputfile.json
*    -p (precision of floats): 0
*    -n: no header 
*/
exec("wav2json inputfile.wav -s 1800 --channels mid min -d --db-min -35 --db-max 6 -p 0 -o outputfile.json -n");

$fp     = fopen($tmpOutput, "r");
$json   = fread($fp, filesize($tmpOutput));
// get mids and min from the generated peaks file
$mid    = json_decode($json, true)["mid"];
$min    = json_decode($json, true)["min"];
fclose($fp);
unlink($tmpOutput);

/* 
*  from here I just combine each mid and min value together and divide by two
*
*  then I normalise all the peaks (instead of each value being between -0.293 to 
*  1.766(just as an example), it is between 0 and 100)
*/
Run Code Online (Sandbox Code Playgroud)

我正在努力弄清(过去几个月来一直在努力)的是如何使每个峰更合理化,以及如何使每个峰的动态范围看起来如何。


我尝试过的

  • ffmpeg eqing
  • 实际上消除了DAW中的高点和低点,然后比较波形
  • 对wav2json使用各种参数(db最小和最大,线性等)
  • 在赛道上使用各种压缩器和多频带压缩器

感谢所有的帮助,
干杯。

xce*_*ion 4

只是在这里猜测,但与实际水平相比,dB 标度已经是对数了,因此添加 -d 参数可能会让你的情况变得更糟。

您也可以尝试仅使用中频或仅使用分钟,而不是两者都使用!有可能 max 是正确的吗?

另一件事是你采集的样本数量,我确信图表上没有 1800 个,你可以尝试数一下并得出相同的数量。

您还将输出“剪辑”到最大 35 db,尝试不要在正方向上剪辑它,并且可能会增加在负方向上的剪辑。

您还可以通过计算前一个值、当前值和下一个值的平均值来“平滑”曲线。

尝试结合以上内容,不要忘记让我们知道是否有适合您的内容。

  • 第 4 段中的“You”被拼写为“Tou”,我不能建议编辑,因为它只有 1 个字符。 (2认同)