ola,
en utilisant la librairie promidi, j'ai souvent un rapport d'erreur qui apparait lors de la transmission de notes midi.
java.lang.ArrayIndexOutOfBoundsException: 0
at java.util.AbstractCollection.toArray(Unknow Source)
at promidi.MidiOut$NoteBuffer.run(MidiOut.java:263)
c'est une sortie de tableau (sachant que mes tableaux ont l'air corrects) ou un problème de buffer de note?
Sachant que le message apparait au bout d'un certains temps d'utilisation...
Hors ligne
Yep,
Chelou ... quelqu'un sur le forum de processing semble avoir eu plus ou moins le même problème, la réponse n'est pas forcément très convaincante ...
citation :
Bosch, im getting that exact same error too. notes being locked on. I think it might happen when you try to send too much midi information at once. After that error it will send send midi notes and continue to function just certain notes are locked on.
--> http://processing.org/discourse/yabb_be … 1203105220
Vérifie ton code et blinde-le de contrôles ...
Sinon, tu peux toujours essayer de catcher ton erreur :
Pour le trt de l'erreur, tu pourrai, par ex., ré-instancier ton objet midi (je ne sais pas du tout si ça marche ...).
+
+
Hors ligne
salut 22_80!
merci pour ta régularité dans tes réponses
j'ai inclus la méthode try/catch dans mon sketch, cependant, j'ai pas bien saisi leur fonctionnalité et la notion d'exception... a voir plus tard.
l'erreur semble apparaitre moins souvent.
j'ai pas trop de notion de contrôle d'erreurs ....
pour la ré-instanciation de l'objet rafraichi dans la boucle, ça fait planter encore plus.
++
Hors ligne
Oui, période creuse au taf en ce moment ...
Un bloc try-catch te sert à intercepter une exception : en gros, si dans le code situé dans le bloc try déclenche une exception, tu as la possibilité de personnaliser les instructions qui seront effectuées après (le bloc catch):
citation :
Pour traiter les erreurs, Java propose un mécanisme qualifié d'exception, consistant à effectuer les instructions dans un bloc d'essai (le bloc try) qui surveille les instructions. Lors de l'apparition d'une erreur, celle-ci est lancée dans un bloc de traitement d'erreur (le bloc catch, appelé handler d'exception) sous forme d'un objet appelé Exception.
Le bloc de traitement d'erreur va lever (il s'agit du terme technique, certains diront aussi intercepter) l'exception. Le handler d'exception peut alors traiter l'erreur (en signalant l'erreur par exemple, ou en attendant avant de réessayer, ...)
citation :
pour la ré-instanciation de l'objet rafraichi dans la boucle, ça fait planter encore plus.
La ré-instanciation de ton objet midi semblait assez fantaisiste ... mais on sait jamais ...
+
+
Dernière modification par 22_80 (2008-05-30 11:23:57)
Hors ligne
ok merci pour le cours en ligne hehe
j'obtiens moins souvent mon erreur de tableau mais par contre j'ai une nouvelle exception qui arrive.
ConcurrentModificationException .
l'instentiation de mon objet midi est faite dans le constructeur de la class des objets déclenchant les notes.
il est donc initialisé à la construction des objets donc dans le setup.
++
Hors ligne
ConcurrentModificationException
http://www.developpez.net/forums/showthread.php?t=11610 :
citation :
Tu dois faire 2 acces concurrents sur tes collections.
Si tu parcours ta collection et en meme temps tu lui rajoute, supprime ou modifie des elements ca pose probleme...
Ce que tu peux faire c'est créer une copie de ta collection pour la parcourir et faire les changement dans ta veritable collection.
...
Si tu veux, je posterais ce soir le squelette du code que j'utilise avec proMidi ... je n'ai jamais eu de problème avec cette librairie ...
Bon courage.
Dernière modification par 22_80 (2008-05-30 13:37:46)
Hors ligne
ok
j'essaie de voir avec ces précieux renseignements ... encore une notion nouvelle (collection)
je veux bien jeter un œil sur ton utilisation de promidi.
merci
++
Hors ligne
Oui, j'ai peur de t'embrouiller plus qu'autre chose.
Collection est juste l'interface mère de toutes les listes, sets, maps qu'on peut trouver en java.
Un peu comme un carré n'est jamais qu'un rectangle particulier, une ArrayList est une implémentation de Collection.
http://java.sun.com/j2se/1.4.2/docs/api … ction.html
Hors ligne
Yop, je sais pas si ça t'aideras vraiment ... à part du copier-coller des exemples de la lib, il y a pas grand chose ...
je m'en servais surtout pour gérer la caméra quand j'essayais de faire de la 3D ... j'ai ensuite changé pour déclencher des mouvements précis en appuyant directement sur une touche du clavier ...
Hors ligne
slt!
faut voir pour ta proposition, pour moi c t des notes midi qui étaient générées ...
je t'enverrai le sketch si tu veux jeter un œil dessus il est assez court, peut être y décéléra tu une exception cachée
++
Hors ligne
oyster_twiter a écrit:
slt!
faut voir pour ta proposition, pour moi c t des notes midi qui étaient générées ...
je t'enverrai le sketch si tu veux jeter un œil dessus il est assez court, peut être y décéléra tu une exception cachée
++
Désolé, je suis perché...
Oui, envoie toujours ...
Hors ligne
ola,
voici mon sketch
si t'as le temps de jeter un œil sur l'intégration midi...
Hors ligne
Yep
Hors ligne
re-Yep ...
Rigolo ce petit soft
Effectivement, j'ai les mêmes exceptions que toi ... j'ai aussi eu une nullPointerException ... comprenne qui pourra, j'ai l'impression que c'est juste la librairie proMidi qui rencontre quelques soucis ... en tout cas impossible de les catcher ... tant que le programme continue de tourner ...
J'ai quand même corrigé le parcours de ton tableau img[] :
Il vaut mieux faire une double boucle :
for(int x= ...){
for(int y = ...){
plutôt qu'une simple et ensuite calculer x et y.
J'ai aussi rajouté une fonction miroir, afin d'avoir la sortie webcam en miroir plutôt qu'en affichage classique - plus facile pour jouer ... j'ai mis des commentaires ...
+
+
Hors ligne
ok
j'ai bien reçu ton sketch,
pour moi le miroir ralenti énormément l'appli.
la double boucle est bien vue par contre hehe
je te tiens au jus pour la suite de ce pti prog si t'es motiv.
la librairie promidi connait quelques soucis à première vue... la gestion des buffer midi n'est pas totalement maitrisée.
vive l'osc
Hors ligne