作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我看来,CoreAudio 在混合到单个 channel 时会将声波添加到一起。我的程序将发出合成声音。我知道每种声音的振幅。当我一起玩它们时,我应该将它们加在一起并乘以合成波以保持在范围内吗?我可以这样做:
MaxAmplitude = max1 + max2 + max3 //Maximum amplitude of each sound wave
if MaxAmplitude > 1 then //Over range
Output = (wave1 + wave2 + wave3)/MaxAmplitude //Meet range
else
Output = (wave1 + wave2 + wave3) //Normal addition
end if
我可以这样做吗?我是否应该预先分析声波以找到实际的最大幅度(因为时间线上的最大点可能不匹配)并使用它?
我想要的是一种同时播放多个合成声音的方法,而不会在整个过程中极大地降低音量并且听起来无缝。如果我用多个合成乐器演奏一个和弦,我不想要求单个音符几乎没有声音。
谢谢。
最佳答案
在单个样本的基础上突然改变比例,这就是你的“if”语句所做的,听起来很糟糕,类似于剪裁。
您可以查看自适应 AGC(自动增益控制),它会更缓慢地改变比例因子,但在快速瞬变期间仍可能会削波或突然发生音量变化。
如果您将前瞻与 AGC 算法一起使用以防止突然的瞬变削波,那么您的延迟会变得更糟。
如果您确实使用了 AGC,那么孤立的音符听起来可能比在和弦中演奏时响亮得多,这可能无法正确代表音乐作品的意图(尽管这种类型的压缩在烦人的电视和广播中很常见广告)。
降低混音器输出音量,使音符永远不会剪辑或降低音量,除非成分指示将导致大量 channel 的音量大大降低的混音(这就是正确再现古典音乐的原因广播通常太安静,无法吸引足够多的观众来赚取足够的钱)。
这都是一个权衡。
关于ios - 混合声波(iOS 上的 CoreAudio),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8549258/
我是一名优秀的程序员,十分优秀!