Guide de drumpatterns 0.55

Gilles LAMIRAL

$Id: drumpatterns.fr.m4,v 1.2 2002/08/30 03:00:48 gilles Exp $


Comment utiliser drumpatterns 0.55

Index de la documentation

Vous trouverez la dernière version de drumpatterns, écrit par Gilles LAMIRAL, à l'adresse :
http://www.linux-france.org/prj/drumpatterns/

1. Introduction

Ce document décrit l'histoire, le fonctionnement et l'utilisation du générateur de séquences pour batteurs appelé "DrumPatterns". Pour le moment, seule la coordination des membres (bras et pieds) est traitée. L'indépendance et la polyrythmie seront prises en compte plus tard.

Pour introduire le sujet, le mieux est de tester le programme Drum Patterns avec ses valeurs par défaut. Si vous êtes déjà batteur, cela vous rappellera quelque chose. Pour les autres je vais essayer d'expliquer l'utilité du programme. Il constitue une intéressante démonstration de ce que l'on peut faire avec Perl, CGI.pm et le protocole HTTP.

L'archive du logiciel est disponible en ftp sur le site linux-france.com.

Je partirai d'une analogie avec le langage écrit. Nous écrivons des textes traitant d'un thème donné. Ces textes se composent de paragraphes, eux-mêmes composés de phrases, puis de mots et de lettres. Quand quelqu'un veut devenir batteur, il doit travailler toute une série d'exercices, indigestes au premier abord, qui constituent un apprentissage des mots, le vocabulaire en somme. L'analogie est limité car les lettres (l'alphabet) sont en petit nombre. Ces lettres sont les coups donnés par les mains et les pieds, droits et gauches; le vocabulaire n'est pas défini d'avance, il est "libre". Le but de ce programme est de générer tous les mots correspondants à un alphabet donné et à quelques règles de travail, justifiées par l'usage.

2. Remerciements

J'énumére ici les outils et leur créateur qui m'ont servi pour élaborer ce petit programme et la présente documentation. Je les remercie tous. Je ne cite que les créateurs, les personnes qui collaborèrent sont tout aussi méritantes.

Merci à Stan Mulder pour la qualité de son site sur l'excellent batteur Steve Gadd et la motivation qu'il m'a donnée involontairement.

De même pour Julien Cassaigne qui, par son savoir mathématique, m'a donné une remarquable méthode d'estimation du nombre de séquences générées. Cependant, ce n'est pas celle que j'ai utilisée ici car elle implique un calculateur formel, trop gourmand en ressources.

Un grand merci à Nat Makarévitch qui accepta sans hésitation la présence de ce programme sur son excellent site linux-france.

3. Glossaire

Séquence

Une gamme, une combinaison, un mot, un pattern (en anglais).

4. Licence

J'ai placé ce logiciel sous la Licence Publique Générale GNU Version 2 pour éviter d'en être dépossédé mais je doute fort qu'une entreprise commerciale s'y intéresse un jour. Vous trouverez un exemplaire anglais de cette licence dans le répertoire "doc" de l'archive ou bien dans toute bonne crémerie du type ftp://ftp.bonne.cremerie.org/pub/GNU/. Le code source du programme est dans le répertoire "bin".

5. Histoire

À l'origine, il me tardait de voir l'annonce d'un programme du même type sur un excellent site consacré à Steve Gadd, un ardent et brillant utilisateur de ces gammes de base. Le site fut construit et est toujours maintenu par Stan Mulder, sur The Steve Gadd Site. J'ai attendu quelques semaines mais rien n'est venu. Alors je l'ai écrit moi-même. Quand j'ai finalement contacté Stan pour lui donner mon petit programme il m'a donné l'adresse où était déjà présent le sien. Dommage pour moi. De plus, son programme donnait de plus beaux résultats que le mien. Je me suis remis au travail pour offrir une meilleure convivialité et des fonctionnalités plus étendues. C'est beau l'émulation !

