J'ai un programme de travail écrit en Java avec Java Sound API qui est capable de lire plusieurs fichiers audio mp3 en même temps sur différentes cartes son USB dans le même ordinateur. Cela fonctionne bien sous Linux. Dans Mac OS X, cependant, ce n'est pas le cas.API Java Sound sur OS X avec carte son USB
La liste de mon son Mixer Infos est:
[0] Java Sound Audio Engine
[1] Built-in Input
[2] USB Advanced Audio Device
Si je choisis mélangeur [0] pour lire le fichier, il le fait avec succès avec la carte son intégrée. Si je choisis mélangeur [2] pour lire le fichier, je reçois l'exception suivante:
Exception in thread "Thread-1" java.lang.IllegalArgumentException: Line unsupported: interface SourceDataLine supporting format PCM_SIGNED 44100.0 Hz, 16 bit, stereo, 4 bytes/frame, little-endian
at com.sun.media.sound.SimpleInputDevice.getLine(SimpleInputDevice.java:142)
at javax.sound.sampled.AudioSystem.getSourceDataLine(AudioSystem.java:633)
at pt.mobbit.sensorsloader.actuators.multiaudio.AudioPlayer$AudioPlayerThread.run(AudioPlayer.java:135)
at java.lang.Thread.run(Thread.java:613)
Cependant, si je change le périphérique de sortie dans les Préférences Système de Mac OS X à l'USB carte son, puis dans mon java application Je choisis le mélangeur [0], le son sort par la carte son USB. Cela m'amène à croire que la carte son USB peut également lire les fichiers mp3 sous OS X, mais pas quand elle n'est pas le périphérique de sortie principal.
Est-ce que quelqu'un sait comment je peux reproduire le son de ma carte son USB dans OS X sans que ce soit le périphérique de sortie principal du système?
Je viens d'imprimer tout le SourceDataLine et le TargetDataLine que mes mélangeurs fournissent. Bizarrement, la carte son USB ne montre qu'un seul TargetDataLine (l'entrée microphone). Comment puis-je obtenir le SourceDataLine manifestement existant à apparaître? –