TAGREEMENT

Utilisateur anonyme - 20 déc. 2007 à 13:20
Marcus2508 Messages postés 2 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 8 août 2008 - 8 août 2008 à 00:21
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/45138-tagreement

Marcus2508 Messages postés 2 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 8 août 2008
8 août 2008 à 00:21
Très intéressant comme composant, va falloir que je m'y colle à en coder un...
Au niveau code, c'est rudimentaire et efficace mais il y a pas mal d'hérésies dans le nom des accords!
Je ne sais pas où tu as trouvé ces définitions !
"A/B" se lit "A majeur avec un B à la basse" qui est grosso modo un B13 sans tierce ni quinte ou encore "B13(omit3)", une superstructure comme on dit dans le jargon.Or la tablature que tu donnes (0,0,2,4,2,0) n'est ni plus ni moins qu'un "A add 9/E" ( et non "A9" ou "AM9" car absence de 7e). Loin de moi l'envie de vous chercher des poux dans la tête, mais il fallait le signaler :)
Francky23012301 Messages postés 400 Date d'inscription samedi 6 août 2005 Statut Membre Dernière intervention 11 février 2016 1
22 déc. 2007 à 15:44
Tu as raison : apres mur reflexion ca ne sert à rien. C'est juste l'habitude et la peur de ne pas libérer les objets. je m'étais jamais posée la question lors de la création d'un composant. En meme temps faut mieux en faire trop que pas assez ^^ : en définif ca ne change rien sauf quelques lignes de codes en moins.

Bon je vais te faire plaisir t'inquete pas : ben dis donc ce petit compo, il déchaine les passions lol.
Utilisateur anonyme
22 déc. 2007 à 14:05
Bon Alors c'est tout simple :

Quand tu donnes un composant au Constructeur en paramètre :
Panel := TPanel.Create(Form1)

C'est Form1 qui se charge de la destruction du Panel

Si tu fait :
Panel := TPanel.Create(Nil)

Bitmap := TBitmap.Create // qui n'accepte pas de paramètre

C'est toi qui doit les liberer :
Panel.Free et Bitmap.Free

Et donc si tu n'as rien à mettre dans ton Destructeur à part :
Inherited Destroy;

c'est pas la peine de l'implémenter ;)

Pour l'implémentation du Parent dans le Constructeur je n'en ai jamais eu l'utilité !!!
Francky23012301 Messages postés 400 Date d'inscription samedi 6 août 2005 Statut Membre Dernière intervention 11 février 2016 1
22 déc. 2007 à 13:25
Je captes plus rien lol : au secours lol. Dans quel cas on doit implanter le Destroy et définir le parent dans le constructeur dans un composant. Car là je suis paumé ^^.
Utilisateur anonyme
22 déc. 2007 à 12:26
"Cirec : si dans le OnPaint tu vires le Inherited, il y a un soucis avec les propriétés BevelInner et BevelOuter. Fais le test tu véras mieux ^^."

Oui je sais mais personnellement je préfère comme ça ...
mais par dessus tout le composant est moins long à l'affichage puisque tu ne fais plus appel à la méthode héritée de Paint

"Pour les libérations : je suis d'accord avec toi. Mais par habitude et par précaution, je préfère écrire la libération de tous les objects."

ça ne sert ABSOLUMENT à rien ;-)
Si tu tiens absolument à le libérer toi même dans ce ça met Nil dans le OnCreate mais c'est c'est du temps et du code de perdu :)

Sinon pour le problème cité par Nicolas__

Moi je serais d'avis de supprimer ceci Dans le Constructeur:
Parent := TWinControl(AOwner);

Surprenant que F0xi ait laissé cette ligne !!!!!!

Le parent est mis automatiquement lors drop sur la fiche
et si il est créé dynamiquement dans ce cas c'est à l'utilisateur de le spécifier

à mon avis le problème viens de cette ligne ... en tous cas elle na rien à faire là.
Francky23012301 Messages postés 400 Date d'inscription samedi 6 août 2005 Statut Membre Dernière intervention 11 février 2016 1
22 déc. 2007 à 09:36
Je précise : j'ai refais les modifs que vous avez proposé : j'ai remplacé la tlistbox par la combobox et j'ai pris en comptes vos dernières remarques.
Francky23012301 Messages postés 400 Date d'inscription samedi 6 août 2005 Statut Membre Dernière intervention 11 février 2016 1
22 déc. 2007 à 09:35
Salut,

Oui je viens de voir ca : elle était pas présente avec l'ancienne version.
Je suis donc revenu à la version précédente mais t'inquète f0xi, je me penche sur tes modifs : je veux savoir ou ca beugue.

Cirec : si dans le OnPaint tu vires le Inherited, il y a un soucis avec les propriétés BevelInner et BevelOuter. Fais le test tu véras mieux ^^.

Pour les libérations : je suis d'accord avec toi. Mais par habitude et par précaution, je préfère écrire la libération de tous les objects.
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
22 déc. 2007 à 01:54
Par contre c'est bizarre
qd je place le composant sur une fenetre j'ai toujours
8 fois ceci :
---------------------------
Erreur
---------------------------
Violation d'accès à l'adresse 510056A2 dans le module 'dclusr70.bpl'. Lecture de l'adresse 00000000.
---------------------------
OK
---------------------------

Mais le compo se place correctement et fonctionne aussi tres bien , je sauvegarde et je reouvre , tt marche !

J'utilise D7 ...

Enfin vu l'heure j'ai peut etre mal installé le compo ( m'enfin ... )

Ciao
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
22 déc. 2007 à 01:47
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
Francky23012301 Messages postés 400 Date d'inscription samedi 6 août 2005 Statut Membre Dernière intervention 11 février 2016 1
21 déc. 2007 à 18:42
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.
Utilisateur anonyme
21 déc. 2007 à 13:14
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;
Utilisateur anonyme
21 déc. 2007 à 13:04
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 ;-)
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
21 déc. 2007 à 12:56
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...
Utilisateur anonyme
21 déc. 2007 à 12:47
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.
Utilisateur anonyme
21 déc. 2007 à 11:57
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 ;-)
Francky23012301 Messages postés 400 Date d'inscription samedi 6 août 2005 Statut Membre Dernière intervention 11 février 2016 1
21 déc. 2007 à 09:51
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.
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
21 déc. 2007 à 09:37
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.
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
21 déc. 2007 à 09:27
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...
Francky23012301 Messages postés 400 Date d'inscription samedi 6 août 2005 Statut Membre Dernière intervention 11 février 2016 1
21 déc. 2007 à 09:00
Bon il serait peut etre temps de vous accorder les mecs lol : combobox ou tlistbox ? vous voulez lequel ?
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
21 déc. 2007 à 02:12
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.
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
21 déc. 2007 à 01:53
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.
Utilisateur anonyme
21 déc. 2007 à 01:27
"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 ! ;-)
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
21 déc. 2007 à 00:05
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 ?
Utilisateur anonyme
20 déc. 2007 à 13:20
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
Rejoignez-nous