65 |
import org.linuxsampler.lscp.AudioOutputChannel; |
import org.linuxsampler.lscp.AudioOutputChannel; |
66 |
import org.linuxsampler.lscp.AudioOutputDevice; |
import org.linuxsampler.lscp.AudioOutputDevice; |
67 |
import org.linuxsampler.lscp.Parameter; |
import org.linuxsampler.lscp.Parameter; |
68 |
|
import org.linuxsampler.lscp.ParameterFactory; |
69 |
|
|
70 |
import static org.jsampler.view.fantasia.FantasiaI18n.i18n; |
import static org.jsampler.view.fantasia.FantasiaI18n.i18n; |
71 |
import static org.jsampler.view.fantasia.FantasiaPrefs.preferences; |
import static org.jsampler.view.fantasia.FantasiaPrefs.preferences; |
90 |
setOptionsPane(optionsPane); |
setOptionsPane(optionsPane); |
91 |
|
|
92 |
int id = model.getDeviceId(); |
int id = model.getDeviceId(); |
93 |
setDeviceName(i18n.getLabel("AudioDevicePane.lDevName", id)); |
String s = model.getDeviceInfo().getDriverName(); |
94 |
|
setDeviceName(i18n.getLabel("AudioDevicePane.lDevName", id, s)); |
95 |
} |
} |
96 |
|
|
97 |
protected void |
protected void |
119 |
private final JLabel lChannels |
private final JLabel lChannels |
120 |
= new JLabel(i18n.getLabel("AudioDevicePane.lChannels")); |
= new JLabel(i18n.getLabel("AudioDevicePane.lChannels")); |
121 |
|
|
122 |
private final JSpinner spinnerChannels |
private final JSpinner spinnerChannels; |
|
= new JSpinner(new SpinnerNumberModel(1, 1, 50, 1)); |
|
123 |
|
|
124 |
private final JLabel lChannel = |
private final JLabel lChannel = |
125 |
new JLabel(i18n.getLabel("AudioDevicePane.lChannel")); |
new JLabel(i18n.getLabel("AudioDevicePane.lChannel")); |
154 |
p.add(Box.createRigidArea(new Dimension(12, 0))); |
p.add(Box.createRigidArea(new Dimension(12, 0))); |
155 |
p.add(lChannels); |
p.add(lChannels); |
156 |
p.add(Box.createRigidArea(new Dimension(5, 0))); |
p.add(Box.createRigidArea(new Dimension(5, 0))); |
157 |
|
|
158 |
|
Parameter<Integer> prm = |
159 |
|
audioDeviceModel.getDeviceInfo().getChannelsParameter(); |
160 |
|
int min = 1; |
161 |
|
if(prm.getRangeMin() != null) min = prm.getRangeMin().intValue(); |
162 |
|
int max = 10000; |
163 |
|
if(prm.getRangeMax() != null) max = prm.getRangeMax().intValue(); |
164 |
|
|
165 |
|
spinnerChannels = new JSpinner(new SpinnerNumberModel(1, min, max, 1)); |
166 |
|
if(prm.isFixed()) spinnerChannels.setEnabled(false); |
167 |
p.add(spinnerChannels); |
p.add(spinnerChannels); |
168 |
p.setOpaque(false); |
p.setOpaque(false); |
169 |
|
|
223 |
cbChannel.addItem(chn); |
cbChannel.addItem(chn); |
224 |
} |
} |
225 |
|
|
226 |
Parameter[] pS = audioDeviceModel.getDeviceInfo().getAdditionalParameters(); |
updateParams(audioDeviceModel.getDeviceInfo()); |
|
additionalParamsTable.getModel().setParameters(pS); |
|
227 |
additionalParamsTable.getModel().addParameterListener(new ParameterListener() { |
additionalParamsTable.getModel().addParameterListener(new ParameterListener() { |
228 |
public void |
public void |
229 |
parameterChanged(ParameterEvent e) { |
parameterChanged(ParameterEvent e) { |
286 |
if(a != na) checkActive.setSelected(na); |
if(a != na) checkActive.setSelected(na); |
287 |
|
|
288 |
AudioOutputDevice d = e.getAudioDeviceModel().getDeviceInfo(); |
AudioOutputDevice d = e.getAudioDeviceModel().getDeviceInfo(); |
289 |
|
updateParams(d); |
|
Parameter[] params = d.getAdditionalParameters(); |
|
|
additionalParamsTable.getModel().setParameters(params); |
|
290 |
|
|
291 |
int idx = cbChannel.getSelectedIndex(); |
int idx = cbChannel.getSelectedIndex(); |
292 |
cbChannel.removeAllItems(); |
cbChannel.removeAllItems(); |
307 |
|
|
308 |
audioDeviceModel.setBackendChannelParameter(c, e.getParameter()); |
audioDeviceModel.setBackendChannelParameter(c, e.getParameter()); |
309 |
} |
} |
310 |
|
|
311 |
|
private void |
312 |
|
updateParams(AudioOutputDevice d) { |
313 |
|
Parameter p = d.getSampleRateParameter(); |
314 |
|
boolean b = p == null || p.getName() == null || p.getValue() == null; |
315 |
|
Parameter[] params = d.getAdditionalParameters(); |
316 |
|
Parameter[] p2s; |
317 |
|
if(b) p2s = new Parameter[params.length]; |
318 |
|
else p2s = new Parameter[params.length + 1]; |
319 |
|
|
320 |
|
for(int i = 0; i < params.length; i++) p2s[i] = params[i]; |
321 |
|
|
322 |
|
if(!b) p2s[params.length] = p; |
323 |
|
|
324 |
|
additionalParamsTable.getModel().setParameters(p2s); |
325 |
|
} |
326 |
} |
} |
327 |
|
|
328 |
} |
} |