2014-04-21 1 views
1

Je travaille sur un programme qui joue une série de Clip s (clip.start()), en moyenne un chaque seconde. Signification d'un clip est démarré, et une seconde plus tard il est arrêté et un autre clip est démarré, et ainsi de suite pour environ 10 clips. Le résultat n'est pas 'fluide', certains clips ne commencent même pas ou ne sont pas entendus.La classe Clip est-elle appropriée pour une utilisation intensive?

Ma question: est-ce que la classe Clip est appropriée pour ce genre de chose? Ou est-ce que les clips ne sont pas censés être stoppés et démarrés très fréquemment?

Si Clip n'est pas approprié, existe-t-il une classe ou une bibliothèque alternative que vous pouvez suggérer à cette fin? Ou peut-être quelques lignes directrices sur la façon de travailler avec des clips afin que ce que j'ai décrit fonctionnerait de manière fluide? (Peut-être en ce qui concerne le filetage ou quelque chose).

Répondre

0

Je n'ai pas trop d'expérience avec l'audio en Java, mais l'expérience que j'ai eu avec Clips est médiocre. J'ai trouvé que pour une raison ou pour une autre, il fallait jusqu'à une demi-seconde pour redémarrer un clip qui n'est pas acceptable (j'ai trouvé quelques vieux bogues qui semblaient être corrigés, mais c'était peut-être un nouveau bug à l'époque dans ça). Une SourceDataLine avec un tampon pour contenir tout votre son a mieux fonctionné pour moi.

Cependant, je suggère TinySound, c'est une abstraction simple qui fonctionne.

Voici l'exemple de leur page:

//initialize TinySound 
    TinySound.init(); 
    //load a sound and music 
    //note: you can also load with Files, URLs and InputStreams 
    Music song = TinySound.loadMusic("song.wav"); 
    Sound coin = TinySound.loadSound("coin.wav"); 
    //start playing the music on loop 
    song.play(true); 
    //play the sound a few times in a loop 
    for (int i = 0; i < 20; i++) { 
     coin.play(); 
     try { 
      Thread.sleep(1000); 
     } catch (InterruptedException e) {} 
    } 
    //be sure to shutdown TinySound when done 
    TinySound.shutdown(); 
Questions connexes