#1 16-12-2007 16:09:59

jp
Membre
Date d'inscription: 05-09-2007
Messages: 412

[GNU Solfege] Modification d'un exercice existant

Bon, un petit tutoriel pour modifier un exercice existant dans GNUS (GNU Solfege) suite à un post de mr-sam et c'est d'ailleurs l'exercice qu'il veut modifier que je vais prendre pour exemple.

Cela va être un peu long car c'est le premier tutoriel sur GNUS mais les suivants seront plus courts car les principes généraux changent peu.

Donc, pour modifier un exercice, il va falloir éditer un fichier texte qui se trouve dans le répertoire de GNUS :
"...\GNU Solfege\lesson-files\"
(remplacer les \ par des / pour les linuxiens et les ... par le chemin complet où GNUS est installé sur votre ordinateur).

Comme le nom du répertoire le laisse supposer, c'est le répertoire des fichiers d'exercice. En allant dedans, vous allez tomber sur une liste de fichiers sans extension avec des noms qui ne vont pas coller avec les menus de GNUS. Pour trouver quel fichier va avec quelle leçon de GNUS, lançons GNUS sans plus attendre.

Dans le menu "Fichier", choisissez "Editer l'arbre d'apprentissage". Une nouvelle fenêtre s'ouvre intitulée learningtree.txt avec des options à gauche et une arborescence à droite proche des menus que nous avons dans GNUS.

L'exercice qui nous intéresse aujourd'hui est "Accords > Renversement d'accords > Mineur/majeur en position ouverte ou fermée". Je vous conseille de l'ouvrir en parallèle dans GNUS pour faire un parallèle entre le contenu du fichier exercice et ce qui s'affiche à l'écran. A chaque modification du fichier exercice que nous allons éditer vous devrez resélectionner cet exercice pour voir apparaître vos modification (et vos erreurs !).

Revenons dans la fenêtre learningtre.txt pour trouver quel fichier est associé à cet exercice. Pour cela, il faut aller dans _Chords (Accords) > In_versions of chords > Mineur/majeur en position ouverte ou fermée. En cliquant sur cet intitulé, on peut voir juste en dessous "Nom du fichier de leçon : chord-min-major-close-open". Voilà le nom du fichier à aller chercher et à éditer dans "GNU Solfege\lesson-files".