Cela fait un moment que ce programme traîne dans un de mes répertoires et qu'il ne sert à aucun batteur mais avant de le mettre en ligne, je devais d'abord le peaufiner car il peut devenir très gourmand en ressources (CPU et surtout mémoire) et faire sauter le caisson du serveur qu'il exécute, pardon, qui l'exécute. Je ne sais pas encore si le charmant hôte sur lequel vous lisez ces lignes acceptera de le laisser tourner. J'ai pris un soin particulier à vérifier qu'aucun petit malin pourra outrepasser la belle interface et jouer avec la mémoire et le CPU du serveur. J'y ai ajouté un fichier de configuration pour que le webmaster adapte la bête suivant la disponibilité des ressources du serveur.

6. Utilisation

Je décrirai tout d'abord l'interface graphique globalement, puis je détaillerai chaque partie.

6.1 Interface générale

L'interface présente dans l'ordre :

6.2 Les 3 boutons du dessus

Le premier, intitulé "Go !", lance le calcul et présente les résultats s'ils rentrent dans les limites fixées par le WebMaster.

Le second annule les dernières manipulations de l'interface et replace les valeurs avec celles correspondant aux résultats présentés; il ne lance aucun calcul.

Le dernier lance les calculs avec les valeurs par défaut, comme si vous chargiez la page pour la première fois.

6.3 Le tableau de configuration

C'est un tableau de 5 lignes et 4 colonnes. Les lignes représentent les 5 membres. Les colonnes définissent les règles appliquées à chaque membre.

Les lignes

Chaque ligne définit l'ensemble des règles de comportement d'un membre. Les 5 membres sont la Main Droite, la Main Gauche, le Pied Droit, le Pied Gauche, et le Silence. Je sais que le silence n'est pas un membre mais fonctionnellement cela correspond.

La colonne Membres Sélectionnés (Seleted members)

Cette colonne est composée de boutons à cocher (Toggle Buttons). Le bouton défini si le membre fait partie des séquences générées. Remarquons qu'il faut cocher au moins deux membres dans la colonne pour que les résultats soient pertinents car les séquences composées uniquement d'un membre n'offrent pas beaucoup d'intérêt.

La colonne Coups Consécutifs Maximum (Max Consecutive tricks)

Cette colonne est composée de menus à options, un par membre. La valeur choisie spécifie le nombre maximal de coups consécutifs qui apparaissent dans les séquences. C'est utile pour limiter le nombre exercices proposés.

6.4 La taille des mots

Ce menu à options permet de définir la longueur des séquences générées. De 0 à 16. Zéro est une valeur sans grand intérêt, il fut inclus pour tester les effets de bord du programme, il est resté. Attention, au delà de 5 le nombre de séquences générées peut devenir très long à récupérer. Aidez vous du tableau des estimations.

6.5 Le style de présentation

Ce sont des boutons radio. Choisissez le mode caractère ("Caracter") ou bien le mode partition ("Score"). Le mode caractère est moins gourmand en place et se charge donc plus vite que celui contenant les images (Comparer la taille des sources HTML dans les deux cas). Le mode partition est bien plus lisible. Je remercie Stan Mulder pour l'astuce (un examen de son HTML) permettant de générer des partitions avec seulement 8 petites images (regardez le source HTML)

6.6 Les estimations

Le programme est exhaustif, il recherche toutes les séquences possibles. Cela peut atteindre 152 587 890 625 combinaisons (5^16, cinq puissance 16) soit 134 Tera-octets de page HTML ! Vous comprendrez que je l'ai muselé pour éviter la surcharge des gentils serveurs qui l'hébergent. Cela dit, vous pouvez très bien utiliser ce programme vous-même et sauter les barrières en éditant le fichier de configuration. Le tableau d'estimation est formé de 4 lignes et 17 colonnes :

6.7 Un lien pour la mémoire

