Bonjour,
j'ai fait une applet où l'on peut rajouter du son via le microphone à un enregistrement déjà existant.
(En gros, je fais des concaténations de tableaux de bytes)

Mon soucis, très embêtant est qu'à la première relecture de l'enregistrement après un rajout au milieu de la piste ( partout sauf à la fin ), j'ai un bug.

Je reconnais mes enregistrements mais ils sont sans dessus-dessous.. Ce qui est bizarre c'est que mon tableau de bytes est correct vu que je l'affiche sous forme de sinusoïde. Donc le problème vient surement du AudioInputStream.

Code Passage du tableau de bytes (newAudioBytesAjout) en inputStream(audioInputStream) : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
ByteArrayInputStream baisAjout = new ByteArrayInputStream(newAudioBytesAjout);
audioInputStream = new AudioInputStream(baisAjout, format, newAudioBytesAjout.length / frameSizeInBytes);

Mais à la relecture suivante, çà fonctionne nickel. apparemment il s'est passé quelque chose pendant la relecture...

Le seul point que je trouve suspect est la ligne :
qui est exécutée à la fin de la relecture.

Donc j'ai essayé de faire des drain() et des flush() sur mon audioInputStream mais cela ne corrige pas mon problème est apparemment ralenti énormément le temps d'exécution..

Quelqu'un pourrait-il me renseigner sur ces 2 méthodes de la classe DataLine ?
(Je ne comprend pas leurs utilités dans l'API)

Merci énormément.

ps: Le code fait plus de 800 lignes donc je vous épargne çà, mais il s'agit en fait du CapturePlayback.java (modifié) de l'exemple officiel de Sun sur JavaSound (JavaSound Demo)