Toon posts:

[Java] Geluidskaart kiezen.

Pagina: 1
Acties:

Verwijderd

Topicstarter
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:
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?

Verwijderd

Topicstarter
Nog even wat rondgekeken op de site van sun:
Sampled Audio

The sampled audio part of the implementation has the following limitations:

- The Port interface is not implemented on Linux (RFE 4782900)
- There is only one Mixer available which provides SourceDataLines. In other words, you can only use the default soundcard for playback. (RFE 4233634)
This limitation has been fixed for Linux in J2SE version 1.4.2 with ALSA support.
Note: there are several Mixers with TargetDataLines, one for each soundcard, so it is possible to choose from which soundcard is recorded.
- Synchronization not implemented (Mixer.synchronize())
Eens kijken of ik een andere oplossing kan vinden...

Verwijderd

Misschien is het een kul opmerking maar zover ik weet kan je met directsound (direct X) zelf je apparaat kiezen waar je op wil afspelen.
Echter is zover ik weet niet echt mogelijk om direct X te combineren met java.

  • hobbit_be
  • Registratie: November 2002
  • Laatst online: 04-07-2025
een lullig ding dat ik deed was eentje op het linker kanaal zetten en de ander op het rechter...

  • emkedouwe
  • Registratie: September 2001
  • Laatst online: 26-11-2021
Ik zou ook graag een applicatie willen maken waar je per player je audio output kan kiezen.

Heb je inmiddels al een oplossing ??

  • DaCoTa
  • Registratie: April 2002
  • Laatst online: 18:26
Is een idee om met zoiets als fmod aan de gang te gaan?

  • emkedouwe
  • Registratie: September 2001
  • Laatst online: 26-11-2021
Zo de specs die liegen er niet om, alleen is er geen ondersteuning voor JAVA.

Is het niet mogelijk om iets met de port, of de functie getLine te doen ? Ik heb 1 geluidskaart met 8 output poorten die je ook allemaal in het lijstje ziet bij output devices.

Dit komt van: http://java.sun.com/j2se/...ammer_guide/chapter2.html
The simplest mixer has just one target data line, but some mixers can deliver captured data to multiple target data lines simultaneously.
Pagina: 1