我希望在特定的时间码中淡入淡出轨道。例如,我想拍一个音频文件,然后:
Start it at 100% Volume
Fade it to 20% at 2 seconds
Fade it to 100% at 4 seconds
Fade it to 20% at 6 seconds
Fade it to 100% at 8 seconds
Fade it to 20% at 10 seconds
Fade it to 100% at 12 seconds
Fade it to 0 at 14 seconds
我一直用ecasound生成的恒定音调对此进行测试,以便我可以在Audacity中打开生成的文件并直观地查看结果。据我所知,增加幅度是相对的,而减少则不是。似乎如果我将幅度逐渐淡化,它会影响整个音轨的相对音量,而不仅仅是在我设定淡入淡出的特定时间,这就是我迷失的地方。
# generate the tone
ecasound -i tone,sine,880,20 -o:tone.wav
# Just the test to see that i can fade start it at 100 and fade it to 20.
ecasound -a:1 -i tone.wav -ea:100 -kl2:1,100,20,2,1 -a:all -o:test_1.mp3
# Fade it out and in
ecasound -a:1 -i tone.wav \
-ea:100 -kl2:1,100,20,2,1 \
-ea:100 -kl2:1,20,100,4,1 \
-a:all -o:test_2.mp3
# Fade it out and in with a peak of 500
ecasound -a:1 -i tone.wav \
-ea:100 -kl2:1,100,20,2,1 \
-ea:100 -kl2:1,20,500,4,1 \
-a:all -o:test_3.mp3
# Fade it out from 500, out, and then back to 500
ecasound -a:1 -i tone.wav \
-ea:100 -kl2:1,500,20,2,1 \
-ea:100 -kl2:1,20,500,4,1 \
-a:all -o:test_4.mp3
# Fade it out from 500, out to a low of 10, and then back to 500
ecasound -a:1 -i tone.wav \
-ea:100 -kl2:1,500,10,2,1 \
-ea:100 -kl2:1,10,500,4,1 \
-a:all -o:test_5.mp3
# Fade it out from 1000, out to a low of 10, and then back to 1000
ecasound -a:1 -i tone.wav \
-ea:100 -kl2:1,1000,10,2,1 \
-ea:100 -kl2:1,10,1000,4,1 \
-a:all -o:test_6.mp3
# The eventual result I'm looking for
ecasound -a:1 -i tone.wav \
-ea:100 -kl2:1,500,20,2,1 \
-ea:100 -kl2:1,20,500,4,1 \
-ea:100 -kl2:1,500,20,6,1 \
-ea:100 -kl2:1,20,500,8,1 \
-ea:100 -kl2:1,500,20,10,1 \
-ea:100 -kl2:1,20,500,12,1 \
-ea:100 -kl2:1,500,0,14,4 \
-a:all -o:test_7.mp3
从这些结果可以看出,最好的是整个轨道的幅度与所有衰落效应的低和峰值之间的差值有关。我不确定这个结果是否是预期的,但是它非常令人困惑。
此外,在最后的结果中(图像中倒数第二个),渐变不再需要一整秒。为了弄清楚为什么会这样,我把最后的淡入淡出关闭,持续时间恢复正常。这似乎不是预期的行为。
# "Fixing" the fade durations
ecasound -a:1 -i tone.wav \
-ea:100 -kl2:1,500,20,2,1 \
-ea:100 -kl2:1,20,500,4,1 \
-ea:100 -kl2:1,500,20,6,1 \
-ea:100 -kl2:1,20,500,8,1 \
-ea:100 -kl2:1,500,20,10,1 \
-ea:100 -kl2:1,20,500,12,1 \
-a:all -o:test_8.mp3
作为旁注,我也尝试用每一行将-ea值改为“当前”幅度。它没有任何区别(无论我设置的是什么)
我从git(2.8.1 + dev)安装了最新版本。我在2.7.0中遇到了同样的问题,这就是我升级并最终在这里找到自己的原因。
我这样做错了吗?
答案 0 :(得分:4)
经过几个小时的搔痒,我终于想到了我的想法。每个淡入淡出的“起始”幅度需要为100.如果增加幅度,则“到”幅度为maximum / from * to
。
因此,如果您尝试从20到100,那么100 / 20 * 100
或500
。如果你想到120:100 / 20 * 120
或600
。我认为这对某人来说都是完全合理的,但我完全被难倒了。
工作示例(中间的底部范围略高,以示证明):
ecasound -a:1 -i tone.wav \
-ea:100 -kl2:1,100,20,2,1 \
-ea:100 -kl2:1,100,500,4,1 \
-ea:100 -kl2:1,100,40,6,1 \
-ea:100 -kl2:1,100,250,8,1 \
-ea:100 -kl2:1,100,20,10,1 \
-ea:100 -kl2:1,100,500,12,1 \
-ea:100 -kl2:1,100,0,14,1 \
-a:all -o:test_7.mp3
输出:
请记住,这些幅度仍然是相对的。如果你从45%变为90%:100 / 45 * 90 = 200
,那么现在如果你下降到当前幅度的20%,它实际上是18%(。20 * 90),所以回到100将是100 / 18 * 100 = 555.56
正如我想出来的那样,来到这里发帖,我收到了来自ecasound邮件列表的回复。它不是kl2问题的直接答案,但提供了一个替代的,更容易理解的答案,即klg
参数。
<强> -klg:FX-PARAM,低价值的,高价值,POINT_COUNT,POS1,值1,...,POSN,值N 强> 通用线性包络。该控制器源可用于映射 自定义包络链操作员参数。信封数量 点数在'point_count'中指定。每个包络点由 一个位置和一个匹配的值。对数必须匹配 'point_count'(即'N == point_count')。给出'posX'参数 作为秒(从流的开始)。包络点是 指定为范围'[0,1]'中的浮点值。信封值之前 映射到运算符参数,它们被映射到目标范围 “[低值,高值]”。例如。值“0”将设置运算符 参数为'low-value',值为'1'将其设置为 '高价值'。对于初始段'[0,pos1]',包络将 输出值'value1'(例如'low-value')。
以下是使用klg
代替kl2
执行所需操作的命令:
ecasound -a:1 -i:tone.wav -ea:100 \
-klg:1,0,100,14,2,1,3,0.20,4,0.20,5,1,6,1,7,0.40,8,0.40,9,1,10,1,11,0.20,12,0.20,13,1,14,1,15,0 \
-o:test.mp3
输出与图像上的第二首曲目完全相同。
这个结果命令行肯定有点难以阅读并因此调试,但实际上可能更容易动态生成。无论如何,我现在有2个工作选项来解决这个问题。
最后,这是我如何计算出klg命令坐标的笔记。星号是klg参数中列出的“点”,顶部的数字是秒:
0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 2
1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0
1.0 --* *-* *-* *-*
~ \ / \._./ \ / \
0.2 *-* *-* \
0.0 *----------
我希望这可以帮助别人保存至少我头发丢失的头发量。