IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Schéma Discussion :

Accordage d'une guitare [MCD]


Sujet :

Schéma

  1. #1
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2012
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2012
    Messages : 37
    Points : 24
    Points
    24
    Par défaut Accordage d'une guitare
    Bonjour,

    Je travail actuellement sur le dernier projet de ma licence pro. Il s'agit d'un site internet qui enregistrera des utilisateurs, leurs permettra de configurer des accordages en entrant les notes de l'accordage, puis d'afficher les doigtés possible pour chaque accord.
    Par exemple, l'utilisateur entre l'accordage "normal" (mi la ré sol si mi) puis un accord qu'il souhaite jouer (le do) et le site affichera les possibilités de doigté pour réaliser un do.
    Nous avons un algo qui est en cours d'écriture pour la partie permettant de passer de l'accordage aux accords. Il n'est donc pas nécessaire de stocker les accords.
    Mon problème est tout bête, c'est juste que je n'arrive pas à mettre le doigt sur la solution après une journée complète à chercher...
    Je dois stocker les accordages et pour ce faire j'ai deux tables :
    accordage et note
    Un accordage possède un nom et appartient à un utilisateur. Il est composé de plusieurs notes qui peuvent êtres identiques. L'ordre des notes pour un accordage est important.
    Nom : schema.jpg
