Sequenceur fiable

vienin Messages postés 2 Date d'inscription dimanche 12 septembre 2004 Statut Membre Dernière intervention 13 juillet 2005 - 12 juil. 2005 à 14:29
vienin Messages postés 2 Date d'inscription dimanche 12 septembre 2004 Statut Membre Dernière intervention 13 juillet 2005 - 13 juil. 2005 à 11:00
Salut a tous,



Voila je suis en train de concevoir une boite a rytmes en java et je
commence donc par le sequenceur. Pour l'instant je veut simplement
jouer un son en repetition à un interval donné, j'ai essayer plusieures
techniques mais aucune n'a l'air vraimment fiable, les sons ne sont pas
en rytmes.



J'ai tout d'abord essayer avec un Thread et une boucle infinie dnas la
quelle j'ai placé un sleep() apres la lecture du son, puis j'ai
utiliser le Timer de swing et celui de Util mais tjrs rien de reelement
fiable alors que c'est une version qui ne joue qu'un seul son.

J'ai penssé optimisé la lecture du son en lancant à chaque interval un
nouveau Thread qui se charge de jouer le son de son coté, et cela va
deja mieu.



En tout cas j'ai pu voir quelques boite a rytmes faite en java ou les
rytmes etait fiables ( mais ou les developpeurs n'ont pas consentit à
ce qu'on comprenne comment il ont fait... ) et je me demandait donc si quelqun connaissait une bonne technique.

Dailleur si quelqun connait la maniere la plus optimale pour jouer un son, cela mintersse.



merci a tous

2 réponses

schizogames Messages postés 18 Date d'inscription dimanche 9 novembre 2003 Statut Membre Dernière intervention 12 juillet 2005
12 juil. 2005 à 21:58
salut, je m'intéresse aussi à la MAO et je projette de réaliser un séquenseur MIDI en java (plus particulièrement sous Symbian OS série 60....comme la n-gage ou le 6600 de Nokia).......bref. Quoiqu'il en soit tu dois déjà disposer d'une documentation très détaillée sur les bibliothèques de lecture audio (y'a-t-il des temps de latence à la lecture ? est-ce que ça dépend du hardware (carte son, etc...) ? Est-il possible de synchroniser plusieurs lecteur d'échantillons (=est-ce qu'on a un moyen de synchroniser la lecture de plusieurs instances de Player ?).

Sans ces renseignement ce n'est pas la peine de commencer. Pour ce qui est de l'audio, je serais étonné que les API disponibles permettent ces opération (sauf peut-être JMF ? j'ai pas trop regarder, mais je sais qu'y a de nombreux exemples et des tutoriaux....si tu trouve quelquechose ce sera là).

Enfin, les fonctionnalités audio font appels à des drivers et des routines des systèmes d'exploitation....tout ça pour dire qu'avec JAVA on ne voit rien et on est dans le flou (comment ça se passe derrière ?). Avec des langage come le C/C++, on est plus proche de la machine et des mécanismes "réels". On peut par exemple se dire "je vais utiliser le driver directX ou bien ASIO qui ont teles caractéritiques)

En gros, ce genre de logiciel c'est très complexe car ça demande des connaissances très générales en informatique (et en traitement des signaux si tu veux faire un petit mixeur avec de l'égalisation...).

En tout cas ne perd pas de temps et va directement consulter l'API JMF....c'est la seule issue pour faire de l'audio ou du multimédia complexe en java (de manière simple)
0
vienin Messages postés 2 Date d'inscription dimanche 12 septembre 2004 Statut Membre Dernière intervention 13 juillet 2005
13 juil. 2005 à 11:00
Ok merci, la JMF a l'air de demonter.



Pour ce qui est de sequenceur j'ai trouver la nouvelle classe Timer de
javax.management qui fonctionne en mode producteur / consomateur et sa
a l'air pa mal du tout mais je ne comprend pas bien comment l'utiliser
sachant que je doit passer un Objet userData qui sera notifier en
repetitition pour quil execute une action (en l'ocurence jouer un son)
mais je ne trouve pas quelle methode il doit implementer pour executer
l'action.



public Integer addNotification(String type,
String message,
Object userData,
Date date,
long period,
long nbOccurences)
throws IllegalArgumentException


type
- The timer notification type.<dd>
message
- The timer notification detailed message.<dd>
userData
- The timer notification user data object.<dd>
date
- The date when the notification occurs.<dd>
period
- The period of the timer notification (in milliseconds).<dd>
nbOccurences
- The total number the timer notification will be emitted.

voila si quelqun connait ce nouveau package !

ps : il est evident que le java c pour ce lancer et que tout cela finira en c++, sauf peut etre pour le Midi
0