android - Android双簧管库在声音的开始/结束处点击
问题描述
我在我的应用程序中使用双簧管库来生成声音。他们的示例SineGenerator几乎正是我所需要的,只是一个简单的正弦波,可以产生我需要的频率。这个生成的正弦波是稍后在PlayAudioEngine中的用户。
问题是,我播放的音频的开头或结尾通常会发出咔哒声。我以连续的短脉冲播放声音,长度通常在 50 到 150 毫秒之间。
我真的没有产生音频波的经验,所以也许这只是我没有看到非常明显的东西。我已尝试按照本文中的建议优化性能(编译器标志 + 代码),但没有产生任何结果。我也尝试降低幅度,但没有明显的结果。
任何建议表示赞赏。谢谢!
解决方案
启动振荡器时的点击是由于未重置相位引起的Oscillator::setWaveOn(true)
(正如@greeble31 在评论中提到的那样)。这是对“wave on”场景的简单修复,只需设置mPhase
为零。
对于“波形关闭”,解决方案是在幅度上进行非常短的斜坡下降,而不是仅仅切断声音。
您可以在 中执行此操作,但是,实现一个可以独立处理斜坡下降的单独类Oscillator::renderAudio
可能会更灵活。Envelope
推荐阅读
- windows - 无法通过 ProcRun 将打包的可执行文件作为 Windows 服务启动
- c# - 使用命令参数 C# 一键更新和插入
- ios - iOS:应用商店是否拒绝使用旧版本 swift 构建的应用?
- design-patterns - 委托模式是一种基本和关键的模式吗?(不包括 JAVA)
- html - 我可以在不使用 JavaScript 的情况下创建嵌套列表子菜单吗?
- angular - 将数据从一个组件传递到另一个组件
- python - Python - 未知大小的二维列表
- java - 在运行测试时从项目根目录而不是模块加载 Spring Boot 文件系统资源/配置
- r - 在R中处理循环
- android - 获取 IllegalStateException:已添加片段