带有Port(s)和DataLine(s)的JavaSound混音器?

JavaSound API程序员指南中的图表似乎暗示(第19-20页)混音器原则上可以同时具有DataLines和Ports。 但是,我想知道是否有人真的看到过这种配置? 我目击的是,在相关的情况下,混音器成对出现,一个带有源/目标数据线,另一个带有相应的端口。

有没有人目睹了指南中隐含的配置,混音器有端口和数据线(或者我误解了指南)?

似乎JavaSound API的目的是允许Mixer同时处理DataLines和Ports。 但是,包含在JRE中的API的Sun实现有四个具体类(DirectAudioDevice,SimpleInputDevice,HeadspaceMixer和PortMixer),每个类只处理一个或另一个。 它们具有映射到操作系统处理音频的方式的本机方法,并且保持逻辑分离(类不小)是有意义的。 没有1:1的DataLines到端口(例如我有5x DirectAudioDevice和3x PortMixer)所以程序员可以决定使用什么(或向用户公开以进行控制)。 也许有针对特定设备的API的第三方实现将两者合并为一个混合器实现,但是我还没有看到。

我正在为我的网站pscode.org开发这个,但尚未完成它。 在任何情况下,它都可以很好地概述音响系统作为applet或应用程序。

/*    */ import javax.imageio.ImageIO; import javax.sound.sampled.*; import javax.sound.midi.*; import java.awt.*; import java.util.Arrays; import java.util.ArrayList; import javax.swing.*; import javax.swing.table.DefaultTableModel; import javax.swing.tree.*; import javax.swing.event.*; import javax.swing.text.Position; public class MediaTypes extends JApplet { JTable table; boolean sortable = false; JTree tree; public void init() { Runnable r = new Runnable() { public void run() { MediaTypes mediaTypes = new MediaTypes(); String show = ""; if (getParameter("show")!=null) { show = getParameter("show"); } JPanel p = new JPanel(); mediaTypes.createGui(p, show); add(p); validate(); } }; SwingUtilities.invokeLater(r); } public static void main(String[] args) { Runnable r = new Runnable() { public void run() { MediaTypes mediaTypes = new MediaTypes(); JPanel p = new JPanel(); mediaTypes.createGui(p); JOptionPane.showMessageDialog(null,p); } }; SwingUtilities.invokeLater(r); } public Object[][] mergeArrays(String name1, Object[] data1, String name2, Object[] data2) { Object[][] data = new Object[data1.length+data2.length][2]; for (int ii=0; ii 

截图

显示一些典型的声线细节