- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
数字音频链中的某处是否存在电平限制?
我正在使用 OpenAL 开发一款塔防游戏,会有许多塔同时开火,都使用相同的音效(至少目前如此)。我担心的是同时触发太多声音可能会导致扬声器被炸毁,或者至少会让用户感到头疼。
在我看来,无论是在软件中,还是在声卡硬件级别,都应该有一个电平限制器,以防止像我这样的傻瓜这样做。
谁能证实这一点,如果是的话,告诉我这个限制器在哪里?谢谢!
最佳答案
事实上,如果信号在到达 DAC 之前被简单地剪辑在软件中,你会很幸运。您可以自己轻松地实现这一点。当我说“削波”时,我的意思是将超过最大值的幅度设置为最大值,而不是允许溢出、回绕或其他不那么令人不快的结果。在这个阶段剪辑通常听起来很糟糕,但我提到的替代方案听起来更糟。
在这方面实际上有一个重要的考虑因素:你是在浮点还是 int 中渲染?如果是 int,你的净空是多少?使用 int,您几乎可以在任何阶段剪辑或溢出。对于浮点,这只会作为严重的设计缺陷发生。当然,在与 DAC/硬件接口(interface)时,您通常最终必须转换为 int。 DAC 将限制输出,因为它在非常特定的限制范围内处理信号。在最坏的情况下,这将相当于 0 dB FS 的(采样)白噪声(这对用户来说可能是一种糟糕的体验)。所以... DAC 用作限制器,尽管这个阶段只会显着降低信号导致听力或设备损坏的可能性。
无论如何,您可以轻松避免这种情况,我建议您自己做,因为您可以直接控制声音的数量及其幅度。在最坏的情况下,峰值为 0 dB FS 的样本都将收敛在同一个样本上,您需要将信号(发射总和)乘以发射总和的倒数:output[i] = numShots > 1 ? allThoseShots[i]*(1.0/numShots) : allThoseShots[i];
这在很多情况下并不理想(因为会有夸张的闪避声)。因此,除了整体减少同时拍摄的数量外,您实际上应该引入一个限制器。然后你以较低的因子回退镜头信号,因为它们的峰值不太可能在同一时间点收敛。一个具有约 10 毫秒前瞻的简单限制器应该可以防止你做一些糟糕的事情。在 Debug模式下检测重限制也是一个好主意,这可以捕获上游设计问题。
无论如何,你绝对应该考虑适当的增益补偿你的责任 - 你永远不想剪辑输出 DAC。事实上,你想留下一些空间(引用:样本间峰值)。
关于audio - 我需要担心程序中的整体音频增益吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5024757/
我刚刚开始使用 data-* 属性来存储查看所需的自定义属性和值。例如 。 基于data-*我正在做一些操作(CRUD)。如果用户在客户端更改 data-* 属性值(即使用 firebug 和其他
我想知道是否有人可以指出正确的方向。我最近开始使用 LinqToSQL 并喜欢强类型数据对象等。 我只是在努力了解对数据库性能等的影响。例如,假设我正在开发一个简单的用户配置文件页面。该页面显示有关用
我正在开发一个有文本区域的 Angular 应用程序。此文本区域的内容随后用于填充输入文本的预览。所有这些都在客户端完成。我担心有人能够将代码注入(inject)我的应用程序,例如 /*So
我在一台机器上运行 CDH 5.6(Hadoop 2.6,HBase 1.0.0)。只有 Hadoop 和 HBase 在运行。 Hadoop 配置为复制因子 1,Hbase 运行在 HDFS 之上,
在 SO 和其他地方,如果没有人礼貌地指出最好使用参数化输入和存储过程,几乎不可能在示例代码中发布长连接的 SQL 指令。 最近的示例 here . 但是担心 Winforms 项目中的 SQL 注入
未受攻击的计算机上的 Web 应用程序在不安全的 WiFi 环境中容易受到 XSS、CRSF、sql 注入(inject)攻击和 cookie 窃取。 为了防止这些安全问题,有以下补救措施 sql注入
我在一个执行数值计算的库上工作了一段时间。它是用纯原生 C++ 编写的,直到现在我一直在使用简单的控制台应用程序来测试它的功能。 是时候在库的顶部构建一个 GUI - 以更好地显示结果表并以图形形式呈
我是一名优秀的程序员,十分优秀!