问题标签 [javasound]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 将原始字节转换为音频声音
在我的应用程序中,我从 freeTTS 包继承了一个 javastreamingaudio 类,然后绕过 write 方法,该方法将字节数组发送到 SourceDataLine 以进行音频处理。我没有写入数据线,而是将此字节数组和后续字节数组写入缓冲区,然后将其带入我的班级并尝试处理成声音。我的应用程序将声音处理为浮点数组,因此我转换为浮点数并尝试处理但总是得到静态声音。
我确信这是要走的路,但在此过程中遗漏了一些东西。我知道声音是作为帧处理的,每个帧都是一组字节,所以在我的应用程序中,我必须以某种方式将字节处理成帧。我以正确的方式看待这个吗?提前感谢您的帮助。
java - getAudioInputStream 无法将 [立体声,4 字节/帧] 流转换为 [单声道,2 字节/帧]
我正在使用 javasound 并有一个 AudioInputStream 格式
PCM_SIGNED 8000.0 Hz, 16 bit, stereo, 4 bytes/frame, little-endian
当target_formatAudioSystem.getAudioInputStream(target_format, original_stream)
为PCM_SIGNED 8000.0 Hz, 16 bit, mono, 2 bytes/frame, little-endian
是否可以在每次 read() 调用后手动转换此流?如果是,如何?
一般来说,您如何比较两种格式并判断是否可以进行转换?
java - 音频剪辑卡住
我看到Clip
Java 中的实例有一些奇怪的行为。
我正在处理的类的目的是计算Clip
包含相同声音样本的实例数(由 索引URI
。)当应用程序请求播放剪辑并且已经有来自同一源的三个或更多剪辑已经播放时,执行以下步骤:
- 按 和 的加权和对当前播放的剪辑进行
PAN
排序framePosition
。 - 选择具有最高值的剪辑作为要停止和重新启动的剪辑。
- 重新开始剪辑(如下方法):
如果快速连续多次调用此方法(例如 1ms 内 20 次),则会出现奇怪的行为:
- 剪辑播放
- 剪辑触发一个
START
事件以表明它已开始播放 - 剪辑从不触发
STOP
事件。 - 后续调用
stop
并start
没有效果(但不要抛出异常。) - getFramePosition总是返回
0
,即使剪辑是可听的(最后一次)。
知道是什么原因造成的吗?
我认为这不是线程问题(至少在我的代码中没有。)只有一个线程在调用我的类的公共方法(synchronized
无论如何它们都是)
可能与此错误有关。
java - 有没有办法让 JavaSound 使用安装在你的 SO 上的编解码器?
我正在使用带有以下代码的 java Sound:
但是要播放 mp3,tihs 要求我的类路径上有一个 SPI……没关系,尽管我一直在寻找一种方法来使用安装在 SO 中的编解码器。有没有办法做到这一点?
java - 应用程序中的 Java 游戏声音(例如,不是小程序)
我有两个问题 - (1) 如何播放小的声音片段,例如飞碟飞行、子弹射击、被子弹击中的东西等。声音很短但实时。我喜欢旧的街机声音,所以它们不必是大的 .wav 的。我想以尽可能少的代码运行这些。这就引出了我的第二个问题…… (2) 有谁知道在哪里可以找到这些声音片段。
一点说明,我在这里看到了一些答案,它们似乎不完整。如果您有一个直接的通用代码,那就太好了!我对声音知之甚少,因为我通常不会在我的游戏写作中走到这一步。
感谢您提供的所有信息 - 我非常感谢!
java - Java 中的回声消除
我正在实现一个使用纯 Java 的 VOIP 应用程序。当用户不使用耳机时会出现回声问题(主要是在带有内置麦克风的笔记本电脑上)。
目前发生的事情
VOIP 应用程序的具体细节只是 Java 媒体框架的普通数据线。本质上,我想在将音频数据写入扬声器进行输出之前对音频数据进行一些数字信号处理。
如您所见,音频数据到达并在缓冲区中排队。这是为了迎合狡猾的连接并允许不同的数据包大小。这也意味着在将音频数据播放到扬声器线路之前,我可以访问任何花哨的 DSP 操作所需的尽可能多的音频数据。
我已经管理了一个可以工作的回声消除器,但是它需要大量交互式用户输入,我想要一个自动回声消除器。
手动回声消除器
自适应过滤器
我读过自适应滤波器是要走的路。具体来说,最小均方滤波器。但是,我被困住了。上面的大多数示例代码都是用 C 和 C++ 编写的,它们不能很好地翻译成 Java。
有人对如何在 Java 中实现它们有建议吗?任何其他想法也将不胜感激。提前致谢。
java - Java Audio - 如何在游戏中播放歌曲(应用程序,而不是 Applet)
最后编辑 - 需要两个简单的答案。
1)我能够使代码与 URL 一起使用(它是来自以下响应之一的代码)。但我的歌曲是在一个 wav 文件中。当我尝试执行 File url = new File("---"); 时,它不起作用。
相反,在堆栈跟踪中(感谢那个提示!),它说
"Failed to allocate clip data: Requested buffer too large"
我正在尝试播放的歌曲是 techno,大约 3 分钟长。
如何解决剪辑数据大小问题?
java - 在 Java 中读取 MIDI 文件
我正在尝试将 .MID 文件读入 Java 程序,并希望将每个音符/和弦分开,以便在某种 UI 上显示它们。我在 Java 中使用 Sequencer API 运气不佳,并且尝试直接使用 MidiFileReader 对我也不起作用。如果有人想看,我会附上我在这里使用的代码:
java - 用 Java 播放可变音调?
回到我高中的 Pascal 课上,我有一个有趣的小程序,它可以接收一个整数,然后使用系统扬声器播放一个音调。音调的音高会根据 int 而有所不同。
Java 世界中是否存在这样的功能?另一种方法是引入 wav 或 ulaw,然后改变频率?
谢谢,
IVR 复仇者
java - 什么是 MIDI 音库?
我是 MIDI 的新手。MIDI 音库是否包含 MIDI 合成器转换为 PCM 音频的“指令”[原文如此]?
我有许多可变持续时间的音频(目前在 PCM 中,因此是我的问题),我想根据服务器生成的时间线对它们进行排序(如果你愿意的话)并提供播放(和混合它们)的指令。MIDI 在逻辑上似乎是答案,尽管我对究竟什么是音库以及它是否确实只是一组 PCM 声音有点模糊?
更新:我最初是从 Java 看这个。