Ik werk voor een bedrijf wat tijdschriften opneemt op cassette voor blinden. Deze tijdschriften worden voorzien van jingles. Hiervoor bestaat een systeem wat momenteel al 4 jaar non stop draait, op een machine uit het jaar 0. Als dat ding crashed, start het waarschijnlijk niet meer op, dus wordt het tijd voor een nieuw systeem.
Op de computers die deze jingles af moeten spelen moeten ook spraaksynthese programma's draaien. En natuurlijk mogen de geluiden niet door elkaar lopen, dus komen er in ieder systeem 2 geluidskaarten. De spraaksynthese moet op geluidskaart 1 draaien (en dit is niet te verzetten), en de jingles moeten uit kaart 2 komen. En hier zit nu het probleem. Ik wil in Java kunnen kiezen welke geluidskaart mijn programma moet gebruiken. Ik heb de package javax.sound.sampled al door zitten kijken, maar ik kom er zo niet uit.
Met dit stuk code vraag ik op wat ik allemaal met geluid kan doen binnen Java:
en dit komt er uit:
Mixer: Java Sound Audio Engine
Clip supported:
Line: interface SourceDataLine supporting 8 audio formats
Control: Master Gain with current value: 0.0 dB (range: -80.0 - 13.9794)
Control: Mute Control with current value: False
Control: Pan with current value: 0.0 (range: -1.0 - 1.0)
Control: Sample Rate with current value: -1.0 FPS (range: 0.0 - 48000.0)
Line: interface Clip supporting 8 audio formats, and buffers of 0 to 4194304 bytes
Control: Master Gain with current value: 0.0 dB (range: -80.0 - 13.9794)
Control: Mute Control with current value: False
Control: Pan with current value: 0.0 (range: -1.0 - 1.0)
Control: Sample Rate with current value: -1.0 FPS (range: 0.0 - 48000.0)
Mixer: Microsoft-geluidstoewijzing
Clip supported:
Mixer: SB PCI
Clip supported:
Mixer: SB PCI (2)
Clip supported:
Geluid afspelen werkt overigens, maar wel alleen door de mixer "Java Sound Engine". Deze stuurt het naar geluidskaart 1, waar dus ook de spraaksynthese uit komt.
De vraag: hoe zorg ik ervoor dat het geluid van Java uit kaart 2 komt?
Op de computers die deze jingles af moeten spelen moeten ook spraaksynthese programma's draaien. En natuurlijk mogen de geluiden niet door elkaar lopen, dus komen er in ieder systeem 2 geluidskaarten. De spraaksynthese moet op geluidskaart 1 draaien (en dit is niet te verzetten), en de jingles moeten uit kaart 2 komen. En hier zit nu het probleem. Ik wil in Java kunnen kiezen welke geluidskaart mijn programma moet gebruiken. Ik heb de package javax.sound.sampled al door zitten kijken, maar ik kom er zo niet uit.
Met dit stuk code vraag ik op wat ik allemaal met geluid kan doen binnen Java:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| try { Mixer.Info[] minfo = AudioSystem.getMixerInfo(); for (int i = 0; i < minfo.length; i++) { Mixer mixer = AudioSystem.getMixer(minfo[i]); System.out.println("Mixer: " + minfo[i].getName()); Class tempClip = Class.forName("javax.sound.sampled.Clip"); System.out.println("Clip supported: "); Line.Info[] linfo = mixer.getSourceLineInfo(); for (int j = 0; j < linfo.length; j++) { System.out.println("Line: " + linfo[j].toString()); try { Line line = mixer.getLine(linfo[0]); Control[] controls = line.getControls(); for (int k = 0; k < controls.length; k++) { System.out.println("Control: " + controls[k].toString()); } } catch (LineUnavailableException ex) { } } } } catch (ClassNotFoundException ex1) { } |
en dit komt er uit:
Mixer: Java Sound Audio Engine
Clip supported:
Line: interface SourceDataLine supporting 8 audio formats
Control: Master Gain with current value: 0.0 dB (range: -80.0 - 13.9794)
Control: Mute Control with current value: False
Control: Pan with current value: 0.0 (range: -1.0 - 1.0)
Control: Sample Rate with current value: -1.0 FPS (range: 0.0 - 48000.0)
Line: interface Clip supporting 8 audio formats, and buffers of 0 to 4194304 bytes
Control: Master Gain with current value: 0.0 dB (range: -80.0 - 13.9794)
Control: Mute Control with current value: False
Control: Pan with current value: 0.0 (range: -1.0 - 1.0)
Control: Sample Rate with current value: -1.0 FPS (range: 0.0 - 48000.0)
Mixer: Microsoft-geluidstoewijzing
Clip supported:
Mixer: SB PCI
Clip supported:
Mixer: SB PCI (2)
Clip supported:
Geluid afspelen werkt overigens, maar wel alleen door de mixer "Java Sound Engine". Deze stuurt het naar geluidskaart 1, waar dus ook de spraaksynthese uit komt.
De vraag: hoe zorg ik ervoor dat het geluid van Java uit kaart 2 komt?