我对如何使用Java的< code > SourceDataLine . write()方法中的< code>byte[]-buffer有点困惑:在我的程序中,我试图生成音频数据,我通过source dataline回放这些数据。但是,我生成的是< code > double -值,并且一个样本使用4个字节(my < code > audio format :< code > new audio format(8000 f,32,1,true,true))。
将一个双精度
转换为四个字节
s(/“播放”双精度值)的最佳方法是什么?
[PS:32 bis的样本大小适合正常音频播放吗?]
链接的答案对此进行了非常详细的介绍,但我会回答您的直接问题。首先,我假设您的双精度值在 -1.0 到 1.0 的范围内。这通常是设置。要转到 32 位有符号整数,您需要进行缩放,使 1.0 变为0x7fffffff -1.0 变为0x80000001这可以通过简单的乘法来完成。
int sampleInt = sampleDouble * 0x7fffffff;
接下来,您需要将整数分割成字节:
byte[0] = (byte)((sampleInt >> 24) & 0xff);
byte[1] = (byte)((sampleInt >> 16) & 0xff);
byte[2] = (byte)((sampleInt >> 8) & 0xff);
byte[3] = (byte)((sampleInt >> 0) & 0xff);
根据输出的尾数,您可能需要交换顺序。
问题内容: 我想用Swift播放声音。 我的代码在Swift 1.0中可用,但现在在Swift 2或更高版本中不再起作用。 问题答案: 最可取的是,您可能想使用 AVFoundation。它提供了使用视听媒体的所有必要条件。 更新: 某些评论中建议与 Swift 2 , Swift 3 和 Swift 4 兼容。 斯威夫特2.3 迅捷3 Swift 4(与iOS 13兼容) 确保更改乐曲的名称以及
问题内容: Octave似乎假设某个特定的声音播放实用程序将在系统上可用,但似乎没有提供指定备用声音的功能。在以下错误中,Octave正在寻找,这不是在所有系统上都可用的实用程序。 八度:38>声音(beamformed_20) sh:ofsndplay:找不到命令 是否可以使用Octave配置设置或代码片段来指定适合系统的实用程序? 问题答案: 在我的一台Linux机器上,我创建了以下ofsnd
问题内容: 我希望能够在程序中播放声音文件。我应该去哪里看? 问题答案: 我写了下面的代码,效果很好。但我认为它仅适用于格式。
我刚刚开始使用JavaFX。我知道它的基本原理。我尝试使用media和mediaplayer类播放一个声音,叫做“sound.mp3”。我正在eclipse中编程,我在src文件夹中有声音文件,与“(默认包)”相同的文件夹。下面是我的代码: 请告诉我我做错了什么。 下面是来自控制台的错误消息:
我希望能够在我的程序中播放声音文件。我应该去哪里?
问题内容: 我正在编写一个简单的Java程序。我需要从输入中获取一个字符串并将其分为两部分:1-double 2-string。然后,我需要对double进行简单的计算,并将结果发送到具有特定精度的输出(4)。它工作正常,但是当输入为0时出现问题,则不能正常工作。 例如,对于这些输入,输出将是: 1公斤 输出:2.2046 3.1公斤 输出:6.8343 但是当输入为0时,输出应为0.0000,但