Bonjour à tous,
Je me permets de poster en français car j'ai du mal en anglais et que j'ai vu par ici des posts en français.
Bref, je suis en train de travailler sur une petite appli pour apprendre à lire le solfège au piano. L'idée est simple, l'appli génère des mesures, on joue via midi les notes sur le métronome, l'appli compare tout ça et générer des statistiques qui vont influencer la prochaine génération de partition.
Pour cela, j'ai regardé QtGuido qui me semble bien pour l'affichage des partitions.
Reste pour moi à définir comment je gère mes événements (notes) pour pouvoir comparer l'exercice à ce qui rentre en midi. J'imagine tout simplement donner une position absolue à chaque événement par rapport au début de l'exercice et comparer les positions (verticales et horizontales) et la durée avec l'entrée midi.
Donc ma question est la suivante, pensez vous qu'il vaut mieux gérer les événements à part et les convertir en gmn pour l'affichage uniquement, ou puis-je utiliser guido pour plus que ça ? (ce n’est peut être pas la peine que je code des passerelles Guido->midi ou midi->guido si cela existe déjà)
merci d’avance pour vos réponses
eKo
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Bonjour à tous,
Je me permets de poster en français car j'ai du mal en anglais et que j'ai vu par ici des posts en français.
Bref, je suis en train de travailler sur une petite appli pour apprendre à lire le solfège au piano. L'idée est simple, l'appli génère des mesures, on joue via midi les notes sur le métronome, l'appli compare tout ça et générer des statistiques qui vont influencer la prochaine génération de partition.
Pour cela, j'ai regardé QtGuido qui me semble bien pour l'affichage des partitions.
Reste pour moi à définir comment je gère mes événements (notes) pour pouvoir comparer l'exercice à ce qui rentre en midi. J'imagine tout simplement donner une position absolue à chaque événement par rapport au début de l'exercice et comparer les positions (verticales et horizontales) et la durée avec l'entrée midi.
Donc ma question est la suivante, pensez vous qu'il vaut mieux gérer les événements à part et les convertir en gmn pour l’affichage
il est fort probable qu’une représentation interne propre à vos besoins soit plus pratique à manipuler pour vos besoins, que la représentation guido qui est très orientée partition
uniquement, ou puis-je utiliser guido pour plus que ça ? (ce n’est peut être pas la peine que je code des passerelles Guido->midi ou midi->guido si cela existe déjà)
il existe déjà une passerelle Guido -> midi dans la librairie Guido (voir Guido2MIDI.h : GuidoAR2MIDIFile)
le problème de la conversion midi -> Guido est nettement plus complexe mais il existe également des ressources pour ça : https://sourceforge.net/projects/midi2gmn/
J'ai finalement gerer toute la partie midi et comparaison de notes avec mon propre système qui génère un gmn que j'affiche grace à GuidoLib. Cette partie fonctionne très bien. Les points où je bloque maintenant sont les suivants :
- comment modifier un élément graphique guido après la génération de la partition (couleur, transparence,...)
- comment connaitre une coordonnée graphique guido en fonction d'une date musical, la taille de la portée,... ?
Je recherche dans GuidoGetMap et GuidoGetVoiceMap, mais cela reste obscur pour moi.
eKo
Last edit: eKo 2014-02-05
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
J'ai finalement gerer toute la partie midi et comparaison de notes avec mon propre système qui génère un gmn que j'affiche grace à GuidoLib. Cette partie fonctionne très bien. Les points où je bloque maintenant sont les suivants :
- comment modifier un élément graphique guido après la génération de la partition (couleur, transparence,…)
le tag \noteFormat permet de gérer la couleur et la transparence mais cela suppose de recalculer toute la partition, ce qui n’est pas adapté par exemple à des indications de suivi quand on joue la partition
comment connaitre une coordonnée graphique guido en fonction d'une date musical, la taille de la portée,… ?
dans la pratique, la fonction GuidoGetVoiceMap remplit une structure de type Time2GraphicMap qui n’est autre qu’une liste de paires associant une segment temporel et un rectangle.
Pour une date donnée, il suffit donc de trouver le segment temporel dans la liste et les coordonnées graphiques sont données par le rectangle associé.
L’application GuidoEditor permet de voir à quoi correspondent les différents mappings (Staff, System, Voice) via le panneau de Préférences.
—
Dominique
Je recherche dans GuidoGetMap et GuidoGetVoiceMap, mais cela reste obscur pour moi.
eKo
J'ai bien trouver les coordonnées des elements, en revanche lorsque je les dessine dans le guidoWidget j'ai un décalage entre les coordonnées du FloatRect et celle de la partition (J'ai empiriquement trouvé un ratio d'environ 1/1.56 pour recaler les box sur la partition). Je n'arrive pas à savoir d'où vient ce décalage et si celui-ci va changer selon les config...
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
J'ai bien trouver les coordonnées des elements, en revanche lorsque je les dessine dans le guidoWidget j'ai un décalage entre les coordonnées du FloatRect et celle de la partition (J'ai empiriquement trouvé un ratio d'environ 1/1.56 pour recaler les box sur la partition). Je n'arrive pas à savoir d'où vient ce décalage et si celui-ci va changer selon les config...
le mapping est exprimé sans scaling and sans offset dans le système de coordonnées internes de guido.
Il faut probablement utiliser les fonctions de conversions comme GuidoUnit2Inches
Tout cela est valable bien sûr dans le contexte du device qui dessine la partition.
J'ai bien trouver les coordonnées des elements, en revanche lorsque je les dessine dans le guidoWidget j'ai un décalage entre les coordonnées du FloatRect et celle de la partition (J'ai empiriquement trouvé un ratio d'environ 1/1.56 pour recaler les box sur la partition). Je n'arrive pas à savoir d'où vient ce décalage et si celui-ci va changer selon les config...
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
J'ai bien trouver les coordonnées des elements, en revanche lorsque je les dessine dans le guidoWidget j'ai un décalage entre les coordonnées du FloatRect et celle de la partition (J'ai empiriquement trouvé un ratio d'environ 1/1.56 pour recaler les box sur la partition). Je n'arrive pas à savoir d'où vient ce décalage et si celui-ci va changer selon les config...
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
J'ai bien trouver les coordonnées des elements, en revanche lorsque je les dessine dans le guidoWidget j'ai un décalage entre les coordonnées du FloatRect et celle de la partition (J'ai empiriquement trouvé un ratio d'environ 1/1.56 pour recaler les box sur la partition). Je n'arrive pas à savoir d'où vient ce décalage et si celui-ci va changer selon les config...
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Bonjour,
J'ai cherché selon votre dernier mail mais en vain.
Le mapping est exprimé sans scaling and sans offset
Je ne sais pas ou trouver ces parametres (dans la guidoWidget ?)
J'ai tenté d’établir un lien entre le ratio (qui me permet de recaler les coordonnées) et les diverses données que j'ai pu trouver. Voici un exemple des données pour une note :
Event n: 107
from 157 / 8
to 159 / 8
position 601.482 454.485 611.05 462.458 //position donnée par la map
ratio;: 1.596 //ratio calculé empiriquement
1/ratio: 0.626566 //idem
x: 601.482 //coordonnée x
avec ratio: 376.868 //coordonnée x convertie avec le ratio (le resultat que je cherche...)
logicalDpiX() 96
GuidoPageFormat().width 4000
pageSizeMM(1) QSizeF(168.701, 126.947)
width: 400
sizeIncrement() QSize(0, 0)
gridWidth() 1
getSystemsDistance() 75
physicalDpiX() 118
mapfromGlobal 601
mapFromParent 601
mapToGlobal 601
mapToParent 601
GuidoUnit2Inches(x): 0.998725
GuidoInches2Unit(x): 362242
GuidoUnit2CM(x): 2.53676
GuidoCM2Unit(x): 142615
widthMM(): 85
là je sèche.... si vous avez une piste ?
cordialement
eKo
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Bonjour à tous,
Je me permets de poster en français car j'ai du mal en anglais et que j'ai vu par ici des posts en français.
Bref, je suis en train de travailler sur une petite appli pour apprendre à lire le solfège au piano. L'idée est simple, l'appli génère des mesures, on joue via midi les notes sur le métronome, l'appli compare tout ça et générer des statistiques qui vont influencer la prochaine génération de partition.
Pour cela, j'ai regardé QtGuido qui me semble bien pour l'affichage des partitions.
Reste pour moi à définir comment je gère mes événements (notes) pour pouvoir comparer l'exercice à ce qui rentre en midi. J'imagine tout simplement donner une position absolue à chaque événement par rapport au début de l'exercice et comparer les positions (verticales et horizontales) et la durée avec l'entrée midi.
Donc ma question est la suivante, pensez vous qu'il vaut mieux gérer les événements à part et les convertir en gmn pour l'affichage uniquement, ou puis-je utiliser guido pour plus que ça ? (ce n’est peut être pas la peine que je code des passerelles Guido->midi ou midi->guido si cela existe déjà)
merci d’avance pour vos réponses
eKo
Bonjour,
Le 28 déc. 2013 à 19:06, eKo ekocode@users.sf.net a écrit :
—
Dominique
Bonjour,
merci pour votre réponse :)
J'ai finalement gerer toute la partie midi et comparaison de notes avec mon propre système qui génère un gmn que j'affiche grace à GuidoLib. Cette partie fonctionne très bien. Les points où je bloque maintenant sont les suivants :
- comment modifier un élément graphique guido après la génération de la partition (couleur, transparence,...)
- comment connaitre une coordonnée graphique guido en fonction d'une date musical, la taille de la portée,... ?
Je recherche dans GuidoGetMap et GuidoGetVoiceMap, mais cela reste obscur pour moi.
eKo
Last edit: eKo 2014-02-05
Bonjour,
Le 5 févr. 2014 à 10:45, eKo ekocode@users.sf.net a écrit :
Pour une date donnée, il suffit donc de trouver le segment temporel dans la liste et les coordonnées graphiques sont données par le rectangle associé.
L’application GuidoEditor permet de voir à quoi correspondent les différents mappings (Staff, System, Voice) via le panneau de Préférences.
—
Dominique
Bonjour,
J'ai bien trouver les coordonnées des elements, en revanche lorsque je les dessine dans le guidoWidget j'ai un décalage entre les coordonnées du FloatRect et celle de la partition (J'ai empiriquement trouvé un ratio d'environ 1/1.56 pour recaler les box sur la partition). Je n'arrive pas à savoir d'où vient ce décalage et si celui-ci va changer selon les config...
Le 18 févr. 2014 à 12:10, eKo ekocode@users.sf.net a écrit :
le mapping est exprimé sans scaling and sans offset dans le système de coordonnées internes de guido.
Il faut probablement utiliser les fonctions de conversions comme GuidoUnit2Inches
Tout cela est valable bien sûr dans le contexte du device qui dessine la partition.
Bonjour,
J'ai bien trouver les coordonnées des elements, en revanche lorsque je les dessine dans le guidoWidget j'ai un décalage entre les coordonnées du FloatRect et celle de la partition (J'ai empiriquement trouvé un ratio d'environ 1/1.56 pour recaler les box sur la partition). Je n'arrive pas à savoir d'où vient ce décalage et si celui-ci va changer selon les config...
Bonjour,
J'ai bien trouver les coordonnées des elements, en revanche lorsque je les dessine dans le guidoWidget j'ai un décalage entre les coordonnées du FloatRect et celle de la partition (J'ai empiriquement trouvé un ratio d'environ 1/1.56 pour recaler les box sur la partition). Je n'arrive pas à savoir d'où vient ce décalage et si celui-ci va changer selon les config...
Bonjour,
J'ai bien trouver les coordonnées des elements, en revanche lorsque je les dessine dans le guidoWidget j'ai un décalage entre les coordonnées du FloatRect et celle de la partition (J'ai empiriquement trouvé un ratio d'environ 1/1.56 pour recaler les box sur la partition). Je n'arrive pas à savoir d'où vient ce décalage et si celui-ci va changer selon les config...
Bonjour,
J'ai cherché selon votre dernier mail mais en vain.
Je ne sais pas ou trouver ces parametres (dans la guidoWidget ?)
J'ai tenté d’établir un lien entre le ratio (qui me permet de recaler les coordonnées) et les diverses données que j'ai pu trouver. Voici un exemple des données pour une note :
Event n: 107
from 157 / 8
to 159 / 8
position 601.482 454.485 611.05 462.458 //position donnée par la map
ratio;: 1.596 //ratio calculé empiriquement
1/ratio: 0.626566 //idem
x: 601.482 //coordonnée x
avec ratio: 376.868 //coordonnée x convertie avec le ratio (le resultat que je cherche...)
logicalDpiX() 96
GuidoPageFormat().width 4000
pageSizeMM(1) QSizeF(168.701, 126.947)
width: 400
sizeIncrement() QSize(0, 0)
gridWidth() 1
getSystemsDistance() 75
physicalDpiX() 118
mapfromGlobal 601
mapFromParent 601
mapToGlobal 601
mapToParent 601
GuidoUnit2Inches(x): 0.998725
GuidoInches2Unit(x): 362242
GuidoUnit2CM(x): 2.53676
GuidoCM2Unit(x): 142615
widthMM(): 85
là je sèche.... si vous avez une piste ?
cordialement
eKo
houra !
la lumière c'est allumée :
Mon problème été dans la récupèration de la map :
err = GuidoGetVoiceMap(guidoWidget->getGRHandler(),1,w,h,1, map);
ma largeur w et ma hauteur h n'étaient pas bonnes...
donc je passe à la suite...
merci Dominique, pour votre aide.
Le 21 mars 2014 à 21:26, eKo ekocode@users.sf.net a écrit :