我创建了一个音频播放器像车库乐队。我怎样才能搭配2个音频文件转换成1个文件
为此,我必须在运行时将2种不同的音频文件格式混合到1个文件中。
实施例:
用户推动drum button
和violin button
同时。
然后用户推动disk button
保存那曲调。
那么如何将它们混合成1个文件(异步和完美的持续时间)?
我创建了一个音频播放器像车库乐队。我怎样才能搭配2个音频文件转换成1个文件
为此,我必须在运行时将2种不同的音频文件格式混合到1个文件中。
实施例:
用户推动drum button
和violin button
同时。
然后用户推动disk button
保存那曲调。
那么如何将它们混合成1个文件(异步和完美的持续时间)?
这对于苹果的新AVAudioEngine来说非常简单,它专门用于这种情况。
而且看它的WWDC视频......
对于未来的读者请注意:
当我输入这个答案时,问题没有指定任何环境/操作系统/语言,它只是问如何合并音频。
基本概念:等波互相放大,相反波相互衰减。
因此,基本思路是:
0
代替比最长的轨道花费更少时间的轨道)。实施例:3单磁道(T
=轨道,C
=信道,Sn
=单个试样n
的值或0
):
resultTrack_C1_Sn = (T1_C1_Sn + T2_C1_Sn + T3_C1_Sn)/totalTracks
当多通道(如立体声):重复用于每个通道交错结果(左声道优先)。当然,你可以在一个'跑'中做到这一点。
注意(对于PCM):
<= 8 bits
采样分辨率是在PCM 无符号(所以0
是127
,换句话说,负波摆动低于127,正波摆动是127以上的),你需要说明这一点。>8 bits
是签署所以你可以安全地使用上面的基本公式(因为-4 + -5 = -9
)。这应该让你开始在基本概念。
如果您有任何演示或示例代码或方法(链接),请告诉我或发送给我.thank您。 – Mirant 2014-10-10 12:25:36
对不起,我目前正在JavaScript中做这个还没有准备好炫耀。然而,除了写一个正确的波头,这对于* basic * 16bit 2ch 41.1khz来说是微不足道的 - 对于分辨率不是8位倍数的PCM格式,您可以在RIFF/WAVE规格和在线代码中有98%的方程是错误的(它们意外地用于8位的倍数),但这是另一个问题的原因 - )这里概述的步骤是正确的,应该让你开始。实际上,它正是*我正在做的事情,我用一些DAW来验证结果。 – GitaarLAB 2014-10-10 12:31:59
的[iPhone可能重复:编程混合两个音频文件?](http://stackoverflow.com/questions/8638731/iphone-mix-two-audio-files-programmatically) – matt 2014-10-10 13:18:10