Après ouverture du fichier (j'utilise Notepad++), nous avons ceci :

Code:

# Solfege - ear training for GNOME
# Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005 Tom Cato Amundsen
# License is GPL, see file COPYING

header {
    lesson_id = "43fae488-3291-47c7-8ef7-dfc46544a0d8"
    module = chord
    random_transpose = accidentals, -5, 5
    title = _("Minor/major in close and open position")
}
question {
 name = _("minor")
 set=0
 toptone = 5
 inversion = 0
 chord("c' es' g'")
}
question {
 name = _("minor")
 set=1
 toptone = 3
 inversion = 0
 chord("c' g' es''")
}
question {
 name = _("minor")
 set=2
 toptone = 1 
 inversion = 1 
 chord("es' g' c''")
}
question {
 name = _("minor")
 set=3
 toptone = 5 
 inversion = 1 
 chord("es c' g'")
}
question {
 name = _("minor")
 set=4
 toptone = 1
 inversion = 2 
 chord("g es' c''")
}



question {
 name = _("major")
 set=0
 toptone = 5
 inversion = 0
 chord("c' e' g'")
}
question {
 name = _("major")
 set=1
 toptone = 3
 inversion = 0
 chord("c' g' e''")
}
question {
 name = _("major")
 set=2
 toptone = 1 
 inversion = 1 
 chord("e' g' c''")
}
question {
 name = _("major")
 set=3
 toptone = 5 
 inversion = 1 
 chord("e c' g'")
}
question {
 name = _("major")
 set=4
 toptone = 1
 inversion = 2 
 chord("g e' c''")
}

Pas d'affollement, nous allons casser tout ça en petits blocs !

Déjà, les premières lignes qui commencent par des "#" sont des commentaires, utiles pour savoir ce qu'il se passe à certain endroit du fichier ou pour faire un entête général comme ici :

Code:

# Solfege - ear training for GNOME
# Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005 Tom Cato Amundsen
# License is GPL, see file COPYING

Suit la partie "entête" du fichier d'exercice :

Code:

header {
    lesson_id = "43fae488-3291-47c7-8ef7-dfc46544a0d8"
    module = chord
    random_transpose = accidentals, -5, 5
    title = _("Minor/major in close and open position")
}

Bien, alors... header{} encapsule l'entête d'exercice, essayons de comprendre à quoi servent les différents paramètres.

lesson-id est une chaîne de caractère qui permet d'identifier le fichier d'exercice de manière unique (cela sera important quand vous créerez vos exercice, là nous modifions un exercice existant),
module précise à quelle type d'exercice appartient cet exercice et quelle partie de GNUS doit l'exécuter ; nous voyons qu'il appartient à "chord", c'est une catégorie qui permet de poser des questions d'identification sur des accords (surprenant !),
random_transpose : sans rentrer dans les détails, cette instruction permet de dire à GNUS de transposer les questions que nous allons créer par la suite pour une plus grande variété de questions sans avoir à toutes les taper ; en effet, il nous suffira de créer les questions en do par exemple et cette instruction fera que les accords majeurs ou autres pourront être à deviner avec une fondamentale autre que do,
title est une chaîne de description qui sera utilisée pour nommer l'exercice dans le menu ("Accords" dans notre cas) ; les "_(" et ")" sont destinés à indiquer à GNUS qu'il doit traduire l'intitulé dans la langue que vous avez choisie à l'installation; ici, vous voyez que le titre est en anglais et pourtant dans votre menu "Accords" (qui est libellé "_Chords" d'ailleurs dans le fichier learningtree.txt, vous vous souvenez ?), le titre de l'exercice est en français ; libre à vous donc d'encapsuler vos chaînes de caractères avec "_()", cela n'a d'intérêt que si vous projeter de proposer vos exercices à la communauté GNUS (ce qui n'est pas une mauvaise idée).

Passons aux questions. Elles sont tous formulées de la même manière, aussi prenons la première, tout simplement :

Code:

question {
   name = _("minor")
   set = 0
   toptone = 5
   inversion = 0
   chord("c' es' g'")
}

question{} encapsule chaque question que l'on veut poser dans notre exercice, il faudra en créer autant que le nombre de type d'accord à deviner, dans telle ou telle inversion. Mais pas pour toutes les notes fondamentales possible (vous comprenez mieux l'intérêt de random_transpose dans la partie header de l'exercice smile ).

name : indique que _("minor") ("mineur") est la bonne réponse,
set : pas la peine d'en parler, c'est utile pour des choses plus complexes ; on en parlera une autre fois ! Regardez la logique incrémentielle utilisée, cela suffit.
toptone : indique que la 5te ("5") est la bonne réponse pour cette question en ce qui concerne la note la plus haute entendue de l'accord,
inversion : indique que "sans renversement" est la bonne réponse pour cette question,
chord("") : alors, ici nous entrons l'accord (en do) que nous voulons travailler (et qui doit correspondre aux réponses attendues précédemment !).

Rappellons la notation anglo-saxonne :

Code:

do = c, ré = d, mi = e, fa = f, sol = g, la = a, si = b

Ici, nous avons donc l'accord do (oublions le ' pour l'instant), mi (oublions le s' pour l'instant) et sol (oublions le ' pour l'instant).
"es" placé après c,d,e,f,g,a ou b signifie que la note est bémol. "is" que la note est dièse. Ce sont les notations utilisé par Lilypond, un logiciel gratuit, complet mais assez complexe d'écriture musicale. Dans le cas de mi, e, "ees" est contracté en "es" pour expliciter "mib". mi# s'écrierait eis par contre. Doubles dièses, doubles bémols ? dobb = ceses et dox = cisis.
Passons au ' : c'est un marqueur qui indique à quelle octave on situe la note qui s'en trouve affublé. Sans ', "c" est le do situé 1 octave en dessous du do central (entre les clés de fa et sol). Pour cette question (et toutes les autres), on préfère se mettre au moins dans l'octave partant de ce do central. Toutes les notes seront donc suivies d'un '. Si l'on veut encore monter d'une octave ? On ajoute un ' : 1er renversement fermé pour cette question -> chord("es' g' c''") (vous le verrez dans le fichier). Pour baisser la note d'une octave, on place une virgule à la suite de la note -> chord("c, e, g,") vous donne un "beau" do majeur joué sur une contrebasse... Les virgules peuvent s'accumuler (comme les ') pour descendre (ou monter) de plusieurs octaves.

Voilà, toutes les questions seront formulées ainsi ; je vous conseille de bien lire le fichier exercice pour comprendre ce que chaque question propose comme accord et si les réponses à donner sont correctement associées (on ne sait jamais !). Ensuite, ajoutez vos propres questions, à la suite de celles déjà existantes et n'hésitez pas à utiliser des # pour commenter ce que vous faites (pour vous plus tard à la relecture et pour ceux à qui vous transmettrez gentillement vos exercices !).

Dernier point, nous avons une langue où les accents sont assez fréquents et vous risquez d'avoir des messages d'erreurs incompréhensible si vous indiquez par exemple name = "diminué" pour le bouton de réponse d'une question sur un accord diminué. Cela vient d'une histoire d'encodage, GNUS s'attend à de l'UTF8 et nos traitements de texte sorte plutôt un autre type d'encodage... Bref, pour vous épargner tout désagrément, ajouter en tout début de fichier cette ligne qui ressemble à un commentaire mais qui n'en est pas un :

Code:

# -*- coding: iso-8859-1 -*-

Ainsi, GNUS "sait" qu'il va y avoir des caractères accentués, non encodés en UTF8, et il sera plus gentil ! smile

Voici le lien vers le fichier que j'ai modifié. Il est commenté mais si vous avez des questions, n'hésitez pas à les poster ici.

Une fois téléchargé, il suffit de le placer dans votre répertoire "GNU Solfege\lesson-files\" en écrasant l'ancien.

http://ctxctx.free.fr/polyphonies/chord … close-open

A bientôt ! smile


jp
niveau III - cours 41

Hors ligne

 

#2 17-12-2007 18:10:02

mr-sam
Membre
Lieu: Drôme
Date d'inscription: 06-09-2007
Messages: 70
Site web

Re: [GNU Solfege] Modification d'un exercice existant

Merci beaucoup!

Même si je n'y connais rien en informatique j'ai réussi a comprendre,a  modifier legerement, et a  faire marcher  cette programation!


Un complement pour ceux qui ont un Linux Ubuntu en ce qui conserne la copie du fichier texte.

Poser le fichier texte sur le bureau,il doits avoir le même nom que celui a remplacer,puis  ouvrir la console que l'on nome aussi terminal (applications>accessoires)

Tapper dans le terminal: "cd ~/Bureau" ou "cd ~/Desktop" si cela ne marche pas

Ensuite tapper toujours dans le terminal :"sudo rm /usr/share/solfege/lesson-files/chord-min-major-close-open"

rm voulant dire remove.Cette étape est facultative si le fichier que l'on veux déplacer a un nom différent de tous les autres fichiers du dossier de destination

en enfin tapper :"sudo cp chord-min-major-close-open /usr/share/solfege/lesson-files"

cp voulant dire copy

les commandes sont entre Guillemets. Pour que tout marchent,il est préfairable de les oublier

Dernière modification par mr-sam (17-12-2007 18:12:20)

Hors ligne

 

Pied de page des forums

Forum de Polyphonies,
école à distance d'écriture musicale et de composition.