我有一个将音轨组合在一起的程序,我现在的系统是我可以写两个音轨并让它们同时播放。我遇到的问题是它只播放最短音轨的持续时间,例如:
追踪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;
答案 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