begin process at 2008 08 22 00:12:18
1 229 717 membres
525 nouveaux aujourd'hui
14 267 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

TAGREEMENT


Information sur la source

Catégorie :Composants Classé sous : Accords, guitare, Composant, Record Niveau : Débutant Date de création : 20/12/2007 Date de mise à jour : 28/12/2007 22:56:49 Vu / téléchargé: 2 837 / 114

Note :
Aucune note

Commentaire sur cette source (24)
Ajouter un commentaire et/ou une note

Description

ben voici un source spécialement pour Nico :

TAgreement est un composant permettant de visualiser plus de 900 accords de guitare.

Pour les mordus de records : bon appétit ^^.
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

20 décembre 2007 13:42:20 :
Modification proposée par Cirec : réalisée. le fait que l'accord ne change pas quand on clique sur le scrollbar est fait volontairement : ca permet de défiler sans voir tout les accords apparaitrent.
21 décembre 2007 09:45:21 :
Pour faire plaisir à tout le monde : listbox remplacée par un combobox et ajout des noms des cordes pour M'sieur Cirec ;). Modification proposée par f0xi : réalisée. Pour la notation francaise des accords : je suis pas sur qu'elle existe.
21 décembre 2007 09:47:19 :
Un ptit soucis dans la modif du screenshot
22 décembre 2007 09:29:09 :
Modif proposées par Cirec et Japee
28 décembre 2007 22:56:50 :
A force de modifier et modifier on en arrive à s'emmeler les pinceaux. Enfin bref la version précédente était pas la bonne : présence de beugs et absence d'options. Donc voila la bonne version finalisée selon les recommendations de Cirec et Japee. Merci à tous.
  • signaler à un administrateur
    Commentaire de cirec le 20/12/2007 13:20:24 administrateur CS

    C'est bien ... et très intéressant (pour ceux qui gratouille )

    Mais ... il y a un mais ;)

    Remplace Les :
              Self.Repaint;
              Self.Refresh;
    Par :
              Invalidate;

    Il y a encore d'autres petites choses mais le plus important est :
    quand on clique sur les flèches rien ne change il faut cliquer sur le texte de la ListBox pour que le changement soit visible ...

    Et la notation international c'est bien mais les deux serait mieux
    A --> La
    etc

    Belle initiative ... j'y avais pensé il y a longtemps déjà mais je ne l'ai jamais fait.
    Bravo

  • signaler à un administrateur
    Commentaire de japee le 21/12/2007 00:05:27 administrateur CS

    Salut Francky,

    Ouais, y'a quelques accords que je connaissais pas... ;-)

    J'ai noté un comportement trrrèèès bizarre :
    Après avoir cliqué dans la TListBox pour faire apparaître les accords, si on clique sur le panel, les accords sont modifiés plusieurs fois, le premier étant le seul correct.
    Sinon, c'est pratique, en saisissant directement l'accord concerné dans la ListBox, on accède rapidement aux derniers de la liste (heureusement pour le sol).

    Bon, c'est pas tout ça, quand est-ce qu'on se le tape, ce boeuf ?

  • signaler à un administrateur
    Commentaire de cirec le 21/12/2007 01:27:41 administrateur CS

    "Après avoir cliqué dans la TListBox pour faire apparaître les accords, si on clique sur le panel, les accords sont modifiés plusieurs fois, le premier étant le seul correct." ??

    Moi il me semble avoir reconnu d'autres manières d'arriver à la même note !

    Je ne les connais pas toutes mais j'en ai reconnu quelques-une ... Le Ré en particulier mais certaines d'entre elles je les connaissaient comme notes augmentées. D'ailleurs en parlant de cela il en manque encore des notes ...
    puisque tu les retrouves tout le long du manche.

    L'ajout du nom des cordes (Mi, La, Ré, Sol, Si, Mi) et les numéros des doigts
    dans les cercle de positions serait un plus pour les débutants.
    Ainsi que, j'y reviens, le nom des notes ;-)

    Ah aussi je me demandais si un ComboBox ne serait pas mieux qu'une ListBox ...
    Cela permettrait d'utiliser le clavier pour accéder au différentes notes. Exemple : pour acceder au Ré tu appuies juste sur "D"
    Pour le reste il y a la DropDownList pour un accès rapide avec la souris ou les flèches du clavier sans pour autant afficher chaque note au passage !!!
    Ce qui par la même règlerait le "problème" du clique obligatoire pour afficher la tablature.

    Parce que là c'est même contraignant, pour une note en plein milieu il faut faire défiler au risque de passer à côté dans un premier temps.

    Ok pour le b½uf !  ;-)

  • signaler à un administrateur
    Commentaire de f0xi le 21/12/2007 01:53:45 administrateur CS

    unit Agreements;

    interface

    uses
      Windows, Messages, SysUtils, Classes, Controls, ExtCtrls, StdCtrls, Graphics, dialogs;


    Type
      TAgreement = record
        Name  : string;
        Param : Array[0..5] of shortint;
      end;

    Const
      ListAgreement: Array [0..902] Of TAgreement=(
    (Name :'AMaj';      Param:(0,0,2,2,2,0)),
    (Name :'AMaj';      Param:(0,4,-1,2,5,0)),
    (Name :'AMaj';      Param:(5,7,7,6,5,5)),
    (Name :'AMaj';      Param:(-1,0,2,2,2,0)),
    (Name :'AMaj';      Param:(-1,4,7,-1,-1,5)),
    (Name :'A#5';       Param:(-1,0,3,2,2,1)),
    (Name :'A#5';       Param:(-1,0,-1,2,2,1)),
    (Name :'A/Ab';      Param:(-1,0,2,1,2,0)),
    (Name :'A/B';       Param:(0,0,2,4,2,0)),
    (Name :'A/B';       Param:(-1,0,7,6,0,0)),
    (Name :'A/D';       Param:(-1,0,0,2,2,0)),
    (Name :'A/D';       Param:(-1,-1,0,2,2,0)),
    (Name :'A/D';       Param:(-1,-1,0,6,5,5)),
    (Name :'A/D';       Param:(-1,-1,0,9,10,9)),
    (Name :'A/G';       Param:(3,-1,2,2,2,0)),
    (Name :'A/G';       Param:(-1,0,2,0,2,0)),
    (Name :'A/G';       Param:(-1,0,2,2,2,3)),
    (Name :'A/Gb';      Param:(0,0,2,2,2,2)),
    (Name :'A/Gb';      Param:(0,-1,4,2,2,0)),
    (Name :'A/Gb';      Param:(2,-1,2,2,2,0)),
    (Name :'A/Gb';      Param:(-1,0,4,2,2,0)),
    (Name :'A/Gb';      Param:(-1,-1,2,2,2,2)),
    (Name :'A5';        Param:(5,7,7,-1,-1,5)),
    (Name :'A5';        Param:(-1,0,2,2,-1,0)),
    (Name :'A5';        Param:(5,7,7,-1,-1,0)),
    (Name :'A6';        Param:(0,0,2,2,2,2)),
    (Name :'A6';        Param:(0,-1,4,2,2,0)),
    (Name :'A6';        Param:(2,-1,2,2,2,0)),
    (Name :'A6';        Param:(-1,0,4,2,2,0)),
    (Name :'A6';        Param:(-1,-1,2,2,2,2)),
    (Name :'A6/7';      Param:(0,0,2,0,2,2)),
    (Name :'A6/7sus4';  Param:(5,5,4,0,3,0)),
    (Name :'A6/7sus4';  Param:(-1,0,2,0,3,2)),
    (Name :'A7';        Param:(3,-1,2,2,2,0)),
    (Name :'A7';        Param:(-1,0,2,0,2,0)),
    (Name :'A7';        Param:(-1,0,2,2,2,3)),
    (Name :'A7(#5)';    Param:(1,0,3,0,2,1)),
    (Name :'A7/add11';  Param:(-1,0,0,0,2,0)),
    (Name :'A7sus4';    Param:(-1,0,2,0,3,0)),
    (Name :'A7sus4';    Param:(-1,0,2,0,3,3)),
    (Name :'A7sus4';    Param:(-1,0,2,2,3,3)),
    (Name :'A7sus4';    Param:(5,-1,0,0,3,0)),
    (Name :'A7sus4';    Param:(-1,0,0,0,-1,0)),
    (Name :'Aadd9';     Param:(0,0,2,4,2,0)),
    (Name :'Aadd9';     Param:(-1,0,7,6,0,0)),
    (Name :'Aaug/D';    Param:(-1,-1,0,2,2,1)),
    (Name :'Aaug/G';    Param:(1,0,3,0,2,1)),
    (Name :'Ab';        Param:(4,6,6,5,4,4)),
    (Name :'Ab#5';      Param:(-1,3,2,1,1,0)),
    (Name :'Ab/A';      Param:(-1,-1,1,2,1,4)),
    (Name :'Ab/F';      Param:(-1,8,10,8,9,8)),
    (Name :'Ab/F';      Param:(-1,-1,1,1,1,1)),
    (Name :'Ab/Gb';     Param:(-1,-1,1,1,1,2)),
    (Name :'Ab/Gb';     Param:(-1,-1,4,5,4,4)),
    (Name :'Ab5';       Param:(4,6,6,-1,-1,4)),
    (Name :'Ab6';       Param:(-1,8,10,8,9,8)),
    (Name :'Ab6';       Param:(-1,-1,1,1,1,1)),
    (Name :'Ab7';       Param:(-1,-1,1,1,1,2)),
    (Name :'Ab7';       Param:(-1,-1,4,5,4,4)),
    (Name :'Abdim/E';   Param:(0,2,0,1,0,0)),
    (Name :'Abdim/E';   Param:(0,2,2,1,3,0)),
    (Name :'Abdim/E';   Param:(-1,2,0,1,3,0)),
    (Name :'Abdim/E';   Param:(-1,-1,0,1,0,0)),
    (Name :'Abdim/Eb';  Param:(-1,-1,0,4,4,4)),
    (Name :'Abdim/F';   Param:(-1,2,0,1,0,1)),
    (Name :'Abdim/F';   Param:(-1,-1,0,1,0,1)),
    (Name :'Abdim/F';   Param:(-1,-1,3,4,3,4)),
    (Name :'Abdim7';    Param:(-1,2,0,1,0,1)),
    (Name :'Abdim7';    Param:(-1,-1,0,1,0,1)),
    (Name :'Abdim7';    Param:(-1,-1,3,4,3,4)),
    (Name :'Abm';       Param:(-1,-1,6,4,4,4)),
    (Name :'Abm/D';     Param:(-1,-1,0,4,4,4)),
    (Name :'Abm/E';     Param:(0,2,1,1,0,0)),
    (Name :'Abm/E';     Param:(0,-1,6,4,4,0)),
    (Name :'Abm/E';     Param:(-1,-1,1,1,0,0)),
    (Name :'Abm/Gb';    Param:(-1,-1,4,4,4,4)),
    (Name :'Abm7';      Param:(-1,-1,4,4,4,4)),
    (Name :'Absus4';    Param:(-1,-1,6,6,4,4)),
    (Name :'Absus2/F';  Param:(-1,1,3,1,4,1)),
    (Name :'Adim/Ab';   Param:(-1,-1,1,2,1,4)),
    (Name :'Adim/E';    Param:(0,3,-1,2,4,0)),
    (Name :'Adim/F';    Param:(-1,-1,1,2,1,1)),
    (Name :'Adim/F';    Param:(-1,-1,3,5,4,5)),
    (Name :'Adim/G';    Param:(-1,-1,1,2,1,3)),
    (Name :'Adim/Gb';   Param:(-1,-1,1,2,1,2)),
    (Name :'Adim7';     Param:(-1,-1,1,2,1,2)),
    (Name :'Am';        Param:(-1,0,2,2,1,0)),
    (Name :'Am';        Param:(-1,0,7,5,5,5)),
    (Name :'Am';        Param:(-1,3,2,2,1,0)),
    (Name :'Am';        Param:(8,12,-1,-1,-1,0)),
    (Name :'Am/B';      Param:(0,0,7,5,0,0)),
    (Name :'Am/B';      Param:(-1,3,2,2,0,0)),
    (Name :'Am/D';      Param:(-1,-1,0,2,1,0)),
    (Name :'Am/D';      Param:(-1,-1,0,5,5,5)),
    (Name :'Am/Eb';     Param:(0,3,-1,2,4,0)),
    (Name :'Am/F';      Param:(0,0,3,2,1,0)),
    (Name :'Am/F';      Param:(1,3,3,2,1,0)),
    (Name :'Am/F';      Param:(1,-1,2,2,1,0)),
    (Name :'Am/F';      Param:(-1,-1,2,2,1,1)),
    (Name :'Am/F';      Param:(-1,-1,3,2,1,0)),
    (Name :'Am/G';      Param:(0,0,2,0,1,3)),
    (Name :'Am/G';      Param:(-1,0,2,0,1,0)),
    (Name :'Am/G';      Param:(-1,0,2,2,1,3)),
    (Name :'Am/G';      Param:(-1,0,5,5,5,8)),
    (Name :'Am/Gb';     Param:(-1,0,2,2,1,2)),
    (Name :'Am/Gb';     Param:(-1,-1,2,2,1,2)),
    (Name :'Am6';       Param:(-1,0,2,2,1,2)),
    (Name :'Am6';       Param:(-1,-1,2,2,1,2)),
    (Name :'Am7';       Param:(0,0,2,0,1,3)),
    (Name :'Am7';       Param:(-1,0,2,0,1,0)),
    (Name :'Am7';       Param:(-1,0,2,2,1,3)),
    (Name :'Am7';       Param:(-1,0,5,5,5,8)),
    (Name :'Am7(b5)';   Param:(-1,-1,1,2,1,3)),
    (Name :'Am7/add11'; Param:(-1,5,7,5,8,0)),
    (Name :'Amaj7';     Param:(-1,0,2,1,2,0)),
    (Name :'Amin/maj9'; Param:(-1,0,6,5,5,7)),
    (Name :'Asus4';     Param:(0,0,2,2,3,0)),
    (Name :'Asus4';     Param:(-1,0,2,2,3,0)),
    (Name :'Asus4';     Param:(5,5,7,7,-1,0)),
    (Name :'Asus4';     Param:(-1,0,0,2,3,0)),
    (Name :'Asus2';     Param:(0,0,2,2,0,0)),
    (Name :'Asus2';     Param:(0,0,2,4,0,0)),
    (Name :'Asus2';     Param:(0,2,2,2,0,0)),
    (Name :'Asus2';     Param:(-1,0,2,2,0,0)),
    (Name :'Asus2';     Param:(-1,-1,2,2,0,0)),
    (Name :'Asus2/Ab';  Param:(-1,0,2,1,0,0)),
    (Name :'Asus2/C';   Param:(0,0,7,5,0,0)),
    (Name :'Asus2/C';   Param:(-1,3,2,2,0,0)),
    (Name :'Asus2/D';   Param:(0,2,0,2,0,0)),
    (Name :'Asus2/D';   Param:(-1,2,0,2,3,0)),
    (Name :'Asus2/Db';  Param:(0,0,2,4,2,0)),
    (Name :'Asus2/Db';  Param:(-1,0,7,6,0,0)),
    (Name :'Asus2/Eb';  Param:(-1,2,1,2,0,0)),
    (Name :'Asus2/F';   Param:(0,0,3,2,0,0)),
    (Name :'Asus2/G';   Param:(3,-1,2,2,0,0)),
    (Name :'Asus2/G';   Param:(-1,0,2,0,0,0)),
    (Name :'Asus2/G';   Param:(-1,0,5,4,5,0)),
    (Name :'Asus2/Gb';  Param:(-1,0,4,4,0,0)),
    (Name :'Asus2/Gb';  Param:(-1,2,4,2,5,2)),
    (Name :'Asus4/Ab';  Param:(4,-1,0,2,3,0)),
    (Name :'Asus4/B';   Param:(0,2,0,2,0,0)),
    (Name :'Asus4/Bb';  Param:(0,1,-1,2,3,0)),
    (Name :'Asus4/C';   Param:(-1,-1,0,2,1,0)),
    (Name :'Asus4/C';   Param:(-1,-1,0,5,5,5)),
    (Name :'Asus4/Db';  Param:(-1,0,0,2,2,0)),
    (Name :'Asus4/Db';  Param:(-1,-1,0,2,2,0)),
    (Name :'Asus4/Db';  Param:(-1,-1,0,6,5,5)),
    (Name :'Asus4/Db';  Param:(-1,-1,0,9,10,9)),
    (Name :'Asus4/F';   Param:(-1,-1,7,7,6,0)),
    (Name :'Asus4/G';   Param:(-1,0,2,0,3,0)),
    (Name :'Asus4/G';   Param:(-1,0,2,0,3,3)),
    (Name :'Asus4/G';   Param:(-1,0,2,2,3,3)),
    (Name :'Asus4/G';   Param:(-1,0,0,0,-1,0)),
    (Name :'Asus4/Gb';  Param:(0,0,0,2,3,2)),
    (Name :'Asus4/Gb';  Param:(0,0,4,2,3,0)),
    (Name :'Asus4/Gb';  Param:(2,-1,0,2,3,0)),
    (Name :'Asus4/Gb';  Param:(-1,0,2,2,3,2)),
    (Name :'Asus4/Gb';  Param:(-1,-1,2,2,3,2)),
    (Name :'Asus4/Gb';  Param:(-1,5,4,2,3,0)),
    (Name :'Asus4/Gb';  Param:(-1,9,7,7,-1,0)),
    (Name :'B';         Param:(-1,2,4,4,4,2)),
    (Name :'B#5';       Param:(3,2,1,0,0,3)),
    (Name :'B#5';       Param:(3,-1,1,0,0,3)),
    (Name :'B/A';       Param:(2,-1,1,2,0,2)),
    (Name :'B/A';       Param:(-1,0,1,2,0,2)),
    (Name :'B/A';       Param:(-1,2,1,2,0,2)),
    (Name :'B/A';       Param:(-1,2,4,2,4,2)),
    (Name :'B/Ab';      Param:(-1,-1,4,4,4,4)),
    (Name :'B/E';       Param:(-1,2,2,4,4,2)),
    (Name :'B/E';       Param:(-1,-1,4,4,4,0)),
    (Name :'B5';        Param:(7,9,9,-1,-1,2)),
    (Name :'B5';        Param:(-1,2,4,4,-1,2)),
    (Name :'B6';        Param:(-1,-1,4,4,4,4)),
    (Name :'B7';        Param:(2,-1,1,2,0,2)),
    (Name :'B7';        Param:(-1,0,1,2,0,2)),
    (Name :'B7';        Param:(-1,2,1,2,0,2)),
    (Name :'B7';        Param:(-1,2,4,2,4,2)),
    (Name :'B7/add11';  Param:(0,0,4,4,4,0)),
    (Name :'B7/add11';  Param:(0,2,1,2,0,2)),
    (Name :'B7sus4';    Param:(-1,0,4,4,0,0)),
    (Name :'B7sus4';    Param:(-1,2,4,2,5,2)),
    (Name :'Baug/E';    Param:(3,-1,1,0,0,0)),
    (Name :'Baug/E';    Param:(-1,-1,1,0,0,0)),
    (Name :'Bb';        Param:(1,1,3,3,3,1)),
    (Name :'Bb';        Param:(-1,1,3,3,3,1)),
    (Name :'Bb';        Param:(-1,-1,0,3,3,1)),
    (Name :'Bb#5';      Param:(-1,-1,0,3,3,2)),
    (Name :'Bbb5';      Param:(-1,-1,0,3,-1,0)),
    (Name :'Bb/A';      Param:(1,1,3,2,3,1)),
    (Name :'Bb/Ab';     Param:(-1,1,3,1,3,1)),
    (Name :'Bb/Ab';     Param:(-1,-1,3,3,3,4)),
    (Name :'Bb/Db';     Param:(-1,-1,0,6,6,6)),
    (Name :'Bb/E';      Param:(-1,1,3,3,3,0)),
    (Name :'Bb/G';      Param:(3,5,3,3,3,3)),
    (Name :'Bb/G';      Param:(-1,-1,3,3,3,3)),
    (Name :'Bb5';       Param:(6,8,8,-1,-1,6)),
    (Name :'Bb5';       Param:(-1,1,3,3,-1,6)),
    (Name :'Bb6';       Param:(3,5,3,3,3,3)),
    (Name :'Bb6';       Param:(-1,-1,3,3,3,3)),
    (Name :'Bb6/add9';  Param:(-1,3,3,3,3,3)),
    (Name :'Bb7';       Param:(-1,1,3,1,3,1)),
    (Name :'Bb7';       Param:(-1,-1,3,3,3,4)),
    (Name :'Bb7sus4';   Param:(-1,1,3,1,4,1)),
    (Name :'Bbadd#11';  Param:(-1,1,3,3,3,0)),
    (Name :'Bbaug/E';   Param:(2,-1,4,3,3,0)),
    (Name :'Bbdim/C';   Param:(-1,3,-1,3,2,0)),
    (Name :'Bbdim/D';   Param:(-1,-1,0,3,2,0)),
    (Name :'Bbdim/G';   Param:(-1,1,2,0,2,0)),
    (Name :'Bbdim/G';   Param:(-1,-1,2,3,2,3)),
    (Name :'Bbdim/Gb';  Param:(2,4,2,3,2,2)),
    (Name :'Bbdim/Gb';  Param:(-1,-1,4,3,2,0)),
    (Name :'Bbdim7';    Param:(-1,1,2,0,2,0)),
    (Name :'Bbdim7';    Param:(-1,-1,2,3,2,3)),
    (Name :'Bbm';       Param:(1,1,3,3,2,1)),
    (Name :'Bbm/Ab';    Param:(-1,1,3,1,2,1)),
    (Name :'Bbm/D';     Param:(-1,-1,0,6,6,6)),
    (Name :'Bbm/Gb';    Param:(-1,-1,3,3,2,2)),
    (Name :'Bbm7';      Param:(-1,1,3,1,2,1)),
    (Name :'Bbmaj7';    Param:(1,1,3,2,3,1)),
    (Name :'Bbmaj9';    Param:(-1,3,3,3,3,5)),
    (Name :'Bbsus2';    Param:(-1,-1,3,3,1,1)),
    (Name :'Bbsus2/G';  Param:(-1,3,5,3,6,3)),
    (Name :'Bbsus4/Ab'; Param:(-1,1,3,1,4,1)),
    (Name :'Bdim/A';    Param:(1,2,3,2,3,1)),
    (Name :'Bdim/A';    Param:(-1,2,0,2,0,1)),
    (Name :'Bdim/A';    Param:(-1,-1,0,2,0,1)),
    (Name :'Bdim/Ab';   Param:(-1,2,0,1,0,1)),
    (Name :'Bdim/Ab';   Param:(-1,-1,0,1,0,1)),
    (Name :'Bdim/Ab';   Param:(-1,-1,3,4,3,4)),
    (Name :'Bdim/G';    Param:(1,-1,0,0,0,3)),
    (Name :'Bdim/G';    Param:(3,2,0,0,0,1)),
    (Name :'Bdim/G';    Param:(-1,-1,0,0,0,1)),
    (Name :'Bdim7';     Param:(-1,2,0,1,0,1)),
    (Name :'Bdim7';     Param:(-1,-1,0,1,0,1)),
    (Name :'Bdim7';     Param:(-1,-1,3,4,3,4)),
    (Name :'Bm';        Param:(2,2,4,4,3,2)),
    (Name :'Bm';        Param:(-1,2,4,4,3,2)),
    (Name :'Bm';        Param:(-1,-1,0,4,3,2)),
    (Name :'Bm/A';      Param:(-1,0,4,4,3,2)),
    (Name :'Bm/A';      Param:(-1,2,0,2,0,2)),
    (Name :'Bm/A';      Param:(-1,2,0,2,3,2)),
    (Name :'Bm/A';      Param:(-1,2,4,2,3,2)),
    (Name :'Bm/A';      Param:(-1,-1,0,2,0,2)),
    (Name :'Bm/G';      Param:(2,2,0,0,0,3)),
    (Name :'Bm/G';      Param:(2,2,0,0,3,3)),
    (Name :'Bm/G';      Param:(3,2,0,0,0,2)),
    (Name :'Bm/G';      Param:(-1,-1,4,4,3,3)),
    (Name :'Bm7';       Param:(-1,0,4,4,3,2)),
    (Name :'Bm7';       Param:(-1,2,0,2,0,2)),
    (Name :'Bm7';       Param:(-1,2,0,2,3,2)),
    (Name :'Bm7';       Param:(-1,2,4,2,3,2)),
    (Name :'Bm7';       Param:(-1,-1,0,2,0,2)),
    (Name :'Bm7(b5)';   Param:(1,2,3,2,3,1)),
    (Name :'Bm7(b5)';   Param:(-1,2,0,2,0,1)),
    (Name :'Bm7(b5)';   Param:(-1,-1,0,2,0,1)),
    (Name :'Bm7/add11'; Param:(0,0,2,4,3,2)),
    (Name :'Bm7/add11'; Param:(0,2,0,2,0,2)),
    (Name :'Bmaj7/#11'; Param:(-1,2,3,3,4,2)),
    (Name :'Bsus';      Param:(7,9,9,-1,-1,0)),
    (Name :'Bsus';      Param:(-1,2,4,4,-1,0)),
    (Name :'Bsus2';     Param:(-1,4,4,4,-1,2)),
    (Name :'Bsus2';     Param:(-1,-1,4,4,2,2)),
    (Name :'Bsus2/E';   Param:(-1,4,4,4,-1,0)),
    (Name :'Bsus4/A';   Param:(-1,0,4,4,0,0)),
    (Name :'Bsus4/A';   Param:(-1,2,4,2,5,2)),
    (Name :'Bsus4/Ab';  Param:(0,2,2,1,0,2)),
    (Name :'Bsus4/Ab';  Param:(0,-1,4,1,0,0)),
    (Name :'Bsus4/Ab';  Param:(2,2,2,1,0,0)),
    (Name :'Bsus4/Db';  Param:(-1,4,4,4,-1,0)),
    (Name :'Bsus4/Eb';  Param:(-1,2,2,4,4,2)),
    (Name :'Bsus4/Eb';  Param:(-1,-1,4,4,4,0)),
    (Name :'Bsus4/G';   Param:(0,2,2,0,0,2)),
    (Name :'Bsus4/G';   Param:(0,2,4,0,0,0)),
    (Name :'Bsus4/G';   Param:(0,-1,4,0,0,0)),
    (Name :'Bsus4/G';   Param:(2,2,2,0,0,0)),
    (Name :'C';         Param:(0,3,2,0,1,0)),
    (Name :'C';         Param:(0,3,5,5,5,3)),
    (Name :'C';         Param:(3,3,2,0,1,0)),
    (Name :'C';         Param:(3,-1,2,0,1,0)),
    (Name :'C';         Param:(-1,3,2,0,1,0)),
    (Name :'C';         Param:(-1,3,5,5,5,0)),
    (Name :'C#5';       Param:(-1,3,2,1,1,0)),
    (Name :'Cb5';       Param:(-1,-1,4,5,-1,0)),
    (Name :'C/A';       Param:(0,0,2,0,1,3)),
    (Name :'C/A';       Param:(-1,0,2,0,1,0)),
    (Name :'C/A';       Param:(-1,0,2,2,1,3)),
    (Name :'C/A';       Param:(-1,0,5,5,5,8)),
    (Name :'C/B';       Param:(0,3,2,0,0,0)),
    (Name :'C/B';       Param:(-1,2,2,0,1,0)),
    (Name :'C/B';       Param:(-1,3,5,4,5,3)),
    (Name :'C/Bb';      Param:(-1,3,5,3,5,3)),
    (Name :'C/D';       Param:(3,-1,0,0,1,0)),
    (Name :'C/D';       Param:(-1,3,0,0,1,0)),
    (Name :'C/D';       Param:(-1,3,2,0,3,0)),
    (Name :'C/D';       Param:(-1,3,2,0,3,3)),
    (Name :'C/D';       Param:(-1,-1,0,0,1,0)),
    (Name :'C/D';       Param:(-1,-1,0,5,5,3)),
    (Name :'C/D';       Param:(-1,10,12,12,13,0)),
    (Name :'C/D';       Param:(-1,5,5,5,-1,0)),
    (Name :'C/F';       Param:(-1,3,3,0,1,0)),
    (Name :'C/F';       Param:(-1,-1,3,0,1,0)),
    (Name :'C5';        Param:(-1,3,5,5,-1,3)),
    (Name :'C6';        Param:(0,0,2,0,1,3)),
    (Name :'C6';        Param:(-1,0,2,0,1,0)),
    (Name :'C6';        Param:(-1,0,2,2,1,3)),
    (Name :'C6';        Param:(-1,0,5,5,5,8)),
    (Name :'C6/add9';   Param:(-1,5,7,5,8,0)),
    (Name :'C7';        Param:(-1,3,5,3,5,3)),
    (Name :'C7sus4';    Param:(-1,3,5,3,6,3)),
    (Name :'C9(b5)';    Param:(0,3,-1,3,3,2)),
    (Name :'Cadd9';     Param:(3,-1,0,0,1,0)),
    (Name :'Cadd9';     Param:(-1,3,0,0,1,0)),
    (Name :'Cadd9';     Param:(-1,3,2,0,3,0)),
    (Name :'Cadd9';     Param:(-1,3,2,0,3,3)),
    (Name :'Cadd9';     Param:(-1,-1,0,0,1,0)),
    (Name :'Cadd9';     Param:(-1,-1,0,5,5,3)),
    (Name :'Cadd9';     Param:(-1,10,12,12,13,0)),
    (Name :'Cadd9';     Param:(-1,3,2,0,3,0)),
    (Name :'Cadd9';     Param:(-1,5,5,5,-1,0)),
    (Name :'Cdim/A';    Param:(-1,-1,1,2,1,2)),
    (Name :'Cdim/Ab';   Param:(-1,-1,1,1,1,2)),
    (Name :'Cdim/Ab';   Param:(-1,-1,4,5,4,4)),
    (Name :'Cdim/D';    Param:(-1,5,4,5,4,2)),
    (Name :'Cdim7';     Param:(-1,-1,1,2,1,2)),
    (Name :'Cm';        Param:(-1,3,5,5,4,3)),
    (Name :'Cm';        Param:(-1,-1,5,5,4,3)),
    (Name :'Cm/A';      Param:(-1,-1,1,2,1,3)),
    (Name :'Cm/Bb';     Param:(-1,3,5,3,4,3)),
    (Name :'Cm6';       Param:(-1,-1,1,2,1,3)),
    (Name :'Cm7';       Param:(-1,3,5,3,4,3)),
    (Name :'Cmaj7';     Param:(0,3,2,0,0,0)),
    (Name :'Cmaj7';     Param:(-1,2,2,0,1,0)),
    (Name :'Cmaj7';     Param:(-1,3,5,4,5,3)),
    (Name :'Cmaj9';     Param:(-1,3,0,0,0,0)),
    (Name :'Csus';      Param:(-1,3,3,0,1,1)),
    (Name :'Csus';      Param:(-1,-1,3,0,1,1)),
    (Name :'Csus2';     Param:(-1,10,12,12,13,3)),
    (Name :'Csus2';     Param:(-1,5,5,5,-1,3)),
    (Name :'Csus2';     Param:(-1,3,0,0,3,3)),
    (Name :'Csus2';     Param:(-1,3,5,5,3,3)),
    (Name :'Csus2/A';   Param:(-1,5,7,5,8,3)),
    (Name :'Csus2/A';   Param:(-1,-1,0,2,1,3)),
    (Name :'Csus2/B';   Param:(3,3,0,0,0,3)),
    (Name :'Csus2/B';   Param:(-1,3,0,0,0,3)),
    (Name :'Csus2/E';   Param:(3,-1,0,0,1,0)),
    (Name :'Csus2/E';   Param:(-1,3,0,0,1,0)),
    (Name :'Csus2/E';   Param:(-1,3,2,0,3,0)),
    (Name :'Csus2/E';   Param:(-1,3,2,0,3,3)),
    (Name :'Csus2/E';   Param:(-1,-1,0,0,1,0)),
    (Name :'Csus2/E';   Param:(-1,-1,0,5,5,3)),
    (Name :'Csus2/E';   Param:(-1,10,12,12,13,0)),
    (Name :'Csus2/E';   Param:(-1,5,5,5,-1,0)),
    (Name :'Csus2/F';   Param:(3,3,0,0,1,1)),
    (Name :'Csus4/A';   Param:(3,-1,3,2,1,1)),
    (Name :'Csus4/A';   Param:(-1,-1,3,2,1,3)),
    (Name :'Csus4/B';   Param:(-1,3,3,0,0,3)),
    (Name :'Csus4/Bb';  Param:(-1,3,5,3,6,3)),
    (Name :'Csus4/D';   Param:(3,3,0,0,1,1)),
    (Name :'Csus4/E';   Param:(-1,3,3,0,1,0)),
    (Name :'Csus4/E';   Param:(-1,-1,3,0,1,0)),
    (Name :'D';         Param:(-1,5,4,2,3,2)),
    (Name :'D';         Param:(-1,9,7,7,-1,2)),
    (Name :'D';         Param:(2,0,0,2,3,2)),
    (Name :'D';         Param:(-1,0,0,2,3,2)),
    (Name :'D';         Param:(-1,0,4,2,3,2)),
    (Name :'D';         Param:(-1,-1,0,2,3,2)),
    (Name :'D';         Param:(-1,-1,0,7,7,5)),
    (Name :'D#5';       Param:(-1,-1,0,3,3,2)),
    (Name :'D/B';       Param:(-1,0,4,4,3,2)),
    (Name :'D/B';       Param:(-1,2,0,2,0,2)),
    (Name :'D/B';       Param:(-1,2,0,2,3,2)),
    (Name :'D/B';       Param:(-1,2,4,2,3,2)),
    (Name :'D/B';       Param:(-1,-1,0,2,0,2)),
    (Name :'D/C';       Param:(-1,5,7,5,7,2)),
    (Name :'D/C';       Param:(-1,0,0,2,1,2)),
    (Name :'D/C';       Param:(-1,3,-1,2,3,2)),
    (Name :'D/C';       Param:(-1,5,7,5,7,5)),
    (Name :'D/Db';      Param:(-1,-1,0,14,14,14)),
    (Name :'D/Db';      Param:(-1,-1,0,2,2,2)),
    (Name :'D/E';       Param:(0,0,0,2,3,2)),
    (Name :'D/E';       Param:(0,0,4,2,3,0)),
    (Name :'D/E';       Param:(2,-1,0,2,3,0)),
    (Name :'D/E';       Param:(-1,0,2,2,3,2)),
    (Name :'D/E';       Param:(-1,-1,2,2,3,2)),
    (Name :'D/E';       Param:(-1,5,4,2,3,0)),
    (Name :'D/E';       Param:(-1,9,7,7,-1,0)),
    (Name :'D/G';       Param:(5,-1,4,0,3,5)),
    (Name :'D/G';       Param:(3,-1,0,2,3,2)),
    (Name :'D5';        Param:(5,5,7,7,-1,5)),
    (Name :'D5';        Param:(-1,0,0,2,3,5)),
    (Name :'D6';        Param:(-1,0,4,4,3,2)),
    (Name :'D6';        Param:(-1,2,0,2,0,2)),
    (Name :'D6';        Param:(-1,2,0,2,3,2)),
    (Name :'D6';        Param:(-1,2,4,2,3,2)),
    (Name :'D6';        Param:(-1,-1,0,2,0,2)),
    (Name :'D6/add9';   Param:(0,0,2,4,3,2)),
    (Name :'D6/add9';   Param:(0,2,0,2,0,2)),
    (Name :'D7';        Param:(-1,5,7,5,7,2)),
    (Name :'D7';        Param:(-1,0,0,2,1,2)),
    (Name :'D7';        Param:(-1,3,-1,2,3,2)),
    (Name :'D7';        Param:(-1,5,7,5,7,5)),
    (Name :'D7sus4';    Param:(-1,5,7,5,8,3)),
    (Name :'D7sus4';    Param:(-1,-1,0,2,1,3)),
    (Name :'D9';        Param:(0,0,0,2,1,2)),
    (Name :'D9';        Param:(2,-1,0,2,1,0)),
    (Name :'D9';        Param:(-1,5,7,5,7,0)),
    (Name :'D9(#5)';    Param:(0,3,-1,3,3,2)),
    (Name :'Dadd9';     Param:(0,0,0,2,3,2)),
    (Name :'Dadd9';     Param:(0,0,4,2,3,0)),
    (Name :'Dadd9';     Param:(2,-1,0,2,3,0)),
    (Name :'Dadd9';     Param:(-1,0,2,2,3,2)),
    (Name :'Dadd9';     Param:(-1,-1,2,2,3,2)),
    (Name :'Dadd9';     Param:(-1,5,4,2,3,0)),
    (Name :'Dadd9';     Param:(-1,9,7,7,-1,0)),
    (Name :'Daug/E';    Param:(2,-1,4,3,3,0)),
    (Name :'Db';        Param:(4,4,6,6,6,4)),
    (Name :'Db';        Param:(-1,4,3,1,2,1)),
    (Name :'Db';        Param:(-1,4,6,6,6,4)),
    (Name :'Db';        Param:(-1,-1,3,1,2,1)),
    (Name :'Db';        Param:(-1,-1,6,6,6,4)),
    (Name :'Db#5';      Param:(-1,0,3,2,2,1)),
    (Name :'Db#5';      Param:(-1,0,-1,2,2,1)),
    (Name :'Dbb5';      Param:(-1,-1,3,0,2,1)),
    (Name :'Db/B';      Param:(-1,4,3,4,0,4)),
    (Name :'Db/Bb';     Param:(-1,1,3,1,2,1)),
    (Name :'Db/C';      Param:(-1,3,3,1,2,1)),
    (Name :'Db/C';      Param:(-1,4,6,5,6,4)),
    (Name :'Db5';       Param:(-1,4,6,6,-1,4)),
    (Name :'Db6';       Param:(-1,1,3,1,2,1)),
    (Name :'Db7';       Param:(-1,4,3,4,0,4)),
    (Name :'Dbaug/D';   Param:(-1,-1,0,2,2,1)),
    (Name :'Dbaug/G';   Param:(1,0,3,0,2,1)),
    (Name :'Dbdim/A';   Param:(3,-1,2,2,2,0)),
    (Name :'Dbdim/A';   Param:(-1,0,2,0,2,0)),
    (Name :'Dbdim/A';   Param:(-1,0,2,2,2,3)),
    (Name :'Dbdim/B';   Param:(0,2,2,0,2,0)),
    (Name :'Dbdim/Bb';  Param:(-1,1,2,0,2,0)),
    (Name :'Dbdim/Bb';  Param:(-1,-1,2,3,2,3)),
    (Name :'Dbdim/D';   Param:(3,-1,0,0,2,0)),
    (Name :'Dbdim/D';   Param:(-1,-1,0,0,2,0)),
    (Name :'Dbdim7';    Param:(-1,1,2,0,2,0)),
    (Name :'Dbdim7';    Param:(-1,-1,2,3,2,3)),
    (Name :'Dbm';       Param:(-1,4,6,6,5,4)),
    (Name :'Dbm';       Param:(-1,-1,2,1,2,0)),
    (Name :'Dbm';       Param:(-1,4,6,6,-1,0)),
    (Name :'Dbm/A';     Param:(-1,0,2,1,2,0)),
    (Name :'Dbm/B';     Param:(0,2,2,1,2,0)),
    (Name :'Dbm/B';     Param:(-1,4,6,4,5,4)),
    (Name :'Dbm7';      Param:(0,2,2,1,2,0)),
    (Name :'Dbm7';      Param:(-1,4,6,4,5,4)),
    (Name :'Dbm7(b5)';  Param:(0,2,2,0,2,0)),
    (Name :'Dbmaj7';    Param:(-1,3,3,1,2,1)),
    (Name :'Dbmaj7';    Param:(-1,4,6,5,6,4)),
    (Name :'Dbsus2';    Param:(-1,-1,6,6,4,4)),
    (Name :'Dbsus4/Bb'; Param:(-1,-1,4,3,2,4)),
    (Name :'Ddim/B';    Param:(-1,2,0,1,0,1)),
    (Name :'Ddim/B';    Param:(-1,-1,0,1,0,1)),
    (Name :'Ddim/B';    Param:(-1,-1,3,4,3,4)),
    (Name :'Ddim/Bb';   Param:(-1,1,3,1,3,1)),
    (Name :'Ddim/Bb';   Param:(-1,-1,3,3,3,4)),
    (Name :'Ddim/C';    Param:(-1,-1,0,1,1,1)),
    (Name :'Ddim7';     Param:(-1,2,0,1,0,1)),
    (Name :'Ddim7';     Param:(-1,-1,0,1,0,1)),
    (Name :'Ddim7';     Param:(-1,-1,3,4,3,4)),
    (Name :'Dm';        Param:(-1,0,0,2,3,1)),
    (Name :'Dm/B';      Param:(1,2,3,2,3,1)),
    (Name :'Dm/B';      Param:(-1,2,0,2,0,1)),
    (Name :'Dm/B';      Param:(-1,-1,0,2,0,1)),
    (Name :'Dm/Bb';     Param:(1,1,3,2,3,1)),
    (Name :'Dm/C';      Param:(-1,5,7,5,6,5)),
    (Name :'Dm/C';      Param:(-1,-1,0,2,1,1)),
    (Name :'Dm/C';      Param:(-1,-1,0,5,6,5)),
    (Name :'Dm/Db';     Param:(-1,-1,0,2,2,1)),
    (Name :'Dm/E';      Param:(-1,-1,7,7,6,0)),
    (Name :'Dm6';       Param:(1,2,3,2,3,1)),
    (Name :'Dm6';       Param:(-1,2,0,2,0,1)),
    (Name :'Dm6';       Param:(-1,-1,0,2,0,1)),
    (Name :'Dm7';       Param:(-1,5,7,5,6,5)),
    (Name :'Dm7';       Param:(-1,-1,0,2,1,1)),
    (Name :'Dm7';       Param:(-1,-1,0,5,6,5)),
    (Name :'Dm7(b5)';   Param:(-1,-1,0,1,1,1)),
    (Name :'Dm7/add11'; Param:(3,-1,0,2,1,1)),
    (Name :'Dmaj7';     Param:(-1,-1,0,14,14,14)),
    (Name :'Dmaj7';     Param:(-1,-1,0,2,2,2)),
    (Name :'Dmin/maj7'; Param:(-1,-1,0,2,2,1)),
    (Name :'Dsus';      Param:(5,-1,0,0,3,5)),
    (Name :'Dsus';      Param:(3,0,0,0,3,3)),
    (Name :'Dsus';      Param:(-1,0,0,0,3,3)),
    (Name :'Dsus';      Param:(-1,-1,0,2,3,3)),
    (Name :'Dsus2';     Param:(5,5,7,7,-1,0)),
    (Name :'Dsus2';     Param:(-1,0,0,2,3,0)),
    (Name :'Dsus2';     Param:(0,0,2,2,3,0)),
    (Name :'Dsus2';     Param:(-1,0,2,2,3,0)),
    (Name :'Dsus2';     Param:(-1,-1,0,2,3,0)),
    (Name :'Dsus2/Ab';  Param:(4,-1,0,2,3,0)),
    (Name :'Dsus2/B';   Param:(0,2,0,2,0,0)),
    (Name :'Dsus2/B';   Param:(-1,2,0,2,3,0)),
    (Name :'Dsus2/Bb';  Param:(0,1,-1,2,3,0)),
    (Name :'Dsus2/C';   Param:(-1,-1,0,2,1,0)),
    (Name :'Dsus2/C';   Param:(-1,-1,0,5,5,5)),
    (Name :'Dsus2/Db';  Param:(-1,0,0,2,2,0)),
    (Name :'Dsus2/Db';  Param:(-1,-1,0,2,2,0)),
    (Name :'Dsus2/Db';  Param:(-1,-1,0,6,5,5)),
    (Name :'Dsus2/Db';  Param:(-1,-1,0,9,10,9)),
    (Name :'Dsus2/F';   Param:(-1,-1,7,7,6,0)),
    (Name :'Dsus2/G';   Param:(-1,0,2,0,3,0)),
    (Name :'Dsus2/G';   Param:(-1,0,2,0,3,3)),
    (Name :'Dsus2/G';   Param:(-1,0,2,2,3,3)),
    (Name :'Dsus2/G';   Param:(5,-1,0,0,3,0)),
    (Name :'Dsus2/G';   Param:(-1,0,0,0,-1,0)),
    (Name :'Dsus2/Gb';  Param:(0,0,0,2,3,2)),
    (Name :'Dsus2/Gb';  Param:(0,0,4,2,3,0)),
    (Name :'Dsus2/Gb';  Param:(2,-1,0,2,3,0)),
    (Name :'Dsus2/Gb';  Param:(-1,0,2,2,3,2)),
    (Name :'Dsus2/Gb';  Param:(-1,-1,2,2,3,2)),
    (Name :'Dsus2/Gb';  Param:(-1,5,4,2,3,0)),
    (Name :'Dsus2/Gb';  Param:(-1,9,7,7,-1,0)),
    (Name :'Dsus4/B';   Param:(3,0,0,0,0,3)),
    (Name :'Dsus4/B';   Param:(3,2,0,2,0,3)),
    (Name :'Dsus4/C';   Param:(-1,5,7,5,8,3)),
    (Name :'Dsus4/C';   Param:(-1,-1,0,2,1,3)),
    (Name :'Dsus4/E';   Param:(-1,0,2,0,3,0)),
    (Name :'Dsus4/E';   Param:(-1,0,2,0,3,3)),
    (Name :'Dsus4/E';   Param:(-1,0,2,2,3,3)),
    (Name :'Dsus4/E';   Param:(5,-1,0,0,3,0)),
    (Name :'Dsus4/E';   Param:(-1,0,0,0,-1,0)),
    (Name :'Dsus4/Gb';  Param:(5,-1,4,0,3,5)),
    (Name :'Dsus4/Gb';  Param:(3,-1,0,2,3,2)),
    (Name :'E';Param:(0,2,2,1,0,0)),
    (Name :'E';Param:(-1,7,6,4,5,0)),
    (Name :'E#5';Param:(-1,3,2,1,1,0)),
    (Name :'E/A';Param:(-1,0,2,1,0,0)),
    (Name :'E/D';Param:(0,2,0,1,0,0)),
    (Name :'E/D';Param:(0,2,2,1,3,0)),
    (Name :'E/D';Param:(-1,2,0,1,3,0)),
    (Name :'E/D';Param:(-1,-1,0,1,0,0)),
    (Name :'E/Db';Param:(0,2,2,1,2,0)),
    (Name :'E/Db';Param:(-1,4,6,4,5,4)),
    (Name :'E/Eb';Param:(0,2,1,1,0,0)),
    (Name :'E/Eb';Param:(0,-1,6,4,4,0)),
    (Name :'E/Eb';Param:(-1,-1,1,1,0,0)),
    (Name :'E/Gb';Param:(0,2,2,1,0,2)),
    (Name :'E/Gb';Param:(0,-1,4,1,0,0)),
    (Name :'E/Gb';Param:(2,2,2,1,0,0)),
    (Name :'E11/b9';Param:(0,0,3,4,3,4)),
    (Name :'E5';Param:(0,2,-1,-1,-1,0)),
    (Name :'E5';Param:(-1,7,9,9,-1,0)),
    (Name :'E6';Param:(0,2,2,1,2,0)),
    (Name :'E6';Param:(-1,4,6,4,5,4)),
    (Name :'E7';Param:(0,2,0,1,0,0)),
    (Name :'E7';Param:(0,2,2,1,3,0)),
    (Name :'E7';Param:(-1,2,0,1,3,0)),
    (Name :'E7';Param:(-1,-1,0,1,0,0)),
    (Name :'E7/add11';Param:(-1,0,0,1,0,0)),
    (Name :'E7/b9(b5)';Param:(0,1,3,1,3,1)),
    (Name :'E7sus4';Param:(0,2,0,2,0,0)),
    (Name :'E9';Param:(0,2,0,1,0,2)),
    (Name :'E9';Param:(2,2,0,1,0,0)),
    (Name :'Eadd9';Param:(0,2,2,1,0,2)),
    (Name :'Eadd9';Param:(0,-1,4,1,0,0)),
    (Name :'Eadd9';Param:(2,2,2,1,0,0)),
    (Name :'Eb';Param:(-1,1,1,3,4,3)),
    (Name :'Eb';Param:(-1,-1,1,3,4,3)),
    (Name :'Eb';Param:(-1,-1,5,3,4,3)),
    (Name :'Eb#5';Param:(3,2,1,0,0,3)),
    (Name :'Eb#5';Param:(3,-1,1,0,0,3)),
    (Name :'Eb/C';Param:(-1,3,5,3,4,3)),
    (Name :'Eb/D';Param:(-1,6,8,7,8,6)),
    (Name :'Eb/Db';Param:(-1,1,1,3,2,3)),
    (Name :'Eb/Db';Param:(-1,6,8,6,8,6)),
    (Name :'Eb/Db';Param:(-1,-1,1,3,2,3)),
    (Name :'Eb/E';Param:(-1,-1,5,3,4,0)),
    (Name :'Eb5';Param:(-1,6,8,8,-1,6)),
    (Name :'Eb6';Param:(-1,3,5,3,4,3)),
    (Name :'Eb7';Param:(-1,1,1,3,2,3)),
    (Name :'Eb7';Param:(-1,6,8,6,8,6)),
    (Name :'Eb7';Param:(-1,-1,1,3,2,3)),
    (Name :'Ebaug/E';Param:(3,-1,1,0,0,0)),
    (Name :'Ebaug/E';Param:(-1,-1,1,0,0,0)),
    (Name :'Ebdim/B';Param:(2,-1,1,2,0,2)),
    (Name :'Ebdim/B';Param:(-1,0,1,2,0,2)),
    (Name :'Ebdim/B';Param:(-1,2,1,2,0,2)),
    (Name :'Ebdim/B';Param:(-1,2,4,2,4,2)),
    (Name :'Ebdim/C';Param:(-1,-1,1,2,1,2)),
    (Name :'Ebdim7';Param:(-1,-1,1,2,1,2)),
    (Name :'Ebm';Param:(-1,-1,4,3,4,2)),
    (Name :'Ebm/Db';Param:(-1,-1,1,3,2,2)),
    (Name :'Ebm7';Param:(-1,-1,1,3,2,2)),
    (Name :'Ebmaj7';Param:(-1,6,8,7,8,6)),
    (Name :'Ebsus2/Ab';Param:(-1,1,3,1,4,1)),
    (Name :'Ebsus4/F';Param:(-1,1,3,1,4,1)),
    (Name :'Edim/C';Param:(-1,3,5,3,5,3)),
    (Name :'Edim/D';Param:(3,-1,0,3,3,0)),
    (Name :'Edim/Db';Param:(-1,1,2,0,2,0)),
    (Name :'Edim/Db';Param:(-1,-1,2,3,2,3)),
    (Name :'Edim/Eb';Param:(-1,-1,5,3,4,0)),
    (Name :'Edim7';Param:(-1,1,2,0,2,0)),
    (Name :'Edim7';Param:(-1,-1,2,3,2,3)),
    (Name :'Em';Param:(0,2,2,0,0,0)),
    (Name :'Em';Param:(3,-1,2,0,0,0)),
    (Name :'Em';Param:(-1,2,5,-1,-1,0)),
    (Name :'Em/A';Param:(3,-1,2,2,0,0)),
    (Name :'Em/A';Param:(-1,0,2,0,0,0)),
    (Name :'Em/A';Param:(-1,0,5,4,5,0)),
    (Name :'Em/C';Param:(0,3,2,0,0,0)),
    (Name :'Em/C';Param:(-1,2,2,0,1,0)),
    (Name :'Em/C';Param:(-1,3,5,4,5,3)),
    (Name :'Em/D';Param:(0,2,0,0,0,0)),
    (Name :'Em/D';Param:(0,2,0,0,3,0)),
    (Name :'Em/D';Param:(0,2,2,0,3,0)),
    (Name :'Em/D';Param:(0,2,2,0,3,3)),
    (Name :'Em/D';Param:(-1,-1,0,12,12,12)),
    (Name :'Em/D';Param:(-1,-1,0,9,8,7)),
    (Name :'Em/D';Param:(-1,-1,2,4,3,3)),
    (Name :'Em/D';Param:(0,-1,0,0,0,0)),
    (Name :'Em/D';Param:(-1,10,12,12,12,0)),
    (Name :'Em/Db';Param:(0,2,2,0,2,0)),
    (Name :'Em/Eb';Param:(3,-1,1,0,0,0)),
    (Name :'Em/Eb';Param:(-1,-1,1,0,0,0)),
    (Name :'Em/Gb';Param:(0,2,2,0,0,2)),
    (Name :'Em/Gb';Param:(0,2,4,0,0,0)),
    (Name :'Em/Gb';Param:(0,-1,4,0,0,0)),
    (Name :'Em/Gb';Param:(2,2,2,0,0,0)),
    (Name :'Em6';Param:(0,2,2,0,2,0)),
    (Name :'Em7';Param:(0,2,0,0,0,0)),
    (Name :'Em7';Param:(0,2,0,0,3,0)),
    (Name :'Em7';Param:(0,2,2,0,3,0)),
    (Name :'Em7';Param:(0,2,2,0,3,3)),
    (Name :'Em7';Param:(-1,-1,0,0,0,0)),
    (Name :'Em7';Param:(-1,-1,0,12,12,12)),
    (Name :'Em7';Param:(-1,-1,0,9,8,7)),
    (Name :'Em7';Param:(-1,-1,2,4,3,3)),
    (Name :'Em7';Param:(0,-1,0,0,0,0)),
    (Name :'Em7';Param:(-1,10,12,12,12,0)),
    (Name :'Em7(b5)';Param:(3,-1,0,3,3,0)),
    (Name :'Em7/add11';Param:(0,0,0,0,0,0)),
    (Name :'Em7/add11';Param:(0,0,0,0,0,3)),
    (Name :'Em7/add11';Param:(3,-1,0,2,0,0)),
    (Name :'Em9';Param:(0,2,0,0,0,2)),
    (Name :'Em9';Param:(0,2,0,0,3,2)),
    (Name :'Em9';Param:(2,2,0,0,0,0)),
    (Name :'Emaj7';Param:(0,2,1,1,0,0)),
    (Name :'Emaj7';Param:(0,-1,6,4,4,0)),
    (Name :'Emaj7';Param:(-1,-1,1,1,0,0)),
    (Name :'Emaj9';Param:(0,2,1,1,0,2)),
    (Name :'Emaj9';Param:(4,-1,4,4,4,0)),
    (Name :'Emin/maj7';Param:(3,-1,1,0,0,0)),
    (Name :'Emin/maj7';Param:(-1,-1,1,0,0,0)),
    (Name :'Emin/maj9';Param:(0,6,4,0,0,0)),
    (Name :'Esus';Param:(0,0,2,2,0,0)),
    (Name :'Esus';Param:(0,0,2,4,0,0)),
    (Name :'Esus';Param:(0,2,2,2,0,0)),
    (Name :'Esus';Param:(-1,0,2,2,0,0)),
    (Name :'Esus';Param:(-1,-1,2,2,0,0)),
    (Name :'Esus2';Param:(7,9,9,-1,-1,0)),
    (Name :'Esus2';Param:(-1,2,4,4,-1,0)),
    (Name :'Esus2/A';Param:(-1,0,4,4,0,0)),
    (Name :'Esus2/A';Param:(-1,2,4,2,5,2)),
    (Name :'Esus2/Ab';Param:(0,2,2,1,0,2)),
    (Name :'Esus2/Ab';Param:(0,-1,4,1,0,0)),
    (Name :'Esus2/Ab';Param:(2,2,2,1,0,0)),
    (Name :'Esus2/Db';Param:(-1,4,4,4,-1,0)),
    (Name :'Esus2/Eb';Param:(-1,2,2,4,4,2)),
    (Name :'Esus2/Eb';Param:(-1,-1,4,4,4,0)),
    (Name :'Esus2/G';Param:(0,2,2,0,0,2)),
    (Name :'Esus2/G';Param:(0,2,4,0,0,0)),
    (Name :'Esus2/G';Param:(0,-1,4,0,0,0)),
    (Name :'Esus2/G';Param:(2,2,2,0,0,0)),
    (Name :'Esus4/Ab';Param:(-1,0,2,1,0,0)),
    (Name :'Esus4/C';Param:(0,0,7,5,0,0)),
    (Name :'Esus4/C';Param:(-1,3,2,2,0,0)),
    (Name :'Esus4/D';Param:(0,2,0,2,0,0)),
    (Name :'Esus4/D';Param:(-1,2,0,2,3,0)),
    (Name :'Esus4/Db';Param:(0,0,2,4,2,0)),
    (Name :'Esus4/Db';Param:(-1,0,7,6,0,0)),
    (Name :'Esus4/Eb';Param:(-1,2,1,2,0,0)),
    (Name :'Esus4/F';Param:(0,0,3,2,0,0)),
    (Name :'Esus4/G';Param:(-1,0,2,0,0,0)),
    (Name :'Esus4/G';Param:(-1,0,5,4,5,0)),
    (Name :'Esus4/Gb';Param:(-1,0,4,4,0,0)),
    (Name :'Esus4/Gb';Param:(-1,2,4,2,5,2)),
    (Name :'F';Param:(1,3,3,2,1,1)),
    (Name :'F';Param:(-1,0,3,2,1,1)),
    (Name :'F';Param:(-1,3,3,2,1,1)),
    (Name :'F';Param:(-1,-1,3,2,1,1)),
    (Name :'F#5';Param:(-1,0,3,2,2,1)),
    (Name :'F#5';Param:(-1,0,-1,2,2,1)),
    (Name :'F/D';Param:(-1,5,7,5,6,5)),
    (Name :'F/D';Param:(-1,-1,0,2,1,1)),
    (Name :'F/D';Param:(-1,-1,0,5,6,5)),
    (Name :'F/E';Param:(0,0,3,2,1,0)),
    (Name :'F/E';Param:(1,3,3,2,1,0)),
    (Name :'F/E';Param:(1,-1,2,2,1,0)),
    (Name :'F/E';Param:(-1,-1,2,2,1,1)),
    (Name :'F/E';Param:(-1,-1,3,2,1,0)),
    (Name :'F/Eb';Param:(-1,-1,1,2,1,1)),
    (Name :'F/Eb';Param:(-1,-1,3,5,4,5)),
    (Name :'F/G';Param:(3,-1,3,2,1,1)),
    (Name :'F/G';Param:(-1,-1,3,2,1,3)),
    (Name :'F5';Param:(1,3,3,-1,-1,1)),
    (Name :'F5';Param:(-1,8,10,-1,-1,1)),
    (Name :'F6';Param:(-1,5,7,5,6,5)),
    (Name :'F6';Param:(-1,-1,0,2,1,1)),
    (Name :'F6';Param:(-1,-1,0,5,6,5)),
    (Name :'F6/add9';Param:(3,-1,0,2,1,1)),
    (Name :'F7';Param:(-1,-1,1,2,1,1)),
    (Name :'F7';Param:(-1,-1,3,5,4,5)),
    (Name :'Fadd9';Param:(3,-1,3,2,1,1)),
    (Name :'Fadd9';Param:(-1,-1,3,2,1,3)),
    (Name :'Faug/D';Param:(-1,-1,0,2,2,1)),
    (Name :'Faug/G';Param:(1,0,3,0,2,1)),
    (Name :'Fdim/D';Param:(-1,2,0,1,0,1)),
    (Name :'Fdim/D';Param:(-1,-1,0,1,0,1)),
    (Name :'Fdim/D';Param:(-1,-1,3,4,3,4)),
    (Name :'Fdim/Db';Param:(-1,4,3,4,0,4)),
    (Name :'Fdim7';Param:(-1,2,0,1,0,1)),
    (Name :'Fdim7';Param:(-1,-1,0,1,0,1)),
    (Name :'Fdim7';Param:(-1,-1,3,4,3,4)),
    (Name :'Fm';Param:(-1,3,3,1,1,1)),
    (Name :'Fm';Param:(-1,-1,3,1,1,1)),
    (Name :'Fm/D';Param:(-1,-1,0,1,1,1)),
    (Name :'Fm/Db';Param:(-1,3,3,1,2,1)),
    (Name :'Fm/Db';Param:(-1,4,6,5,6,4)),
    (Name :'Fm/Eb';Param:(-1,8,10,8,9,8)),
    (Name :'Fm/Eb';Param:(-1,-1,1,1,1,1)),
    (Name :'Fm6';Param:(-1,-1,0,1,1,1)),
    (Name :'Fm7';Param:(-1,8,10,8,9,8)),
    (Name :'Fm7';Param:(-1,-1,1,1,1,1)),
    (Name :'Fmaj7';Param:(0,0,3,2,1,0)),
    (Name :'Fmaj7';Param:(1,3,3,2,1,0)),
    (Name :'Fmaj7';Param:(1,-1,2,2,1,0)),
    (Name :'Fmaj7';Param:(-1,-1,2,2,1,1)),
    (Name :'Fmaj7';Param:(-1,-1,3,2,1,0)),
    (Name :'Fmaj7/#11';Param:(0,2,3,2,1,0)),
    (Name :'Fmaj7/#11';Param:(1,3,3,2,0,0)),
    (Name :'Fmaj9';Param:(0,0,3,0,1,3)),
    (Name :'Fsus';Param:(-1,-1,3,3,1,1)),
    (Name :'Fsus2';Param:(-1,3,3,0,1,1)),
    (Name :'Fsus2';Param:(-1,-1,3,0,1,1)),
    (Name :'Fsus2/A';Param:(3,-1,3,2,1,1)),
    (Name :'Fsus2/A';Param:(-1,-1,3,2,1,3)),
    (Name :'Fsus2/B';Param:(-1,3,3,0,0,3)),
    (Name :'Fsus2/Bb';Param:(-1,3,5,3,6,3)),
    (Name :'Fsus2/D';Param:(3,3,0,0,1,1)),
    (Name :'Fsus2/E';Param:(-1,3,3,0,1,0)),
    (Name :'Fsus2/E';Param:(-1,-1,3,0,1,0)),
    (Name :'Fsus4/G';Param:(-1,3,5,3,6,3)),
    (Name :'G';Param:(-1,10,12,12,12,10)),
    (Name :'G';Param:(3,2,0,0,0,3)),
    (Name :'G';Param:(3,2,0,0,3,3)),
    (Name :'G';Param:(3,5,5,4,3,3)),
    (Name :'G';Param:(3,-1,0,0,0,3)),
    (Name :'G';Param:(-1,5,5,4,3,3)),
    (Name :'G';Param:(-1,-1,0,4,3,3)),
    (Name :'G';Param:(-1,-1,0,7,8,7)),
    (Name :'G#5';Param:(3,2,1,0,0,3)),
    (Name :'G#5';Param:(3,-1,1,0,0,3)),
    (Name :'G/A';Param:(3,0,0,0,0,3)),
    (Name :'G/A';Param:(3,2,0,2,0,3)),
    (Name :'G/C';Param:(3,3,0,0,0,3)),
    (Name :'G/C';Param:(-1,3,0,0,0,3)),
    (Name :'G/E';Param:(0,2,0,0,0,0)),
    (Name :'G/E';Param:(0,2,0,0,3,0)),
    (Name :'G/E';Param:(0,2,2,0,3,0)),
    (Name :'G/E';Param:(0,2,2,0,3,3)),
    (Name :'G/E';Param:(-1,-1,0,12,12,12)),
    (Name :'G/E';Param:(-1,-1,0,9,8,7)),
    (Name :'G/E';Param:(-1,-1,2,4,3,3)),
    (Name :'G/E';Param:(0,-1,0,0,0,0)),
    (Name :'G/E';Param:(-1,10,12,12,12,0)),
    (Name :'G/F';Param:(1,-1,0,0,0,3)),
    (Name :'G/F';Param:(3,2,0,0,0,1)),
    (Name :'G/F';Param:(-1,-1,0,0,0,1)),
    (Name :'G/Gb';Param:(2,2,0,0,0,3)),
    (Name :'G/Gb';Param:(2,2,0,0,3,3)),
    (Name :'G/Gb';Param:(3,2,0,0,0,2)),
    (Name :'G/Gb';Param:(-1,-1,4,4,3,3)),
    (Name :'G5';Param:(3,5,5,-1,-1,3)),
    (Name :'G5';Param:(3,-1,0,0,3,3)),
    (Name :'G6';Param:(0,2,0,0,0,0)),
    (Name :'G6';Param:(0,2,0,0,3,0)),
    (Name :'G6';Param:(0,2,2,0,3,0)),
    (Name :'G6';Param:(0,2,2,0,3,3)),
    (Name :'G6';Param:(-1,-1,0,12,12,12)),
    (Name :'G6';Param:(-1,-1,0,9,8,7)),
    (Name :'G6';Param:(-1,-1,2,4,3,3)),
    (Name :'G6';Param:(0,-1,0,0,0,0)),
    (Name :'G6';Param:(-1,10,12,12,12,0)),
    (Name :'G6/add9';Param:(0,0,0,0,0,0)),
    (Name :'G6/add9';Param:(0,0,0,0,0,3)),
    (Name :'G6/add9';Param:(3,-1,0,2,0,0)),
    (Name :'G7';Param:(1,-1,0,0,0,3)),
    (Name :'G7';Param:(3,2,0,0,0,1)),
    (Name :'G7';Param:(-1,-1,0,0,0,1)),
    (Name :'G7/add11';Param:(-1,3,0,0,0,1)),
    (Name :'G7sus4';Param:(3,3,0,0,1,1)),
    (Name :'G9';Param:(-1,0,0,0,0,1)),
    (Name :'G9';Param:(-1,2,3,2,3,3)),
    (Name :'Gadd9';Param:(3,0,0,0,0,3)),
    (Name :'Gadd9';Param:(3,2,0,2,0,3)),
    (Name :'Gaug/E';Param:(3,-1,1,0,0,0)),
    (Name :'Gaug/E';Param:(-1,-1,1,0,0,0)),
    (Name :'Gb';Param:(2,4,4,3,2,2)),
    (Name :'Gb';Param:(-1,4,4,3,2,2)),
    (Name :'Gb';Param:(-1,-1,4,3,2,2)),
    (Name :'Gb#5';Param:(-1,-1,0,3,3,2)),
    (Name :'Gb/Ab';Param:(-1,-1,4,3,2,4)),
    (Name :'Gb/E';Param:(2,4,2,3,2,2)),
    (Name :'Gb/E';Param:(-1,-1,4,3,2,0)),
    (Name :'Gb/Eb';Param:(-1,-1,1,3,2,2)),
    (Name :'Gb/F';Param:(-1,-1,3,3,2,2)),
    (Name :'Gb6';Param:(-1,-1,1,3,2,2)),
    (Name :'Gb7';Param:(2,4,2,3,2,2)),
    (Name :'Gb7';Param:(-1,-1,4,3,2,0)),
    (Name :'Gb7(#5)';Param:(2,-1,4,3,3,0)),
    (Name :'Gb7/#9';Param:(-1,0,4,3,2,0)),
    (Name :'Gb7sus4';Param:(-1,4,4,4,-1,0)),
    (Name :'Gbadd9';Param:(-1,-1,4,3,2,4)),
    (Name :'Gbaug/E';Param:(2,-1,4,3,3,0)),
    (Name :'Gbdim/D';Param:(-1,5,7,5,7,2)),
    (Name :'Gbdim/D';Param:(-1,0,0,2,1,2)),
    (Name :'Gbdim/D';Param:(-1,3,-1,2,3,2)),
    (Name :'Gbdim/D';Param:(-1,5,7,5,7,5)),
    (Name :'Gbdim/E';Param:(-1,0,2,2,1,2)),
    (Name :'Gbdim/E';Param:(-1,-1,2,2,1,2)),
    (Name :'Gbdim/Eb';Param:(-1,-1,1,2,1,2)),
    (Name :'Gbdim7';Param:(-1,-1,1,2,1,2)),
    (Name :'Gbm';Param:(2,4,4,2,2,2)),
    (Name :'Gbm';Param:(-1,4,4,2,2,2)),
    (Name :'Gbm';Param:(-1,-1,4,2,2,2)),
    (Name :'Gbm/D';Param:(-1,-1,0,14,14,14)),
    (Name :'Gbm/D';Param:(-1,-1,0,2,2,2)),
    (Name :'Gbm/E';Param:(0,0,2,2,2,2)),
    (Name :'Gbm/E';Param:(0,-1,4,2,2,0)),
    (Name :'Gbm/E';Param:(2,-1,2,2,2,0)),
    (Name :'Gbm/E';Param:(-1,0,4,2,2,0)),
    (Name :'Gbm/E';Param:(-1,-1,2,2,2,2)),
    (Name :'Gbm7';Param:(0,0,2,2,2,2)),
    (Name :'Gbm7';Param:(0,-1,4,2,2,0)),
    (Name :'Gbm7';Param:(2,-1,2,2,2,0)),
    (Name :'Gbm7';Param:(-1,0,4,2,2,0)),
    (Name :'Gbm7';Param:(-1,-1,2,2,2,2)),
    (Name :'Gbm7(b5)';Param:(-1,0,2,2,1,2)),
    (Name :'Gbm7(b5)';Param:(-1,-1,2,2,1,2)),
    (Name :'Gbm7/b9';Param:(0,0,2,0,2,2)),
    (Name :'Gbmaj7';Param:(-1,-1,3,3,2,2)),
    (Name :'Gbsus';Param:(-1,4,4,4,2,2)),
    (Name :'Gbsus2/Bb';Param:(-1,-1,4,3,2,4)),
    (Name :'Gbsus4/E';Param:(-1,4,4,4,-1,0)),
    (Name :'Gdim/E';Param:(-1,1,2,0,2,0)),
    (Name :'Gdim/E';Param:(-1,-1,2,3,2,3)),
    (Name :'Gdim/Eb';Param:(-1,1,1,3,2,3)),
    (Name :'Gdim/Eb';Param:(-1,6,8,6,8,6)),
    (Name :'Gdim/Eb';Param:(-1,-1,1,3,2,3)),
    (Name :'Gdim7';Param:(-1,1,2,0,2,0)),
    (Name :'Gdim7';Param:(-1,-1,2,3,2,3)),
    (Name :'Gm';Param:(3,5,5,3,3,3)),
    (Name :'Gm';Param:(-1,-1,0,3,3,3)),
    (Name :'Gm/E';Param:(3,-1,0,3,3,0)),
    (Name :'Gm/Eb';Param:(-1,6,8,7,8,6)),
    (Name :'Gm/F';Param:(3,5,3,3,3,3)),
    (Name :'Gm/F';Param:(-1,-1,3,3,3,3)),
    (Name :'Gm13';Param:(0,0,3,3,3,3)),
    (Name :'Gm6';Param:(3,-1,0,3,3,0)),
    (Name :'Gm7';Param:(3,5,3,3,3,3)),
    (Name :'Gm7';Param:(-1,-1,3,3,3,3)),
    (Name :'Gm7/add11';Param:(-1,3,3,3,3,3)),
    (Name :'Gm9';Param:(3,5,3,3,3,5)),
    (Name :'Gmaj7';Param:(2,2,0,0,0,3)),
    (Name :'Gmaj7';Param:(2,2,0,0,3,3)),
    (Name :'Gmaj7';Param:(3,2,0,0,0,2)),
    (Name :'Gmaj7';Param:(-1,-1,4,4,3,3)),
    (Name :'Gsus';Param:(-1,10,12,12,13,3)),
    (Name :'Gsus';Param:(-1,3,0,0,3,3)),
    (Name :'Gsus';Param:(-1,3,5,5,3,3)),
    (Name :'Gsus';Param:(-1,5,5,5,3,3)),
    (Name :'Gsus2';Param:(5,-1,0,0,3,5)),
    (Name :'Gsus2';Param:(3,0,0,0,3,3)),
    (Name :'Gsus2';Param:(-1,0,0,0,3,3)),
    (Name :'Gsus2';Param:(-1,-1,0,2,3,3)),
    (Name :'Gsus2/B';Param:(3,0,0,0,0,3)),
    (Name :'Gsus2/B';Param:(3,2,0,2,0,3)),
    (Name :'Gsus2/C';Param:(-1,5,7,5,8,3)),
    (Name :'Gsus2/C';Param:(-1,-1,0,2,1,3)),
    (Name :'Gsus2/E';Param:(-1,0,2,0,3,0)),
    (Name :'Gsus2/E';Param:(-1,0,2,0,3,3)),
    (Name :'Gsus2/E';Param:(-1,0,2,2,3,3)),
    (Name :'Gsus2/E';Param:(5,0,0,0,3,0)),
    (Name :'Gsus2/Gb';Param:(5,-1,4,0,3,5)),
    (Name :'Gsus2/Gb';Param:(3,-1,0,2,3,2)),
    (Name :'Gsus4/A';Param:(-1,5,7,5,8,3)),
    (Name :'Gsus4/A';Param:(-1,-1,0,2,1,3)),
    (Name :'Gsus4/B';Param:(3,3,0,0,0,3)),
    (Name :'Gsus4/B';Param:(-1,3,0,0,0,3)),
    (Name :'Gsus4/E';Param:(3,-1,0,0,1,0)),
    (Name :'Gsus4/E';Param:(-1,3,0,0,1,0)),
    (Name :'Gsus4/E';Param:(-1,3,2,0,3,0)),
    (Name :'Gsus4/E';Param:(-1,3,2,0,3,3)),
    (Name :'Gsus4/E';Param:(-1,-1,0,0,1,0)),
    (Name :'Gsus4/E';Param:(-1,-1,0,5,5,3)),
    (Name :'Gsus4/E';Param:(-1,10,12,12,13,0)),
    (Name :'Gsus4/E';Param:(-1,5,5,5,-1,0)),
    (Name :'Gsus4/F';Param:(3,3,0,0,1,1))
                    );

    type
      TAgreements = class(TCustomControl)
      private
        fColorLsBx: TColor;
        fAgreeLsBx: TComboBox;
        Procedure SetColorLsBx(Value:TColor);
        Procedure Add_Name_Agreements_In_LsBx;
        Function SubtractorKey : Integer;
      protected
        Procedure DoAgreeLstBxChange(Sender: TObject);
        Procedure Resize; Override;
        Procedure Paint ; Override;
      public
       fAgreementSelected:Integer;
       constructor Create(AOwner:TComponent); override;
       destructor Destroy; override;
      published
        property Width default 200;
        property Height default 200;
        property BevelInner default bvLowered;
        property BevelOuter default bvLowered;
        Property ColorLsBx: TColor Read fColorLsBx Write SetColorLsBx default clWhite;
        property OnMouseDown;
        property OnClick;
      end;

    procedure Register;

    implementation

    procedure Register;
    begin
      RegisterComponents('MUSIC_PRO', [TAgreements]);
    end;

    constructor TAgreements.Create(AOwner: TComponent);
    begin
      inherited Create(AOwner);

      Parent := TWinControl(AOwner);

      ControlStyle := ControlStyle + [csFramed, csReplicatable];

      DoubleBuffered := True;
      Caption        := '';
      Width          := 200;
      Height         := 200;
      BevelInner     := bvLowered;
      BevelOuter     := bvLowered;

      fAgreementSelected  := -1;
      fColorLsBx          := ClWhite;

      fAgreeLsBx          := TComboBox.Create(Self);
      fAgreeLsBx.Parent   := self;
      fAgreeLsBx.Anchors  := [akLeft, akRight, akTop];
      fAgreeLsBx.Color    := fColorLsBx;
      fAgreeLsBx.OnChange := DoAgreeLstBxChange;

      Resize;
      Add_Name_Agreements_In_LsBx;
    end;

    destructor TAgreements.Destroy;
    begin
      fAgreeLsBx.Free;
      inherited;
    end;

    Procedure TAgreements.SetColorLsBx(Value: TColor);
    begin
      if fColorLsBx <> Value then
      begin
        fColorLsBx := Value;
        fAgreeLsBx.Color := fColorLsBx;
      end;
    End;

    Procedure TAgreements.Add_Name_Agreements_In_LsBx;
    var
      Index : integer;
    begin
      for Index := Low(ListAgreement) to High(ListAgreement) do
        if fAgreeLsBx.Items.IndexOf(ListAgreement[Index].Name) = -1 then
          fAgreeLsBx.Items.Add(ListAgreement[Index].Name);
    end;

    Procedure TAgreements.Resize;
    begin
      inherited;

      If (Width and $1) = $1 Then
        Width := Width+1;

      Height := Round(Self.Width*1.2);

      fAgreeLsBx.SetBounds(4, 4, Width-8, 21);
      fAgreeLsBx.Font.Size  := round(Width *0.08);
    end;

    Procedure TAgreements.DoAgreeLstBxChange(Sender: TObject);
    var
      Index: integer;
    begin
      if fAgreeLsBx.Items.Count < 0 then
        Exit;

      for Index := Low(ListAgreement) to high(ListAgreement) Do
        if ListAgreement[Index].Name = fAgreeLsBx.Items.Strings[fAgreeLsBx.ItemIndex] then
        begin
          fAgreementSelected := Index;
          Invalidate;
          Break;
        end;
    end;

    Function TAgreements.SubtractorKey: Integer;
    var
    IndexRope, SubtractorKeyValue: Integer;
    begin
      SubtractorKeyValue := 0;
      for IndexRope := 1 to 6 do
        if SubtractorKeyValue < ListAgreement[fAgreementSelected].Param[IndexRope-1] then
          SubtractorKeyValue := ListAgreement[fAgreementSelected].Param[IndexRope-1];
      Result := SubtractorKeyValue-5;
    end;

    Procedure TAgreements.Paint;
    Var
      ColumnDim: Single;
      Rect: TRect;
      IndexLine, IndexRope,
      Border,
      LeftText, TopText, WidthText, HeightText,
      Subtractor, KeysSubstracted: Integer;
      Str: String;
    Begin
      Inherited;
      if fAgreementSelected = -1 then
        Exit;

      Border := Height-Width;

      with Canvas do
      begin
        Brush.Color := clBlack;
        Brush.Style := bsSolid;
        Pen.Color   := clBlack;
        Pen.Width   := 3;
        ColumnDim   := Self.Width/7;
        for IndexLine := 1 to 6 do
        begin
          MoveTo( Round(ColumnDim), Round(ColumnDim*IndexLine+Border) );
          LineTo( Round(Self.Width-ColumnDim), Round(ColumnDim*IndexLine+Border) );
          MoveTo( Round(ColumnDim*IndexLine), Round(ColumnDim+Border) );
          LineTo( Round(ColumnDim*IndexLine), Round(Self.Height-ColumnDim) );
        end;

        Font.Color := clWhite;
        Subtractor := SubtractorKey;

        for IndexRope := 1 to 6 do
          If ListAgreement[fAgreementSelected].Param[IndexRope-1] > 0 Then
          begin
            Rect.Left  := Round( ColumnDim*IndexRope )-5;
            Rect.Right := Round( ColumnDim*IndexRope )+5;

            if Subtractor > 0 then
              KeysSubstracted := ListAgreement[fAgreementSelected].Param[IndexRope-1]-Subtractor
            else
              KeysSubstracted := ListAgreement[fAgreementSelected].Param[IndexRope-1];

            Rect.Top    := Round((KeysSubstracted+0.5)*ColumnDim+Border)-5;
            Rect.Bottom := Rect.Top+10;
            Ellipse(Rect);

            if Subtractor > 0 then
            begin
              Font.Size  := Width Div 16;
              WidthText  := TextWidth( IntToStr(Subtractor) );
              HeightText := TextHeight( IntToStr(Subtractor) );
              LeftText   := Round( (ColumnDim -WidthText)*0.5 );
              TopText    := Round( ((3*ColumnDim-HeightText)*0.5)+Border );
              TextOut( LeftText, TopText, IntToStr(Subtractor+1) );
            end;
          end
          else
          begin
            if ListAgreement[fAgreementSelected].Param[IndexRope-1] = 0 then
              Str := '0'
            else
              Str := 'X';
            Font.Size  := Width Div 16;
            WidthText  := TextWidth(Str);
            HeightText := TextHeight(Str);
            LeftText   := Round( ColumnDim*(IndexRope) )-WidthText Div 2;
            TopText    := Round( 0.5*ColumnDim-(HeightText*0.5)+Border );
            TextOut( LeftText, TopText, Str );
          end;
        end;
    end;



    end.

  • signaler à un administrateur
    Commentaire de japee le 21/12/2007 02:12:57 administrateur CS

    Ok, après avoir mieux regardé, il s'agit de plusieurs manières de faire le même accord.
    Bon, puisque je vous dis qu'il y en a 2 ou 3 que je connais pas... ^^

    @Cirec : Moi aussi j'aurais préféré une ComboBox, mais on peut quand même accéder assez rapidement à l'accord voulu en saisissant la lettre correspondant dans la ListBox. Si tu saisis G, tu tombes sur le 1er des accords de sol, cad le sol majeur.

  • signaler à un administrateur
    Commentaire de Francky23012301 le 21/12/2007 09:00:44

    Bon il serait peut etre temps de vous accorder les mecs lol : combobox ou tlistbox ? vous voulez lequel ?

  • signaler à un administrateur
    Commentaire de japee le 21/12/2007 09:27:49 administrateur CS

    La TComboBox est plus agréable à mon avis.
    En même temps, c'est pas un vrai problème : il suffit de remplacer TListBox par TComboBox à 2 endroits...

  • signaler à un administrateur
    Commentaire de f0xi le 21/12/2007 09:37:58 administrateur CS

    Même avis que japee, la Combobox est plus appropriée pour ça surtout pour la recherche automatique lors de la saisie et pour l'evenement OnChange.


  • signaler à un administrateur
    Commentaire de Francky23012301 le 21/12/2007 09:51:09

    Bon je t'envois le screenshot f0xi car je sens que je vais passer la matinée à  la modifier sur le site. Il y a un sérieux soucis : les checkbox dans la partie modification d'un source font des leurs.

  • signaler à un administrateur
    Commentaire de cirec le 21/12/2007 11:57:05 administrateur CS

    Eh Francky Oublies les CheckBoxs
    il faut les cocher que si tu supprimes (le Zip ou la capture) pas si tu les remplaces !

    "Pour la notation francaise des accords : je suis pas sur qu'elle existe."
    Do Ré Mi Fa Sol La Si  c'est ça la notation française ;-)

  • signaler à un administrateur
    Commentaire de cirec le 21/12/2007 12:47:07 administrateur CS

    Voici les dernières modifications

       ...
      public
       fAgreementSelected:Integer;
       constructor Create(AOwner:TComponent); override;
       //destructor Destroy; override; // complètement inutile
      published
       ...
    Implementation

    constructor TAgreements.Create(AOwner:TComponent);
    begin
      inherited Create(AOwner);
      ...
      ...
      Add_Name_Agreements_In_LsBx;
      fAgreeLsBx.ItemIndex  := 0; // évite d'avoir le ComboBox vide
      fAgreementSelected  := 0; //  après sa création
    end;

    {destructor TAgreements.Destroy;
    begin
      fAgreeLsBx.Free;  //Ceci n'est vraiment pas utile
      inherited;  // et du coup c'est tout le Destructeur qui devient inutile
    end; }   // C'est TAgreements qui se charge de libérer FAgreeLsBx.

  • signaler à un administrateur
    Commentaire de japee le 21/12/2007 12:56:32 administrateur CS

    C'est maintenant quasiment parfait au niveau du fonctionnement.

    Moi j'aime bien qu'un accord s'affiche au démarrage, il suffit d'ajouter
      fAgreeLsBx.ItemIndex := 0;
      DoAgreeLstBxChange(nil);
    dans TAgreements.Add_Name_Agreements_In_LsBx

    Ça serait bien aussi si, quand on clique dessus, les différentes possibilités pour un  accord donné défilaient en boucle plutôt que de s'arrêter sur le dernier.

    Mais bon, les goûts et les couleurs...

  • signaler à un administrateur
    Commentaire de cirec le 21/12/2007 13:04:19 administrateur CS

    Dans le OnPaint vire le :
      //Inherited;
    ça ne sert pas à grand chose puisque tu le redessine complètement
    juste après

    En plus je trouve l'affichage plus claire ... plus propre

    Tu peux éventuellement faire :
      With Inherited Canvas Do

    Mais c'est pas utile ... enfin fait les testes ;-)

  • signaler à un administrateur
    Commentaire de cirec le 21/12/2007 13:14:53 administrateur CS

    Il manque encore un truc

    afin ne pas pouvoir écrire dans le ComboBox mais quand même
    pouvoir se servir de la recherche automatique lors de la saisie

    Dans le Constructeur :
      Add_Name_Agreements_In_LsBx;
      fAgreeLsBx.Style := csDropDownList; // <------------ Ajoute ceci
      fAgreeLsBx.ItemIndex  := 0;
      fAgreementSelected  := 0;

  • signaler à un administrateur
    Commentaire de Francky23012301 le 21/12/2007 18:42:43

    J'ai vu vos commentaires : je ferai tout ca demain promis.

    Arffff si je voulais pas vous réserver la surprise d'un pseudo cubase, je vous lacherai mon TPianoGrid pour vous faire plaisir tiens :p.

  • signaler à un administrateur
    Commentaire de Nicolas___ le 22/12/2007 01:47:11

    Excellent Fracky , vraiment :)

    Je viens seulement de découvrir ta source , et waw , t'as du t'amuser comme un fou avec tes records !

    Et moi je vais pouvoir les réviser très facilement maintenant !

    Bon maintenant tu peux t'amuser à le faire avec les differents accordages, EADGBE c'est le standard ... hé c'est pour rire te suicide pas !

    Ciao , Joyeuses Fêtes

  • signaler à un administrateur
    Commentaire de Nicolas___ le 22/12/2007 01:54:37