php - 波形没有应有的平滑
问题描述
所以我一直在尝试创建一个 SoundClouds 'peaks' 波形的小克隆。我注意到与我突然改变“响度”相比,它们的波形更加流畅。峰值之间的动态范围似乎永远不会太陡峭,它们总是很好地代表了轨道每个部分的感知响度。
这是一个例子:
请注意,所有“跌落”如何与其波形中的“击穿”区分开来,但我的到处都是(除了最后一次跌落和击穿,它们有点相似)。有一些细微的相似之处,但即使在这些领域,“锯齿状”仍然非常突出。
我使用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)
*/
我试图弄清楚 - 并且在过去几个月一直在努力 - 是如何让每个峰值更加精简,并让每个峰值的动态范围看起来像它实际上听起来的那样。
我试过的:
- ffmpeg qing
- 实际上 eqing daw 中的高点和低点,然后比较波形
- 使用 wav2json 的各种参数(分贝最小值和最大值,线性等)
- 在轨道上使用各种压缩器和多频段压缩器
感谢所有帮助,
干杯。
解决方案
只是在这里猜测,但与实际水平相比,dB 比例已经是对数,所以添加 -d 参数可能只是让你变得更糟的原因。
您也可以尝试仅使用中频或仅使用 min,而不是两者都尝试!最大的可能性是正确的吗?
另一件事是您采集的样本数量,我确定他们在该图表上没有 1800 个,您可以尝试计算它们并制作相同的数量。
您还将输出“剪裁”到最大 db 35,尝试不要在正方向上剪裁它,并且可能会在负方向上增加剪裁。
您还可以通过对上一个值、当前值和下一个值进行平均来“平滑”曲线。
尝试结合以上内容,不要忘记让我们知道是否适合您。
推荐阅读
- javascript - React Jsx 和 JS 文件条件
- firebase - Flutter 和 Firebase:在小部件中显示来自 cloud_firestore 的存储信息
- xamarin - Xamarin Foms SqlCommand 错误 Tcp 提供程序 35
- typescript - How to specify the type inside object spread because it can't infer
- python - 如何将 celeba 数据集加载到 spyder
- javascript - 无法弄清楚如何在 Javascript 游戏中实现三击功能
- css - 将 div 限制为具有固定纵横比的容器宽度和高度
- python - 如何将 rawEDF 文件导出到我的计算机
- excel - Excel从多列中提取不同的值
- r - 用同一列中的时间格式化 R 中的日期