2016-12-29 101 views
0

我有一个将音轨结合在一起的程序,目前的系统是我可以编写两个音轨并使它们同时播放。我遇到的问题是,它只是起到了最短轨道的持续时间,所以例如:加入多个音轨时的音频持续时间匹配

轨道1的持续时间= 2:00

轨道2的持续时间= 1:12

它将当我想让它玩2:00(全长)时,只玩1:12。解决这个问题的最好方法是什么?

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

所有的
length = min([length(s1), length(s2)]); 

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

要么垫较短轨道所以它的相同的长度,或者使用索引,以较短的曲目添加到的较长的一个所期望的段。 – excaza

回答

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 
相关问题