La meilleure façon de le faire est d'utiliser JLayer via mp3spi ce qui signifie essentiellement que vous utilisez JLayer via JavaSound. Vous pouvez ensuite définir le gain sur la ligne comme vous le feriez dans JavaSound.
Tout d'abord, vous devrez ajouter ce qui suit à votre classpath:
- jl1.0.1.jar
- mp3spi1.9.5.jar
- tritonus_share.jar
.. .all dont sont dans la distribution pour mp3spi (lié ci-dessus).
Deuxièmement, vous devrez décoder l'AudioInputStream avant la lecture.
AudioInputStream audioStream = AudioSystem.getAudioInputStream(file);
AudioFormat baseFormat = audioStream.getFormat();
AudioFormat decodedFormat = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED, baseFormat.getSampleRate(), 16, baseFormat.getChannels(),
baseFormat.getChannels() * 2, baseFormat.getSampleRate(), false);
AudioInputStream audioStream2 = AudioSystem.getAudioInputStream(decodedFormat, audioStream);
Ensuite, vous jouez le flux décodé:
Clip clip = AudioSystem.getClip();
clip.open(audioStream2);
et les contrôles de l'API JavaSound sont disponibles:
FloatControl gainControl = (FloatControl) clip.getControl(FloatControl.Type.MASTER_GAIN);
gainControl.setValue(-30.0f);
REMARQUE: Ne pas oublier de fermer vos ressources, je viens montré les points clés pour ce problème - la familiarité avec JavaSound est attendue, read here.
cette mise en forme si/sinon me fait mal à la tête. – akf
Hey merci pour la réponse rapide! Je vais vérifier et demander à nouveau si je ne comprends pas :-) – Timothy
Ohh emm pourriez-vous me dire rapidement dans quel fichier le code que vous avez posté est trouvé? Salutations – Timothy