我正在写一个java程序。这将成为一场游戏,我对细节还不太确定,但它会涉及声音。我想知道在java中是否有办法找到默认的系统音频输出设备。我知道如何根据规格查找设备,但我想知道是否有办法访问用户设置为默认的输出,因为它并不重要,但我不喜欢它们的规格。我希望他们必须选择输出,如果我可以避免它,我不知道什么设备工作或他们想要的。如果我可以访问默认音频,我可以绕过整个过程。我在堆栈溢出时发现了另一个问这样的问题,但是他们不需要一条线,只需访问计算机发出的任何声音。无论如何,它没有任何好的答案。我还没有找到与此主题相关的任何其他内容。
美国东部时间:我找到了一个可能的解决方案,并将其发布在下面。但是,它使用midi音频 样本音频,如果可能的话,我更喜欢使用采样音频的解决方案。
答案 0 :(得分:0)
我找到了答案。我之前没有找到它,因为它远远超出了访问音频系统资源的踪迹。在涉及获取线条的所有其他事情之后,它来了这是一段摘录:
“获取默认设备
使用Java Sound API的典型MIDI应用程序首先获取所需的设备,可以包含一个或多个音序器,合成器,输入端口或输出端口。
默认合成器设备,默认音序器设备,默认发送设备和默认接收设备。如果系统上有任何可用设备,后两个设备通常分别代表MIDI输入和输出端口。 (很容易对此处的方向性感到困惑。想想端口与软件相关的传输或接收,而不是与连接到物理端口的任何外部物理设备有关.MID输入端口将数据从外部设备传输到Java Sound API接收器,同样MIDI输出端口从软件对象接收数据并将数据中继到外部设备。)
一个简单的应用程序可能只使用默认值而不是浏览所有已安装的设备。 MidiSystem类包括以下用于检索默认资源的方法:
static Sequencer getSequencer()
static Synthesizer getSynthesizer()
static Receiver getReceiver()
static Transmitter getTransmitter()
这两种方法中的前两种获得系统的默认排序和综合资源,它们代表物理设备或完全用软件实现。 getReceiver方法获取一个Receiver对象,该对象接收发送给它的MIDI消息并将它们中继到默认接收设备。类似地,getTransmitter方法获得一个Transmitter对象,该对象可以代表默认发送设备将MIDI消息发送给某个接收器。“
所以基本上你会用
MidiSystem.getTransmitter();
获取默认输出和
MidiSystem.getReceiver();
获取默认输入。