Si vous voulez sauvegarder une configuration dans votre bookmark, utilisez ce lien. Vous avez deux possibilités :

  1. Vous suivez ce lien pour relancer le même calcul et vous insérer la page dans votre bookmark.
  2. Avec moizilla de netscape ou communicator ou tout autre navigateur évolué. Vous placez votre votre sourie sur le lien. Vous cliquez sur le bouton droit. Un menu contextuel apparaît, choisissez "Add Bookmark for link" ce qui veut dire "Ajouter ce lien à votre bloc-notes"

6.8 Le temps de calcul des séquences

C'est le temps de calcul pur des séquences sans aucun formatage ni rebouclage. Vous remarquerez que ce temps est toujours bien plus court que le temps total où sont inclus les temps de mise en forme et d'impression. Cette partie est vraiment traitée efficacement.

6.9 La vraie taille des séquences

Les estimations sur la taille des pages HTML sont évaluées en multipliant la taille d'une ligne par le nombre de lignes. La taille d'une ligne peut varier car certaines ne contiennent pas les marques <b> et </b> sur les numéros de séquences. Ce sont les séquences qui ne respectent plus les règles quand elles sont bouclées avec elles-mêmes ou avec leur opposée, les numéros n'apparaissent pas en gras. La valeur estimée est donc toujours supérieure ou égale à la valeur réelle.

6.10 Les séquences

C'est l'information pertinente du programme. Vous constatez que le nombre de séquences générées est le double du nombre de séquences annoncées. De plus, chaque séquence a une longueur double de celle choisie dans la configuration. C'est normal. En fait, chaque séquence est à travailler en boucle. D'abord avec elle-même puis avec son opposée, sachant que l'opposée d'une séquence est la séquence des coups opposés (cette phrase me rappelle des théorèmes de math). Les coups opposés sont définis dans la quatrième colonne du tableau de configuration, nommée "Opposite Members".

6.11 Le temps de calcul complet

C'est le temps de calcul total, filtrage, formattage, et impression compris.

7. Validité

Si vous trouvez un bug, n'hésitez pas à me le faire savoir. De même pour les fotes d'orthographe de ce document. Si vous trouvez que le code source est horrible et salement écrit alors nous serons au moins deux à penser la même chose. Je compte transformer le code vers le paradigme Orienté Objet mais j'ai peur de perdre en efficacité ce que je gagnerai en qualité et en maintenance (vu les progrès du matériel informatique, ma crainte est légère).

Le programme a été développé sous Linux, en Perl. Je ne l'ai pas testé ailleurs mais il devrait tourner partout où Perl tourne, c'est à dire partout, même du Coté Obscur.

Je l'ai testé avec les navigateurs Lynx, Grail, Mosaic, Moisi-là, tkweb, RedBaron, qweb, Amaya, Arena. Faîtes-moi savoir vos résultats. Voici les miens :

8. Le tout doux

Voilà comment je vois les possibles évolutions de ce programme. Si vous êtes intéressé, faîtes-le moi savoir, je pourrai privilégier le développement de la partie qui vous intéresse le plus.

Midi

C'est fait.

La génération de fichiers midi est un excellent moyen de travailler ces exercices avec une machine Midi, sans rien lire du tout, à différents tempi.

Belles pages

La génération de belles partitions aux formats LaTeX, DVI, PostScript (A4, Letter, ou autre). Lilypond devrait répondre à ce besoin.

Les Accents

Des variations supplémentaires. Les accents sont excellents pour assurer une maîtrise de tous les coups.

La polyrythmie

Là, encore plus de travail en perspective, pour moi et pour les batteurs. Une refonte du code est nécessaire. L'occasion de passer à une architecture orientée objet.

La java bleue

Une réécriture complète en applet Java serait sûrement salvateur pour les ressources du serveur. À voir. Il y a Python aussi (Grail est-il toujours aussi lent ?), et PerlTk (plus facile car dans PerlTk il y a Perl et Tk)