Menu

Projet de lecture de note

Help
eKo
2013-12-28
2014-03-21
  • eKo

    eKo - 2013-12-28

    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

     
    • Dominique Fober

      Dominique Fober - 2014-01-03

      Bonjour,

      Le 28 déc. 2013 à 19:06, eKo ekocode@users.sf.net a écrit :

      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/


      Dominique

      merci d’avance pour vos réponses
      eKo

      Projet de lecture de note

      Sent from sourceforge.net because you indicated interest in https://sourceforge.net/p/guidolib/discussion/233476/

      To unsubscribe from further messages, please visit https://sourceforge.net/auth/subscriptions/

       
  • eKo

    eKo - 2014-02-05

    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
    • Dominique Fober

      Dominique Fober - 2014-02-13

      Bonjour,

      Le 5 févr. 2014 à 10:45, eKo ekocode@users.sf.net a écrit :

      Bonjour,

      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.

      typedef std::vector<std::pair<TimeSegment, FloatRect> > Time2GraphicMap;
      

      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

      Projet de lecture de note

      Sent from sourceforge.net because you indicated interest in https://sourceforge.net/p/guidolib/discussion/233476/

      To unsubscribe from further messages, please visit https://sourceforge.net/auth/subscriptions/

       
  • eKo

    eKo - 2014-02-18

    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...

     
    • Dominique Fober

      Dominique Fober - 2014-02-19

      Le 18 févr. 2014 à 12:10, eKo ekocode@users.sf.net a écrit :

      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 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.

      Projet de lecture de note

      Sent from sourceforge.net because you indicated interest in https://sourceforge.net/p/guidolib/discussion/233476/

      To unsubscribe from further messages, please visit https://sourceforge.net/auth/subscriptions/

       
  • eKo

    eKo - 2014-02-18

    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...

     
  • eKo

    eKo - 2014-02-18

    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...

     
  • eKo

    eKo - 2014-02-18

    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...

     
  • eKo

    eKo - 2014-03-20

    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

     
  • eKo

    eKo - 2014-03-21

    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.

     
    • Dominique Fober

      Dominique Fober - 2014-03-21

      Le 21 mars 2014 à 21:26, eKo ekocode@users.sf.net a écrit :

      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);

      effectivement le mapping récupéré n’est valable que pour un rendu qui utilise les mêmes paramètres (w, h)

      Dominique

      ma largeur w et ma hauteur h n'étaient pas bonnes...
      donc je passe à la suite...

      merci Dominique, pour votre aide.

      Projet de lecture de note

      Sent from sourceforge.net because you indicated interest in https://sourceforge.net/p/guidolib/discussion/233476/

      To unsubscribe from further messages, please visit https://sourceforge.net/auth/subscriptions/

       

Log in to post a comment.

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.