Announcement

Collapse
No announcement yet.

Java's AudioSystem

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Java's AudioSystem

    Hi!

    Habe folgendes Problem:
    Mit AudioSystem bekomme ich den standard Java Audio Mixer 1.0 und von dem eine SourceLine (die ich mit einem input stream verknüpfe), die mir u.a. VolumeControl zur Verfügung stellt. Caste ich nun diesen Control zu FloatControl und ändere die Lautstärke mit setValue(), so passiert nix: die Lautstärke bleibt gleich und soger beim tracen von getValue() des Controls bleibt derWert konstant (0.0).

    Was mache ich falsch?

    Hier ein Code-Ausschnitt:

    String fileName="test.wav";
    File file=new File(fileName);

    AudioInputStream
    inputStream = AudioSystem.getAudioInputStream(file);
    AudioFormat inputStreamFormat=inputStream.getFormat();

    Mixer.Info[] mixerInfoPool=AudioSystem.getMixerInfo();
    Mixer mixer=AudioSystem.getMixer(mixerInfoPool[4]);

    Line.Info[] dataLinePool=mixer.getSourceLineInfo();
    SourceDataLine sourceLine=(SourceDataLine)mixer.getLine(dataLineP ool[0]);

    Control[] controlPool=sourceLine.getControls();
    FloatControl volumeControl=(FloatControl)controlPool[0];

    System.out.println(volumeControl.getValue());//gibt 0.0 aus
    volumeControl.setValue(Float.parseFloat("0.5"));
    System.out.println(volumeControl.getValue());//ebenfalls 0.0

    sourceLine.open(inputStreamFormat);
    sourceLine.start();
    ...

    Danke vielmals für Hilfe!

  • #2
    hat sich erledigt
    ist natürlich doof, wenn man versucht etwas zu regeln, befor dieses etwas überhaupt da ist.

    für Interessierte: Die Controls der DataLines´s des JavaMixer 1.0 dürfen erst dann mit setValue() verändert werden, wenn die DataLine dazu schon geöffnet (open()) ist. Um ein Initialwert zu setzen werden beim Casten bzw. im Constructor mit einem Anfangswert belegt.

    Comment

    Working...
    X