Affichages : 847
Taille : 229,6 Ko

    Dans cette solution:
    l'entité accordage stock le nom de l'accordage ("normal")
    l'entité note stock le nom de chaque note en français et en anglais (pas besoin de plus)
    la relation accorder va stocker pour chaque accord, une note, et sa position (corde)

    Sauf que cette solution est fausse : je ne peux pas stocker deux fois la même note à deux positions différentes dans la relation accorder.

    Je sais que je suis dans l'erreur mais n'arrive pas à corriger. Pouvez vous m'aider svp ?

    Merci d'avance.

  2. #2
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 001
    Points : 30 903
    Points
    30 903
    Billets dans le blog
    16
    Par défaut
    Bonsoir Leinox,


    Sympathique projet ! Cela dit, je n'arrive pas à lire votre diagramme, donc je n’en tiendrai pas compte.


    Je ne vois pas pourquoi différents utilisateurs ne pourraient pas utiliser le même accordage, notamment l’accordage normal ou façon luth (3e corde en fa#), etc.

    Maintenant, les ingrédients pour réaliser un accord sur une guitare, sont la corde et la case (et le doigté), ainsi que le nombre de cordes de la guitare, 4, 6, 7, ...

    Mais, pour ne pas compliquer les choses, ne tenons pas compte du doigté et du nombre de cordes de l’instrument, et supposons qu’une guitare soit lambda, avec ses 6 cordes.

    Je verrais bien la règle suivante :

    Pour un accordage, un accord et une corde donnés, il n’y a qu’une case pour obtenir un accord.

    Exemple de structure de table, appelons-la ACCORD :

    
    Accordage       Accord    Variante    Corde    Case
    
    normal          DO               1    LA          3
    normal          DO               1    RÉ          2
    normal          DO               1    SOL         0
    normal          DO               1    SI          1
    normal          DO               1    MI          0
    3e en FA#       DO               1    LA          3
    3e en FA#       DO               1    RÉ          2
    3e en FA#       DO               1    SOL         1
    3e en FA#       DO               1    SI          1
    normal          DO               2    LA          3
    normal          DO               2    RÉ          5
    normal          DO               2    SOL         5
    normal          DO               2    SI          5
    
    
    La clé primaire de la table est le quadruplet {Accordage, Accord, Variante, Corde}.

    Dans cet exemple, en accordage normal, le 1er accord de DO majeur venu (1) est réalisé en utilisant la case 3 de la corde de LA, la case 2 de la corde de RÉ et la case 1 de la corde de SI, tandis que la corde de SOL sonne à vide, ainsi que la chanterelle. Si une corde n’est pas mentionnée dans un accordage, c’est qu’elle ne participe pas à l’accord, ainsi la corde de MI (grave) n’est pas utilisée dans l’accord 1 avec le cordage normal. L’accordage avec la 3e corde en FA# a aussi son accord de DO n°1. L’accordage normal et l’accordage 3e en FA# ont leurs variantes, par exemple l’accord de DO a une variante nommée 2, etc.


    Un MCD :



    Attention, la relation COMPORTER est identifiante (cardinalité 1,1, mise entre parenthèses, convention propre à PowerAMC), ce qui veut dire qu’au stade du MLD, l’attribut AccordageId participera à la clé primaire de la table ACCORD.


    Le MLD correspondant :




    Je ne sais pas si ces modèles, pourront vous convenir...

    En atendant, je vais aller réécouter la Chaconne de Bach par Segovia
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2012
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2012
    Messages : 37
    Points : 24
    Points
    24
    Par défaut
    Bonjour fsmrel, merci pour votre réponse si détaillé

    Vous n'arrivez pas à lire mon diagramme ? Vous n'arrivez pas à le comprendre ou bien il ne s'affiche pas ?

    Dans le doute, j'ai refait une image du MCD que j'ai chargé sur imgur : http://i.imgur.com/ED4U0Ev.png



    Et voici sont MPD : http://i.imgur.com/Vp3ALf6.png



    Concernant votre réponse :
    Pourquoi différent utilisateurs ne pourrai pas utiliser les mêmes accordages ? C'est vrai, c'est une réflexion que nous nous sommes fait également. Mais nous pouvons encore à loisir modifié la liaison entre utilisateur et accordage sans que ça ai des conséquences sur le reste du MCD. (Et d'ailleurs ce sera fait dès que j'aurai réussi à en expliquer l'intérêt à mes collègues).
    Ensuite vous parlez de l'accord qui est réalisé. Mais tout ce que je souhaite c'est stocker l'accordage de la guitare en base de donnée. Nous avons déjà un script en javascript qui, en connaissant l'accordage et l'accord souhaité (sélectionné sur le site) pourra afficher le doigté
    C'est un peu ce qui est fait sur ce site par exemple : http://www.accordsguitare.com/

    Ce que je souhaite stocker est l'accordage donc. Et pour moi, un accordage est identifié comme suis :
    nom_accordage (par exemple normal)
    corde1 (l'identifiant faisant référence la variable d'une note)
    corde2 (l'identifiant faisant référence la variable d'une note)
    corde3 (l'identifiant faisant référence la variable d'une note)
    corde4 (l'identifiant faisant référence la variable d'une note)
    corde5 (l'identifiant faisant référence la variable d'une note)
    corde6 (l'identifiant faisant référence la variable d'une note)

    mais je n'ai pas la moindre idée de comment enregistrer ça dans mon MCD...

    Merci encore de votre aide.

    Edit : et merci pour la découverte de ce fabuleux morceau ! J'aime beaucoup
    Images attachées Images attachées  

  4. #4
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 001
    Points : 30 903
    Points
    30 903
    Billets dans le blog
    16
    Par défaut
    Bonsoir Leinox,


    Citation Envoyé par Leinox Voir le message
    Vous n'arrivez pas à lire mon diagramme ? Vous n'arrivez pas à le comprendre ou bien il ne s'affiche pas ?
    L’affichage était trop petit pour que j’arrive à lire.


    Cela dit, j’ai du mal à comprendre où se situe votre problème.



    Citation Envoyé par Leinox Voir le message
    pour moi, un accordage est identifié comme suit :
    nom_accordage (par exemple normal)
    corde1 (l'identifiant faisant référence la variable d'une note)
    corde2 (l'identifiant faisant référence la variable d'une note)
    corde3 (l'identifiant faisant référence la variable d'une note)
    corde4 (l'identifiant faisant référence la variable d'une note)
    corde5 (l'identifiant faisant référence la variable d'une note)
    corde6 (l'identifiant faisant référence la variable d'une note)
    Dans un MCD, identifier a un sens précis : un identifiant est une propriété particulière d’une entité-type permettant de distinguer chaque entité (instance d’entité-type), par exemple le numéro Siren d’une entreprise identifie clairement cette entreprise, deux entreprises ne peuvent avoir même Siren.

    Pour le moment, au vu de votre présentation, je constate qu’un accordage est caractérisé par son nom (ce qui conceptuellement devrait suffire pour l’identifier de façon naturelle), mais en plus, vous faites intervenir chacune des six cordes de l’instrument. Pour chaque corde, il y a une référence à « la variable d’une note », concept qui reste à définir. Concernant les notes : on sait identifier une note en général : DO, DO# (égal à RÉb dans la gamme tempérée), etc., mais, une note, DO par exemple, se décline en plusieurs fréquences (selon la gamme tempérée : DO prend les valeurs 130,8 hertz, 261,6 hertz, etc.) : cherchez-vous en fait à prendre en compte cette notion de fréquence ? celle d’octave ? sinon, de quel concept s'agit-il ?


    Avant qu’on en arrive à inférer un MCD, pourriez-vous présenter les éléments de l’accordage, avec des valeurs concrètes de propriétés (attributs), dans le genre de ce que je l’ai fait dans mo message précédent, où j’avais produit le tableau suivant mais qui manifestement ne convient pas :

    
    Accordage       Accord    Variante    Corde    Case
    
    normal          DO               1    LA          3
    normal          DO               1    RÉ          2
    normal          DO               1    SOL         0
    normal          DO               1    SI          1
    normal          DO               1    MI          0
    3e en FA#       DO               1    LA          3
    3e en FA#       DO               1    RÉ          2
    3e en FA#       DO               1    SOL         1
    3e en FA#       DO               1    SI          1
    normal          DO               2    LA          3
    normal          DO               2    RÉ          5
    normal          DO               2    SOL         5
    normal          DO               2    SI          5
    
    
    N.B. Pour présenter votre tableau, vous pouvez utiliser la balise « [pre] ».
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2012
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2012
    Messages : 37
    Points : 24
    Points
    24
    Par défaut
    Bonsoir fsmrel,

    J'espère que mes schéma actuels sont plus lisibles

    Je vais essayer d'expliquer, car ce que je souhaite est en réalité très simple (je crois), c'est surtout que la solution ne semble pas vouloir apparaître...

    Nous avons actuellement un script JS qui va afficher des doigtés d'un accord. Pour chaque accord il existe plusieurs doigté possible. On est d'accord jusque là ?

    Ce script prend en argument l'accordage de la guitare. Il s'agit d'une série de 6 chaines de caractères correspondant aux noms des notes en anglais. On ne tient pas compte des gammes, ou des fréquences des notes.

    Dans ma base de données il faut donc que j'enregistre cette série de chaines de caractères.
    Je vois deux solutions :

    J'identifie mon accordage par son nom, auquel j'ajoute une chaîne de caractères avec un séparateur qui enregistrera toutes les notes dans l'ordre.
    Exemple :
    nom_accordage les_notes
    normal drop d
    E;B;G;D;A;E D;A;D;G;B;E
    C'est simple, les données doivent par contre être saisis de manière sur par le site. Si on souhaite passer de la notation anglaise à la notation française il faudra également gérer ça dans le site

    L'autre solution que je vois (pas... concrètement c'est pour ça que je suis ici) est d'enregistrer les notes dans la base de données afin d'empêcher qu'on puisse entrer autre chose qu'une note dans la base de données.

    Je dispose donc d'une table contenant les notes :

    id_note nom_note_fr nom_note_en
    1 do c
    2 si# c
    3 do# c#
    4 reb db
    etc... etc... etc...

    Et dans ma table d'accordage, j'enregistre le nom, et pour chaque corde une référence à id_note
    Ce qui donne de manière non optimisé et crade selon moi :
    nom_accordage corde1 corde2 corde3 corde4 corde5 corde6
    normal 8 17 5 14 20 8
    dropd 5 17 5 14 21 9

    Voilà, qu'en pensez vous ?

  6. #6
    Membre chevronné
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Août 2007
    Messages
    797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Août 2007
    Messages : 797
    Points : 2 060
    Points
    2 060
    Par défaut
    Bonjour Leinox,

    Au risque de devancer fsmrel, étant moi-même guitariste et étant au fait de la question, je me risque à une réponse.


    Citation Envoyé par Leinox Voir le message
    L'autre solution que je vois (pas... concrètement c'est pour ça que je suis ici) est d'enregistrer les notes dans la base de données afin d'empêcher qu'on puisse entrer autre chose qu'une note dans la base de données.

    Je dispose donc d'une table contenant les notes :

    id_note nom_note_fr nom_note_en
    1 do c
    2 si# c
    3 do# c#
    4 reb db
    etc... etc... etc...

    Et dans ma table d'accordage, j'enregistre le nom, et pour chaque corde une référence à id_note
    Ce qui donne de manière non optimisé et crade selon moi :
    nom_accordage corde1 corde2 corde3 corde4 corde5 corde6
    normal 8 17 5 14 20 8
    dropd 5 17 5 14 21 9
    C'est tout à fait ça. Voyons la modélisation.

    Un accordage est composé d'un ensemble de cordes (on s'arrêtera sur le chiffre 6, mais certaines guitares ont 7 cordes). A chaque couple {accordage, corde} est associé une note. Les 3 concepts à prendre en compte sont donc Accordage, Corde et Note. Or, dans ton MCD, tu ne fais appel qu'à deux d'entre eux, Accordage et Note ; la corde n'apparait qu'en tant que propriété dans l'association entre Accordage et Note.

    Les règles de modélisation peuvent être formulées ainsi :
    - Un accordage est composé d'un ensemble de (6) cordes
    - Une corde entre dans la composition de plusieurs accordages
    - A un accordage et une corde donnés est associée une note

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    [ Accordage ]
          |
          |
         1,n
          |
    (Composition)--1,1----( )----0,n->[ Note ]
          |
         0,n
          |
          |
      [ Corde ]
    Composition s'entend : composition de l'accordage. Ne te formalise pas du fait qu'a cette association est associée la CIF avec Note, c'est tout à fait "légal" même si aucun outil de modélisation Merise ne le prend en compte. Pour pallier cette faiblesse, on utilise un artifice consistant à remplacer ce type d'associations par une "entité associative" : sans identifiant propre mais identifiée relativement aux deux entités Accordage et Corde.

    Modèle Relationnel dérivé :
    Accordage (id_accordage, nom_accordage) ex. nom_accordage : Normal, dropd
    Corde (id_corde, nom_corde) ex. nom_corde : corde1, corde2, ...
    Note (id_note, nom_note_en, nom_note_fr)
    Composition (id_accordage, id_corde, #id_note) id_note est une FK référençant Note
    N'oubliez pas de consulter les Cours Merise et la F.A.Q. Merise
    _______________________________________________________

    Les Règles du Club Developpez.com
    Vous avez votre réponse ? Merci de cliquer sur

  7. #7
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 001
    Points : 30 903
    Points
    30 903
    Billets dans le blog
    16
    Par défaut
    Bonsoir,


    Citation Envoyé par JPhi33 Voir le message
    Au risque de devancer fsmrel
    Pas de problème, plus on est de fous...



    Citation Envoyé par JPhi33 Voir le message
    A un accordage et une corde donnés est associée une note
    Attention, le même nom de note peut se retrouver deux fois sur la même corde ; par exemple sur la corde de MI, la note FA se retrouve sur les cases 1 et 13 (j’ai bien vérifié sur la guitare que me concocta Luis Maravilla lui-même, il y a cinquante ans...)



    Citation Envoyé par JPhi33 Voir le message
    Ne te formalise pas du fait qu'a cette association est associée la CIF avec Note, c'est tout à fait "légal" même si aucun outil de modélisation Merise ne le prend en compte.
    Heu... DB-MAIN permet de prendre en compte les CIF, en l'occurrence celle qui est portée par l'association COMPOSITION. A supposer qu'à un accordage et une corde corressponde une seule note :

    MCD



    MLD

    La clé de la table COMPOSITION est bien la paire {id_accordage, id_corde} :



    Citation Envoyé par Leinox Voir le message
    id_note nom_note_fr nom_note_en
    1 do c
    2 si# c
    3 do# c#
    4 reb db
    etc... etc... etc...
    Je peux paraître pointilleux, mais quelque chose m’échappe dans votre tableau : même si Reb sonne moins haut d’un comma que Do#, il y figure après : d’accord. Mais alors pourquoi Si# figure-t-il après Do ?

    Mais après tout, pourquoi pas, l’essentiel étant, par le biais de l’attribut id_note, d’identifier chaque nom de note (attribut nom_note_fr) pour l’entité-type NOTE. Néanmoins, selon vos exemples, pour une valeur de l’attribut id_note, on se retrouve avec plus d’un nom de note. Si l’on vous suit, pour id_note = 14, soit on a nom_note_fr = "Ré" (accordage ="normal"), soit on a nom_note_fr = "Sol" (accordage ="drop d"). Quelle interprétation donner à cette situation ?
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

  8. #8
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2012
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2012
    Messages : 37
    Points : 24
    Points
    24
    Par défaut
    Bonjour à vous deux !

    @JPhi33
    Plusieurs outils de modélisation Merise prennent en compte les CIF. Personnelement j'ai utilisé Win'Design lorsque j'ai compris qu'il y en aurai besoin.
    Par contre le schéma est tout sauf propre

    http://i.imgur.com/mdqBd2U.png



    @fsmrel
    les notes ne sont tout simplement pas rangées dans un ordre spécifique.
    Concernant cette id_note qui se réfère à deux notes différentes : il s'agit d'une erreur de ma part quand j'ai écris le tableau (faire un tour sur les forums à 4h du matin, c'est peut être pas une bonne idée...)

    Voici un screenshot des valeurs que j'ai dans ma bdd (désolé par avant de l'encodage html des symboles dièse et bémol.

    http://i.imgur.com/zJK8HDg.png



    Edit : ma table de correspondance était complètement fausse... c'est maintenant corrigé.

  9. #9
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 001
    Points : 30 903
    Points
    30 903
    Billets dans le blog
    16
    Par défaut
    Bonsoir,



    Citation Envoyé par Leinox Voir le message
    Voici un screenshot des valeurs que j'ai dans ma bdd (désolé par avant de l'encodage html des symboles dièse et bémol).
    Pas de problème, comme j’ai cinq minutes, je remets ça en français...

     
    id_note    nom_note_fr    nom_note_en
          1    Do             C
          2    Si#            C
          3    Do#            C#
          4    Réb            Db
          5    Ré             D
          6    Ré#            D#
          7    Mib            Eb
          8    Mi             E
          9    Fab            E
         10    Fa             F
         11    Mi#            F
         12    Fa#            F#
         13    Solb           Gb
         14    Sol            G
         15    Sol#           G#
         16    Lab            Ab
         17    La             A
         18    La#            A#
         19    Sib            Bb
         20    Si             B
         21    Dob            B
    
    
    Une incidente : la notation allemande est intéressante, elle a permis à Bach de faire figurer les lettres de son nom comme sujet (Sib, La, Do, Si) dans L’Art de la fugue (Contrapunctus no 14 (BWV 1080, 19))...



    A part ça, la combinaison d’un accordage et d’une corde déterminent-ils une note ? Cela m’étonnerait, car voici par exemple un accord de Fa#7, dans lequel le MI (chanterelle) sonne à vide :




    Et dans la variante suivante de l’accord de Fa#7, sur la même corde, on retrouve le MI, mais à l’octave :



    A moins que le concept d’octave n’aille se cacher quelque part dans l’accordage, la combinaison {accordage, corde} n’est manifestement pas déterministe...

    Dans le MCD ci-dessous (toujours en utilisant DB-MAIN), où l’octave et prise en compte, la CIF ACCORDAGE X CORDE X OCTAVE —> NOTE est symbolisée par l’identifiant de l’association COMPOSITION : id = {ACCORDAGE, CORDE, OCTAVE} :

    MCD



    MLD

    La clé primaire de la table COMPOSITION est le triplet {id_accordage, id_corde, no_octave} :



    Avance-t-on ? Recule-t-on ? Fait-on du surplace ?
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

  10. #10
    Membre chevronné
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Août 2007
    Messages
    797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Août 2007
    Messages : 797
    Points : 2 060
    Points
    2 060
    Par défaut
    Bonjour,

    Citation Envoyé par fsmrel Voir le message
    A part ça, la combinaison d’un accordage et d’une corde déterminent-ils une note ?
    Oui.
    Ce qu'on appelle l'accordage d'une guitare, c'est l'ensemble des 6 notes jouées par les 6 cordes lorsque chacune d'elles est jouée à vide, c'est-à-dire sans doigté. Donc pour un accordage et une corde, il n'y a qu'une note possible.

    Par exemple, l'accordage standard ("standard tuning" en anglais) est composé, comme l'a dit Leinox, par :

    E : note entendue lorsque la corde 1 sonne à vide
    B : note entendue lorsque la corde 2 sonne à vide
    G : note entendue lorsque la corde 3 sonne à vide
    D : note entendue lorsque la corde 4 sonne à vide
    A : note entendue lorsque la corde 5 sonne à vide
    E : note entendue lorsque la corde 6 sonne à vide


    Exemple d'accordage en Mi ("open E tuning")

    E : note entendue lorsque la corde 1 sonne à vide
    B : note entendue lorsque la corde 2 sonne à vide
    G# : note entendue lorsque la corde 3 sonne à vide
    E : note entendue lorsque la corde 4 sonne à vide
    B : note entendue lorsque la corde 5 sonne à vide
    E : note entendue lorsque la corde 6 sonne à vide
    N'oubliez pas de consulter les Cours Merise et la F.A.Q. Merise
    _______________________________________________________

    Les Règles du Club Developpez.com
    Vous avez votre réponse ? Merci de cliquer sur

  11. #11
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2012
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2012
    Messages : 37
    Points : 24
    Points
    24
    Par défaut
    Bonjour !

    En effet, pour définir un accordage il ne doit pas être nécessaire d'enregistrer la gamme de la note.
    Après, je fais avec les info que me donnent mon groupe, et je suis autant musicien qu'eux : donc pas du tout.

    Ce qui m'a fait jeter un coup d’œil dans le code JS sensé fournir les doigtés en fonction de l'accordage. Et tout est enregistré dans un tableau associatif, en dur, dans le code ! Ce que je vous dit depuis le début concernant ce script est donc totalement faux. Désolé pour ça

    A partir de là il me parait plus simple et logique d'enregistrer en base chaque doigté, pour chaque accord, pour chaque accordage.

    On ne perd pas pour autant tout le travail réalisé jusque là avec votre aide.
    Je vais retravailler ce MCD qui semble ce compliquer de jour en jour

    J'ajoute un extrait du tableau associatif existant en JS, et cours demander des explications sur ce que signifie ces valeurs.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    var accords =
    			[
    				{
    					nom:"C",
    					id: ["tabC1","tabC2","tabC3","tabC4","tabC5","tabC6","tabC7","tabC8","tabC9"],
    					accord:["x32o1o","x13331","x32o13","133211","431114","43114x","x43121","x13331","xx1343"],
    					fret:["","3 fr","","8 fr","5 fr","5 fr","12 fr","15 fr","10 fr"]
    				},
    				
    				{
    					nom:"C/C#",
    					id:["tab1","tab2","tab3","tab4"],
    					accord:["x1222x","1221xx","xx4211","xx1232"],
    					fret:["4 fr","9 fr","8 fr","11 fr"]
    				},
    ];

  12. #12
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    A partir de là il me parait plus simple et logique d'enregistrer en base chaque doigté, pour chaque accord, pour chaque accordage.
    Ca va faire pas mal de boulot tout ça... Si en plus vous n'êtes pas musicien...

    Faisons un calcule : 6 cordes, 7 notes possibles sur chacune, déjà il va falloir écrire les 6^7 type d'accordage possible, soit 279936 accordage possible.
    Ensuite, il existe 7 accords (de base, juste les majeurs), puis les 7 mineurs, les 7 avec 7ème augmentés (et on oubli les quinte diminués...), donc disons 21 accords.

    Il faudra donc écrire les 279936^21 accords... soit 2.444^114 accords possibles au total.

    (Sauf si mes souvenirs de probabilités me jouent des tours, ce qui est fort probable)


    N'est ce pas pour ce genre de situation que l'on a inventé l'informatique ?

    Votre projet va plus ressembler à un un arbre (baobab) des possibilités qu'a un programme qui calcule des solutions.
    J'espère que c'est un projet de statistique et pas d'informatique...
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  13. #13
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2012
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2012
    Messages : 37
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par mactwist69 Voir le message
    Ca va faire pas mal de boulot tout ça... Si en plus vous n'êtes pas musicien...

    Faisons un calcule : 6 cordes, 7 notes possibles sur chacune, déjà il va falloir écrire les 6^7 type d'accordage possible, soit 279936 accordage possible.
    Ensuite, il existe 7 accords (de base, juste les majeurs), puis les 7 mineurs, les 7 avec 7ème augmentés (et on oubli les quinte diminués...), donc disons 21 accords.

    Il faudra donc écrire les 279936^21 accords... soit 2.444^114 accords possibles au total.

    (Sauf si mes souvenirs de probabilités me jouent des tours, ce qui est fort probable)


    N'est ce pas pour ce genre de situation que l'on a inventé l'informatique ?

    Votre projet va plus ressembler à un un arbre (baobab) des possibilités qu'a un programme qui calcule des solutions.
    J'espère que c'est un projet de statistique et pas d'informatique...
    Haha ! si si

    Mais du coup l'ambition du projet est bien sur revu à la baisse. Il ne s'agit certainement pas de stocker tous les accordages possibles. Seulement les plus utilisé (il doit y en avoir une 20ène, et une 10ène seulement qui sont vraiment utilisé. On va voir avec le commanditaire (notre prof) pour voir ceux qu'il souhaite voir.

    Ensuite, c'est sur qu'il y a un grand nombre d'accord et encore plus de doigtés par accord. Mais il n'y en a pas des milliers, c'est déjà ça ^^

    Si j'ai bien compris, le script dont je parlais au départ est réalisable, mais ça demande plusieurs années d'études de conservatoire sur la "théorie de l'accordage" (ah... ces musiciens...). Le script serait énorme, avec des exceptions dans tous les sens... donc si on se retrouve à devoir recopier l'équivalent d'un annuaire, c'est bête, mais je vois pas d'autre solution.

  14. #14
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Si j'ai bien compris, le script dont je parlais au départ est réalisable, mais ça demande plusieurs années d'études de conservatoire sur la "théorie de l'accordage" (ah... ces musiciens...)
    Pour créer n'importe quel accord possible et inimaginable de tête, oui ce n'est pas facile.
    Mais tous les accords sont connus, donc il n'y a point besoin d'étudier la théorie de la musique en effet.

    Le script que tu montres c'est en fait ce que vous souhaitez faire : Enregistrer tous les accords possible (en tablature, pas en note)
    Il faudra juste importer cette "bibliothèque" dans votre base de données.

    Ce serait presque plus cours d'écrire un programme pour le faire a votre place que de le faire à la main.
    Sauf si bien sur vous vous limitez drastiquement.
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  15. #15
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2012
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2012
    Messages : 37
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par mactwist69 Voir le message
    Ce serait presque plus cours d'écrire un programme pour le faire a votre place que de le faire à la main.
    Sauf si bien sur vous vous limitez drastiquement.
    Plus j'en discute avec mes collègues plus j'ai l'impression d'avoir vu un sujet monstrueux qui allait me demander un travail de fou furieux, mais j'étais content... Et d'après les limites qu'ils se sont eux même imposé :

    Une seul accordage, on affiche tous les doigtés pour tous les accords.
    Même pas besoin de gérer la langue, tout est en anglais et puis basta...
    On calcul rien, et on fait qu'exploiter la base de données
    Je m'occupe que de la bdd et j'ai déjà tout le tableau associatif complet
    Je suis même pas sensé partir sur du php objet ou une architecture mvc, et si je veux tout faire avec un cms je peux

    je reviens... si vous entendez hurler du côté de Marseille : c'est moi

  16. #16
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Ca me semble raisonnable en effet si vous n'avez pas l'année pour bosser dessus.

    Rien n'empêche de faire un petit tableau mvc :

    Accord - Position possible

    Genre pour un accord de Do correspond 7 position sur le manche.

    Donc dans ta page web, tu auras une liste déroulante, avec les 7 accord (ou plus)
    Quand tu sélectionnes un accord, tu charges les n positions possibles.

    C'est simpliste comme modèle, je te l'accorde, mais au moins se sera objet, les profs risquent d'aimer.
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  17. #17
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2012
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2012
    Messages : 37
    Points : 24
    Points
    24
    Par défaut
    Le mvc je vais le garder quand même, de toute façon je sais pas bosser autrement ^^
    Mais au point où on en est je me demande pourquoi je fais une bdd...
    On a aucune raison de stocker les accordages s'il n'y en a qu'un seul.
    Pas la peine du coup de stocker les accords dans une bdd, vu qu'après il faudra tout charger dans le JS... il suffit juste de tout laisser dans le JS...
    Vu que tous les utilisateurs auront accès à la même chose on s'en fou qu'il y ai un système de session... non ?
    ou c'est moi qui ai le cerveau grillé... peut être...

    Dans l'doute, voici l'sujet :
    Offrir une interface web permettant à un utilisateur connecté de pouvoir afficher les différents accords de guitare (et variantes) en fonction de l'accordage de base.
    Technologies: PHP+HTML5+SVG+PDF.

  18. #18
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Le sujet ne parle pas de BDD... Donc faites comme vous voulez.

    Par contre PHP et HTML5 + SVG semble obligatoire.

    On dirait bien qu'il veut un truc "jolie" dans la présentation... PHP ne veut pas dire forcement session.
    Bien que ce n'est pas le plus dur.

    Par contre il parle quand même des accords en fonction de l'accordage... Après, si il vous a fournis les dictionnaires d'accords en script, utiliser le.


    Pour conclure ce que je lis sur le sujet c'est :

    - Vous avez déjà toutes les données dans un script
    - vous n'avez qu'à faire un site web qui permet de les afficher en utilisant les dernières techno du web pour afficher les accords sur un manche en fonction des paramètres (et non pas juste des vielles images en HTML). quelque chose de dynamique.

    Donc en deux points : Exploiter les données et les afficher
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  19. #19
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2012
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2012
    Messages : 37
    Points : 24
    Points
    24
    Par défaut
    Le prof ne nous a rien donné, c'est juste le collègue qui est revenu avec ce script et toutes les données dedans. Bon bah... c'est parti...
    Je reviendrai si on s'est planté dans l'interprétation du sujet (pour l'instant le prof est en déplacement on peut pas le contacter).

    Merci à vous tous !

    PS : "Youhou PHP débile et redondant ! snif... ma base..."

  20. #20
    Membre chevronné
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Août 2007
    Messages
    797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Août 2007
    Messages : 797
    Points : 2 060
    Points
    2 060
    Par défaut
    Citation Envoyé par mactwist69 Voir le message
    Ce serait presque plus cours d'écrire un programme pour le faire a votre place que de le faire à la main.
    C'est possible. J'ai écrit un programme en VB (il y a longtemps...) qui donnait automatiquement toutes les positions sur le manche de la guitare d'un accord choisi par l'utilisateur. C'était limité à l'accordage standard mais il n'y avait aucune base de données ; tout était calculé à partir des paramètres sélectionnés (tonique, mode, altération).
    N'oubliez pas de consulter les Cours Merise et la F.A.Q. Merise
    _______________________________________________________

    Les Règles du Club Developpez.com
    Vous avez votre réponse ? Merci de cliquer sur

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Reconnaissance de notes d'une guitare
    Par Invité dans le forum Mathématiques
    Réponses: 4
    Dernier message: 03/10/2013, 11h34
  2. Réponses: 26
    Dernier message: 02/05/2007, 14h15
  3. [guitare] Accorder une 12 cordes
    Par GregPeck dans le forum Musique
    Réponses: 8
    Dernier message: 16/01/2007, 22h27
  4. Réponses: 25
    Dernier message: 01/09/2006, 14h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo