连接多个曲目时匹配音频持续时间

时间:2016-12-29 14:04:56

标签: matlab audio

我有一个将音轨组合在一起的程序,我现在的系统是我可以写两个音轨并让它们同时播放。我遇到的问题是它只播放最短音轨的持续时间,例如:

追踪1'持续时间= 2:00

追踪2&时长= 1:12

当我想要1:12(整个长度)播放时,它只会播放2:00。什么是解决这个问题的最佳方法?

到目前为止我的解决方案:

length = min([length(s1), length(s2)]);

s1 = s1(1:length);
s2 = s2(1:length);
s3 = s1 + s2;

1 个答案:

答案 0 :(得分:0)

首先,不要使用功能名称"长度"至于定义新变量,您将无法在下一个语句中将其用作函数。 其次,当你播放多首曲目时,你希望能够在开始时进行某种同步,所以我为你添加了这个选项。

解决方案是:

s1=[ 0.5, 0.2, 0.2, 0.1 ];
s2=[ 0.1, 0.4 ];

s1_pad_delay=8; s1_pad_after=5;
s2_pad_delay=4; s2_pad_after=3;

s1_len=s1_pad_delay+length(s1)+s1_pad_after;
s2_len=s2_pad_delay+length(s2)+s2_pad_after;
mix_len=max(s1_len,s2_len);

s1_padded=[ zeros(1,s1_pad_delay), s1, zeros(1,mix_len-length(s1)-s1_pad_delay) ];
s2_padded=[ zeros(1,s2_pad_delay), s2, zeros(1,mix_len-length(s2)-s2_pad_delay) ];

mix=s1_padded+s2_padded