# Sound auf zwei Lautsprechern getrennt abspielen



## psychodad (9. Jun 2010)

Hallo,

gibt es eine Möglichkeit mit Java auf beiden Lautsprechern getrennt verschiedene Geräusche/Dateien abzuspielen?

Danke, Stefan


----------



## HoaX (9. Jun 2010)

ja


----------



## psychodad (9. Jun 2010)

und wie? gibts irgendwo beispielcode?


----------



## Tomate_Salat (9. Jun 2010)

HoaX hat gesagt.:


> ja



Ok, er hat gefragt nach dem *OB ES GEHT*. Ich bin ja auf für das Prinzip: erst denken, dann frage schreiben. Aber in dem falle kann man sich doch denken, dass er sich auch für die Umsetzung interessiert...


----------



## Steev (9. Jun 2010)

...und die Umstzung nicht hinschreiben...

Du meinst einfach Stereo-Sounds? Eigendlich sollten da normale gesampelte Sounds ausreichen, aber auch applett.AudioClip.

[Java]public class SoundTest {

    /** Creates a new instance of SoundTest */
    public SoundTest() {
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {

        try{
            AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(new File("C:/WINNT/Media/Windows-Anmeldeklang.wav"));
            AudioFormat af     = audioInputStream.getFormat();
            int size      = (int) (af.getFrameSize() * audioInputStream.getFrameLength());
            byte[] audio       = new byte[size];
            DataLine.Info info      = new DataLine.Info(Clip.class, af, size);
            audioInputStream.read(audio, 0, size);

           // for(int i=0; i < 32; i++) {
                Clip clip = (Clip) AudioSystem.getLine(info);
                clip.open(af, audio, 0, size);
                clip.start();
           // }
        }catch(Exception e){ e.printStackTrace(); }

    }

}[/Java]

Hier einige Beispiele & Links:
Galileo Computing :: Java ist auch eine Insel (8. Auflage) – 10.8 Musik abspielen
Clip (Java 2 Platform SE 5.0)


----------



## Tomate_Salat (9. Jun 2010)

Steev hat gesagt.:


> ...und die Umstzung nicht hinschreiben...



Hä, meinste mich damit? Falls ja: Ich kann die Umsetzung nicht hinschreiben, da ich noch nie mit Sounds gearbeitet hab in Java und die Umsetzung deswegen nicht kenne^^
;-)


----------



## psychodad (10. Jun 2010)

Hi, danke für die Antworten - samt Umsetzung 

Ne also ich meinte eher das getrennte Abspielen auf linken/rechten Lautsprecher von zwei Audiodateien/streams. Also z.B. auf dem linken der Anmeldesound von Windows und auf dem rechten Beethovens 5te oder so. Brauch das wiel ich ein psychologisches Experiment programmieren muss.


----------



## Steev (10. Jun 2010)

Dazu müsstest du ja nur den Pan auf -1.f bzw. +1.f einstellen. Das geht anhand des obigen Beispieles:

[Java]FloatControl panControl = (FloatControl) clip.getControl(FloatControl.Type.PAN);
panControl.setValue(gain);[/code]

FloatControl.Type (Java 2 Platform SE 5.0)

Gruß
Steev


----------



## Marlon (24. Jun 2010)

Ich habe den obigen Code uebernommen und es somit geschafft, einen WAV Sound abzuspielen (Nachdem alle mp3 Gerueste bei dem Versuch, die Lautstaerke oder die Balance zu aendern gescheitert sind).
Leider komme ich auch hier nicht weiter, wenn ich nun die Stereobalance oder die Lautstaerke aendern moechte.

Folgende Fehlermeldung erhalte ich:


```
java.lang.IllegalArgumentException: Unsupported control type: Pan
	at com.sun.media.sound.AbstractLine.getControl(Unknown Source)
```

Weiss jemand einen Rat?


----------



## Steev (25. Jun 2010)

Das bedeutet, dass du für den aktuellen Sound nicht die Balance ändern kannst, weil dies nicht unterstützt wird.
Lösungsansatz: Sample-Rate des Sounds ändern und es wieder probieren.

Gruß
Steev


----------

