- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的 Android 应用程序正在尝试生成白噪声以在 Android 设备上播放。目前,我正在生成一个随机数数组,它是 AudioTrack.getMinBufferSize(...) 短裤,并在计时器中循环。它看起来像这样:
INTERVAL_MILLISECONDS = (int)((double)(bufSize) / (double)(nativeSampleRate * 2) * 1000);
timer.scheduleAtFixedRate( new TimerTask() {
public void run() {
synchronized(this){
//System.out.println("playing. Sample rate is + " + nativeSampleRate + ", buffer is " + data.length + " shorts long, interval is " + INTERVAL_MILLISECONDS);
track.write(data, 0, bufSize);
track.play();
}
}
}, 0, INTERVAL_MILLISECONDS);
但是当我在我的 android 模拟器上收听它时,我听到了白噪声以及一种很难描述的非常快速的“跳动”或“咩咩”节奏。我不是音响工程师,有人可以为我指明正确的方向,说明为什么会这样吗?
********* ***** 更新 ********* ***我只是做了几个变体,一个是我确保我的样本量是整数毫秒长,另一个是我将我的样本量设为整整一秒长。
样本大小为 8820(5 毫秒长,但仍超过最小值 8192),跳动没有变化。
但是,样本量为 44100(整秒)时,跳动消失了。有没有可能我使用的计时器在小间隔内不准确?
最佳答案
问题似乎出在您产生白噪声的方式上。我不知道关于在 android 上编程的第一件事,但如果我正确理解这个问题,你正在创建一个缓冲区的随机数据值(value),然后一遍又一遍地循环。
问题(正如您的更新指出的那样)是这个单个缓冲区每秒重复几次。这意味着它不再是“白”(即完全随机的)噪声。变成周期性的了
您的大脑非常擅长识别周期性波形,因此您会听到这种跳动。这是你的大脑告诉你除了白噪声之外还有其他事情正在发生。在这里,您在 5.38Hz 附近引入了一个强大的分量,在调制其余音频时,您将其解释为“跳动”效果。
当您增加缓冲区长度时,跳动消失(或降低到可感知以下),因为在 44100 个样本时您的大脑不再有足够的空间来锁定,因此无法识别序列是周期性的。低频信息仍然存在。
生成完美的白噪声 isn't as straightforward as you might think! .在您的情况下,我认为最好使噪声缓冲区尽可能长 - 当然取决于您正在构建的应用程序的上下文。
关于android - 为什么我的白噪声有跳动/爆音/咩咩声?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7194189/
我正在尝试通过在 View 加载后来回更改 alpha 级别来使其中包含图像的 uibutton 缓慢脉动... 目前我正在这样做,但它什么也没做...... -(void)loopdyloop {
我在使用 UITableView 时遇到了这个问题,tableView 的 cells 高度不同,自动布局约束设置不当。当您向下滚动到 tableView 的底部并加载更多数据(无论使用 reload
我是一名优秀的程序员,十分优秀!