Noël PC 2008

31 décembre 2008

(Aimé Vareille est un fan du projet OLPC depuis Avril 2007, où il assista à une première conférence sur le projet à Grenoble. Cette année, il fait partie des premiers acheteurs du XO en France via le programme « Un chez toi, un chez moi ». Dans ce billet, il nous raconte son expérience et ses premiéres impressions)

Le XO en plein soleil

J’ai passé commande du XO, fruit de l’initiative OLPC, le 3 Décembre 2008 sur le site d’Amazon par le biais de l’opération G1G1 (Give One, Get One). Il est arrivé sans problème de Belgique peu avant noël.
Par contre il n’y a aucune information ou garantie sur le bénéficiaire du XO offert : Imaginez des rois mages qui marcheraient sans savoir rien de la personne à qui va leur don ?

Vu le clavier, il est souhaitable qu’elle soit anglophone … le changement de langue pour les activités se fait facilement par l’intermédiaire du panneau de configuration. Par contre, la prise en compte d’un clavier USB externe en français (azerty …) par exemple n’est pas aussi automatique actuellement (version 767, Sugar 0.82.1).

Le XO est une machine fascinante fruit de l’initiative remarquable OLPC (One Laptop Per Child : un ordinateur par enfant). L’écran à cristaux liquides (LCD), comme le montre la photo prise le matin en extérieur peut fonctionner en rétroréflectif pur : il est alors en noir et blanc offrant un contraste d’autant plus grand que l’éclairage est fort ; c’est particulièrement spectaculaire en plein soleil, là où les autres écrans LCD rétroéclairés deviennent inutilisables. Evidemment l’écran LCD du XO fonctionne aussi en mode rétroéclairé avec toutes les couleurs, ce qui reste étonnant c’est que le passage du mode rétroréflectif noir et blanc au mode rétroéclairé couleur est progressif.

L’autre point très fort est que le XO consomme quelques watts : c’est à priori le portable le plus économe en énergie actuellement.

Le WiFi mesh 802.11s fonctionne avec les WiFi g actuels en mode WPA sans problème.

la webcam intégrée est également un atout bien exploité par les premières classes OLPC pour initier les élèves à l’observation.

L’opération G1G1 se termine le 31 décembre 2008 : http://blog.laptop.org/2008/12/24/g1g1-international-update/

En France le G1G1 est accessible via un accord passé avec Amazon UK : http://olpc-france.org/wiki/index.php?title=Commander_son_XO

Il y a beaucoup à découvrir et apprendre avec ce XO, bien qu’il soit totalement ouvert, il n’est pas si facile de l’utiliser en multiboot sur des clés USB.

Mes premiers projets sur la machine concerneront :

Lorsque j’aurais progressé, j’ai l’intention d’en parler plus en détail sur mon blog : http://blog.ofset.org/aime.

Des XOs pour un camp de vacances Russe

25 décembre 2008

(Boris Yarmakhow est professeur à l’université d’état de Nizhny Novgorod et volontaire sur le projet OLPC. Dans cet article d’OLPC News datant d’août 2008, il nous raconte son expérience d’utilisation des XOs pendant un camp d’été)

Des XOs en vacance

En août 2008, un petit projet de déploiement de XO a démarré en Russie. Un groupe de professeurs de l’université d’état pédagogique de Nizhny Novgorod a appris à 32 élèves de Nizhny Novgorod à utiliser les XOs pendant un camp d’été. Le projet s’est déroulé à la campagne sur un terrain appartenant à l’université dans le village de Staraya Pustyn dans la région de Nizhny Novgorod.

Les XOs ont été utilisés en mode 1:1, chaque élève participant au camp d’été est donc devenu le possesseur d’un XO pendant 10 jours. Les activités du camp d’été pour lesquels le XO était utilisé étaient notamment: prendre des photos des plantes et des animaux rencontrés lors des excusions, écrire des histoires sur leurs impressions et expériences, collecter et traiter les données géographiques du camp voisin, mesurer le niveau sonore et programmer en Scratch. Toutes les histoires et les images étaient stockées dans un mediawiki qui s’exécutait sur le réseau WiFi local. Les 32 étudiants étaient enregistrés sur le mediawiki et utilisaient l’environnement hypertexte pour collaborer avec les autres.

Nous avons appris aux étudiants comment utiliser les activités Naviguer, Ecrire, Dessiner, Mesurer et Scratch. La plupart d’entre eux ont également découvert et utilisé l’activité Chat à travers le réseau mesh pendant leur temps libre. Plusieurs étudiants ont également utilisés Distance et Etoys d’eux-mêmes.

Au campement

Le XO a démontré qu’il est un outil très efficace pour l’apprentissage pendant un camp d’été. Sa conception et son écran lui permet d’être utilisé à l’extérieur. Nos étudiants mettaient leur XO dans un petit sac à dos s’ils avaient à se balader quelque part et ils utilisaient simplement sa poignée pour l’emporter autour du camp. Nous avons rencontré des problèmes avec la souris sur un des XOs (nous avons du utiliser une souris USB sur cette machine). Parfois, les XOs perdaient la connexion au réseau local, ce qui était résolu en rebootant simplement la machine. Les enfants ont adorés les XOs. Il n’y eut pas un seul cas de perte ou de XO endommagé.

Sortie nature

Le camp d’été est devenu non seulement le premier déploiement de XOs en Russie (il y a 54 XOs en Russie à ma connaissance et nous en avons 53). Ce fut aussi premier projet éducatif à l’échelle 1:1. Il a été suivi par environ 20 enseignants, étudiants et volontaires de Nizhny Novgorod, St Petersbourg et de Moscou et est devenu une étape importante dans la construction d’une communauté 1:1 d’enseignant/pédagogue en Russie.

Le projet a été rendu possible grâce à la générosité et le support de la fondation Hollandaise « Making Miles for Millenium » qui a fourni à l’équipe projet les 50 XOs et le reste de l’infrastructure.

Merci à Ton van Overbeek d’avoir mis en place la galerie de photo Picasa qui contient d’autres photos du camp d’été XO. Voir l’article original sur OLPC News pour d’autres liens sur des comptes-rendus et photos de ce camp d’été.

Notes des déploiements OLPC au Cambodge

23 décembre 2008

(Mike Cariaso est un volontaire travaillant sur le déploiement du projet OLPC au Cambdoge. Il nous livre son retour d’expérience depuis l’école dans lequel Nicholas Negroponte testa pour la première fois l’utilisation d’ordinateurs pour l’éducation. Ce post est la traduction d’un récent article de son blog)

Connexion satellite

Reaksmy, Preah Vihea, Cambodge est le siège de l’école PRIDE (Providing Rural Innovative Digital Education). Elaine et Nicholas Negroponte fondèrent cette école en 1999, et Elaine habite encore au Cambodge pratiquement la moitié de l’année. Avant qu’il y ait des XOs, l’école élémentaire était équipée d’une classe de portables. Ces machines étaient à l’origine des Panasonic Toughbooks dont beaucoup sont encore utilisés quotidiennement. A présent, il y a environ 250 XOs ici et ils peuvent être considéré comme une véritable réponse à la rudesse de l’environnement. Bien que le XO soit encore jeune, il est important de mesurer les résultats et de voir de quelle manière ils peuvent être améliorés.

Pour information, 2 machines seulement ont été sérieusement endommagées. Un écran a été cassé suite à la chute de la machine, un autre a été endommagé quand il a été nettoyé à l’eau. Les autres élèves ont apparemment appris la leçon et il est peu probable que cette erreur se produise à nouveau. L’interface Sugar rend réellement facile la suppression définitive des activités du XO, ce qui peut aussi nous donner du travail supplémentaire.

Un élève Cambodgien et son XO

Comme d’autres l’ont indiqué, le problème le plus courant est le « curseur sauteur ». De manière intéressante, il y a eut beaucoup d’expérimentation et nous avons constaté une diminution du problème en mettant du scotch sur le pavé tactile. Peut-être que d’autres sites trouveront cette astuce utile en attendant la prochaine mise à jour de Sugar. Quoi qu’il en soit le problème devra être résolu au niveau logiciel en même temps que d’autres problèmes concernant le réseau. En particulier j’espérais pouvoir fournir un support à distance via un tunnel SSH sur le XO. Mais même avec un cordon USB/Ethernet, je n’ai pas réussi à faire fonctionner simultanément le Mesh et Internet. J’espère que quelqu’un qui a une expérience sur le fonctionnement réseau du XO pourra m’aider sur ce point.

Les élèves de l’école primaire ont un cours avec l’ordinateur 1 heure par jour, 5 jours par semaine. Le premier jour où je suis arrivé, j’ai vu une présentation multimédia faite en Scratch qui avait été réalisée par les étudiants de 6éme (de 13 à 15 ans). Les thèmes étaient par exemple « comment cuisiner du riz à la maison », « comment faire pousser des légumes dans le jardin », « comment jouer au baseball ». C’était assez similaire aux présentations PowerPoint auquel je suis habitué pendant des conférences scientifiques ou en entreprise mais c’était de bien meilleure qualité en de nombreux points. Le projet avait été commencé plusieurs jours avant par groupe d’élèves et les étudiants utilisaient le XO pour prendre les photos à la maison. Finalement, ils enregistraient le texte ce qui donné l’opportunité à ceux qui n’étaient pas à l’aise en anglais de réenregistrer et d’éditer jusqu’à ce qu’ils soient satisfaits du résultat.

Sortir pour dessiner avec le XO

Plus tard dans la journée, plusieurs élèves plus jeunes ont emmenés leur XO dehors pour utiliser l’activité de dessin et pour dessiner les maisons et la nature autour d’eux. Au cours de mes expériences précédentes, j’ai appris à apprécier à quel point les programmes de dessin sont importants pour permettre aux élèves d’apprendre le contrôle de la souris, du copier/coller/déplacer, de la sauvegarde et de la sortie des activités. La capacité à utiliser le XO à l’extérieur, à la lumière du soleil, développe la créativité des enfants d’une manière qui ne serait pas imaginable lorsqu’ils sont entre quatre murs.

Pour des raisons historiques, l’éducation dans les pays d’Asie du Sud-Est est largement basée sur la mémorisation. C’est assez loin du modèle du projet OLPC qui encourage la création individuelle et la collaboration. Etablir de nouvelles habitudes d’enseignement n’est ni simple, ni rapide. Les enseignants occidentaux que j’ai rencontré m’ont dit qu’ils ont souvent besoin de montrer un exemple mais qu’ils se dépêchent de l’effacer pour éviter que les élèves le recopie textuellement. Avoir une jeune fille qui lève la main au milieu de la classe pour dire « Professeur, j’ai une question » est un moment trop rare qui vous fait comprendre le vrai progrès qui a été réalisé ici.

Des photos supplémentaires sont disponibles sur: http://www.flickr.com/photos/cariaso/archives/date-taken/2008/12/18/

Gérard Klein parraine OLPC France

14 décembre 2008

La promotion du 1 chez toi, 1 chez moi m’a laissé peu de temps ces derniers jours pour parler de cet événement qui n’est donc apparu que comme une simple actualité parmi les autres. J’aimerais revenir un peu sur ce grand moment de la vie d’OLPC France. Et d’abord, pour ceux qui ne l’auraient pas encore vu, voici la vidéo:

http://www.dailymotion.com/videox7ndfh

Il était important pour nous de disposer d’un parrain qui apporterait de la crédibilité au projet OLPC et à OLPC France. C’est d’ailleurs ce que OLPC Boston a également réalisé avec Tom Brady. Tom Brady est probablement un inconnu pour vous mais c’est un célèbre Quaterback – meneur de jeu au Football US – dans l’équipe des New England Patriots.

Nous avons donc cherché à contacter des personnalités qui voudraient bien nous accorder quelques minutes de leur temps faire la promotion de ce beau projet et apporter l’espoir de changer le monde pour des enfants. Grace à un contact de Laurence Buchmann, une récente recrue de OLPC France, Gérard Klein a bien voulu répondre à cet appel.

Gérard Klein est connu pour la série « L’Instit » dans lequel il a joué pendant plus de 10 ans Victor Novak un instituteur effectuant des remplacements partout en France et parfois même à l’étranger dans certains épisodes. Gérard Klein a également animé le magazine « Va Savoir » sur France 5 dans lequel il parcourait les routes avec un dizaine d’enfants dans une autobus jaune.

Aujourd’hui Gérard anime le site web http://www.gerardklein.org sur lequel il essaye, à travers des reportages, de faire le lien entre les associations solidaires et les personnes qui souhaitent y apporter leur aide. Il suit également les associations sur le terrain. Lisez la charte de son site et vous comprendrez l’esprit solidaire qui l’anime dans cette action. Cela ne peut pas être un hasard que son chemin est croisé OLPC France !

Le tournage de la vidéo à été réalisé le 4 décembre 2008 à La Maison de la Radio où Gérard remettait le soir même les récompenses du Prix de la solidarité 2008.

L’équipe de tournage était composée par Laurence Buchmann à la réalisation, au script et au décor (!), Philippe Lallet pour les images, et Alain Barnault à la prise de son. Tous trois sont des professionnels et étaient équipés comme tel. Je dois avouer que je garde un souvenir ému de ce tournage. Je n’étais évidemment pas d’une grande utilité (à part pour ammener les 2 XOs) mais je regardais avec des yeux d’enfants ces quatre personnes donner corps, prise après prise, à ce film. Notre association a à peine 6 mois, c’est toujours impressionnant de voir, comme dans ces moments là, à quel point elle peut prendre corps. Bref, c’était un grand moment de générosité et je profite de cette occasion pour remercier une nouvelle fois Gérard et toute l’équipe.

Le film a été tourné en HDCam et a été monté en studio par Laurence. Il intègre quelques plans de la vidéo de Zimi, réalisée par la fondation pour promouvoir le projet Give One Get One aux états-unis.

Notes sur le déploiement OLPC au Népal

12 décembre 2008

(Cet article est la traduction de l’article « OLE Nepal Notes from an OLPC Deployment » paru sur OLPC News, il m’a paru intéressant de vous le proposer car il apporte une vision terrain d’un déploiement réel du projet.)

Les déploiements OLPC au Népal ont démarré il y a maintenant plus de 7 mois. On m’a posé beaucoup de questions sur les difficultés que nous avons rencontrées et les solutions que nous avons mis en œuvre. J’espère que les informations suivantes vous seront utiles. Tout d’abord, un petit aperçu de nos déploiements:

Progrés de OLE au Népal

Les déploiements ont commencé dans les écoles publiques de Vishwamitra Ganest et de Bashuki le 23 Avril 2008,

  • 135 ordinateurs XO-1 ont été déployés pour les élèves des classes 2 et 6;
  • aucun ordinateur n’a été volé, perdu ou a été manquant. Un ordinateur a été sérieusement endommagé par l’enfant auquel il appartenait après qu’il l’eut nettoyé méticuleusement avec du savon et de l’eau. A part celui-ci, aucun ordinateur n’a été sérieusement endommagé suite à son utilisation;
  • 8 cartes mères, 5 micros et 4 claviers se sont avérés défectueux sur des machines;
  • les enfants ont utilisés les ordinateurs dans la classe 1 à 2 périodes par semaine;
  • le problème le plus fréquent que nous avons rencontré est le problème du « curseur souris sauteur »;
  • les enseignants, les parents et les enfants sont content du projets, selon les résultats de l’enquête que nous avons menée.
    1. les enfants et leurs parents attachaient beaucoup de valeur au XO et le protégeaient en conséquence;
    2. la criminalité dans la campagne Népalaise est relativement faible par rapport aux pays développés. Dans les communes rurales, tout le monde connaît le « business » des autres.
    • Manière plus simple de jouer de la musique et des vidéos.
    • Un meilleur lecteur de e-books.
    • Plus d’activités pour apprendre l’Anglais.
    • Tout le cahier de texte Népali au format électronique.
    • Une bibliothèque numérique exhaustive avec de nombreux contenus en langage Népali.
    • Un programme d’aide à l’écriture pour apprendre l’Anglais et le Népali.
    • Des activités d’apprentissage interactif conformes au programme éducatif Népali.
    • Un jeu de courses de voiture (les enfants).
  • Au début: formation des enseignants

    Nous avons mené quatre jours de formation des enseignants en dehors de l’école et cinq jours en classe avec les élèves et les enseignants. Une majorité de nos enseignants n’avaient jamais utilisé un ordinateur avant mais ils ont appris très rapidement. Leur enthousiasme était impressionnant. La formation en dehors de l’école se terminait normalement à 17H30 mais les enseignants restaient dans la salle tous les soirs jusqu’à 23H, explorant le XO et posant sans cesse des questions.

    Bien que les enseignants ont appris très rapidement comment utiliser le XO, je n’avais pas prévu combien certaines actions seraient difficiles pour eux. En particulier, il leur fallut beaucoup de temps pour apprendre le « glisser-déposer » avec la souris. La plupart des meilleures activités du XO nécessite une bonne dextérité avec la souris comme TurtleArt, Etoys et Scratch. Pour cette raison, nous n’avons pas eu le temps de couvrir ses activités pendant la formation. Je conseille de démarrer la formation des enseignants par des activités qui ne nécessitent pas une grande dextérité avec la souris.

    Protéger les enfants et les ordinateurs

    Nous étions très inquiets sur la sécurité des ordinateurs et la sécurité des enfants lorsqu’ils transportaient leurs précieuses machines entre l’école et la maison tous les jours. Vishwamitra et Bashuki sont toutes les deux des communes pauvres. Pourtant nos craintes étaient sans fondement. Pas un XO n’a été perdu, volé ou porté manquant. Je crois que cela est dû à deux choses:
    Maintenance et support des ordinateurs

    Une des grosses surprises a été le peu de temps que l’équipe a passé à faire le support et la maintenance du XO. Le XO-1 est une machine fantastique et je suis convaincu que n’importe qui avec un peu d’aptitude mécanique peut résoudre 90% des problèmes matériels qui peuvent arriver, simplement en remplaçant un mauvais composant par une pièce de rechange.

    Ecriture Limbu sur le XO

    Le « mode test » intégré au Firmware du XO est un outil indispensable. Lancez simplement le « mode test » du Firmware et il vous donnera un compte-rendu complet indiquant quel composant matériel est en erreur. Hélas, nous ne pouvions accéder à ce test sans la clé d’activation développeur du XO. C’est pour cette raison que nous avons demandé la clé de tous les XOs et que nous avons désactivé la sécurité sur chacun d’entre eux.

    Nous avons formé les enseignants des deux écoles à résoudre les problèmes matériels et logiciels. Ils peuvent gérer la plupart des problèmes matériels qui surviennent. De part ma faible expérience, je peux dire qu’il est faisable d’entraîner les enseignants à résoudre les problèmes matériels mais qu’il est plus difficile de leur apprendre comment résoudre les problèmes logiciels dans le noyau Linux ou dans Sugar. Si un problème logiciel sérieux survient, nos enseignants se contentent de reflasher le XO avec l’image spécifique pour le Népal, qui inclut les activités standards.

    Sous pression: respecter le programme

    Dans le monde d’OLPC, nous aimons parler de sympathiques concepts tels que le constructivisme, le co-apprentissage, la collaboration, etc… Cependant, les enseignants à Bashuki et Vishwamitra ont des préoccupations plus urgentes. Le système Népali ne permet pas la promotion sociale. Les enfants ont à passer chaque année un examen pour passer au niveau supérieur. Les enseignants Népali sont intéressés par le constructivisme, le co-apprentissage, et la collaboration tant qu’ils n’empêchent pas leurs élèves de progresser à travers le système éducatif. Nos enseignants sont très contents de la suite d’activité E-Paath que OLE Nepal a développé en respectant le programme. Le réel intérêt que les enseignants trouve au projet OLPC dans leur classe et qu’ils peuvent occuper leurs élèves avec un problème sur le XO et pendant ce temps travailler avec les élèves qui ont besoin d’aide.

    Le maillon manquant: le serveur d’école

    Quand nous avons déployé le serveur d’école (XS) en Avril, XS-163 était une configuration très immature. Depuis le serveur XS a bien changé sous l’impulsion de son architecte, Martin Langhoff. Mais hier comme aujourd’hui, le serveur XS ne propose pas un filtrage de contenu pré-configuré. Nous avons passé un temps conséquent à configurer l’outil Dansguardian pour qu’il ne bloque pas le bon contenu et qu’il bloque le mauvais contenu.

    Les XOs dans la campagne Népali

    Par exemple, « Dikshit » est un prénom commun au Népal. Dansguardian bloquera les accès aux nouveaux articles contenant ce nom parce qu’il considère les quatre dernières lettres comme insulte (NdT: « shit » veut dire « merde » en anglais). Le serveur XS est encore largement en développement et les équipes qui le déploient ont besoin d’une solide expertise pour mettre en place un serveur XS opérationnel.

    Principales demandes des enseignants et des enfants

    Nous intégrerons ce que nous avons appris de ces deux déploiements d’écoles quand nous déploierons 15 à 20 écoles dans 5 à 6 districts en Avril 2009. Avec un peu de chance, je trouverai plus de temps pour parler de mes expériences dans les prochaines semaines mais ne comptez pas trop là-dessus. Je travaille à OLPC depuis plus de 2 an et demi et je dois dire que réellement ça en vaut la peine.

    Postscriptum: Pradosh Kharel a travaillé sur un plan exhaustif du déploiement pour le Népal. Vous pouvez le consulter ici.

    Bryan Berry est Directeur Technique de OLE Népal et co-éditeur de OLPC News. OLE Népal prend en charge les déploiements OLPC en partenariat avec le Département Népalais de l’éducation.

[Concours] Le XO à l’école maternelle

8 décembre 2008

(Philippe Larcher est un des gagnants du concours OLPC France. Dans ce post, Philippe nous raconte ici ses premières impressions après 3 semaines de classe avec la machine)

La classe dans laquelle je travaille actuellement est composée des 3 sections de l’école maternelle:

  • Petite Section (PS),
  • Moyenne Section (MS),
  • Grande section (GS).

Je n’ai pas mis en route le projet déposé pour le concours car je veux me familiariser avec le portable avant.

Les enfants de MS (4 ans) et de GS (5 ans) ont très vite adopté le XO : ses dimensions leur conviennent parfaitement. Ils sont bien mieux installés sur une table de travail de la classe que sur du mobilier spécifique à l’informatique, trop haut pour les enfants de cet âge !

Armel devant le XO
Armel devant le XO

Le peu d’épaisseur du clavier facilite le contrôle du touchpad : en quelques secondes pour certains qui n’avaient jamais touché un ordinateur avant.

Les plus jeunes, de Petite Section (3 ans), sont demandeurs mais encore très maladroits dans leurs gestes.

Les logiciels ou activités les plus utilisés pour le moment sont Memorize, les enregistrements photos, vidéos et audios.

Elyne devant le XO qu'il appelle
Elyne devant le XO qu’il appelle « le petit bureau »

Le XO fait merveille dans ce domaine : la facilité d’utilisation est étonnante. Prendre des photos à divers moments de la classe pour parler, commenter et construire un jeu de memory se fait simplement. Cet aspect-là m’a beaucoup surpris ; surtout par rapport à ce que je fais habituellement avec APN, gros PC avec traitement images etc…
Le transfert des fichiers sur carte SD ou clé USB est tout aussi facile : cela me permet de préparer des petits programmes avec Scratch.
Il y a des possibilités énormes de ce côté-là.

Le clavier est peut-être le point qui me pose problème : les caractères accentués sont difficiles à produire et non transférables. L’absence de verrouillage du clavier en position majuscule complique l’utilisation en ce début d’année scolaire où la correspondance majuscule-minuscule est loin d’être familière pour les enfants de grande Section. Mais des solutions doivent certainement exister.

Le XO bien que destiné à des enfants plus âgés me semble être parfaitement adapté pour un travail avec des élèves d’Ecole Maternelle.

[Concours] Théorie et pratique Musicale

5 décembre 2008

(Théorie et pratique Musicale est un des projets retenus par le jury d’OLPC France pour son concours d’idée. Dans ce post, François Sénéquier, son auteur nous présente son projet et son portage pour le XO)

Présentation du logiciel

Il s’agit d’un outil d’apprentissage de la théorie musicale (gammes, accords, relation entre gammes/accords) et de la pratique d’un instrument de musique (guitare, piano, harmonica…).

Capture Théorie Musicale

Pour commencer l’apprentissage d’un instrument, il est nécessaire de connaître les gammes (blues, majeure, mineures, …) et leurs modes (modes de la gamme majeure pour le Jazz…), mais aussi les accords (7M, sus, dim,…) et leurs renversements.

Il faut aussi comprendre la relation entre les gammes et les accords : que
lle gamme sonne bien avec quels accords et vice versa ?

L’outil permet de :

  • effectuer des comparaisons entre les gammes et les accords comme obtenir l’harmonisation d’une gamme particulière (tous les accords existants construits sur les notes de la gamme en question);
  • de retrouver le nom d’un accord ou d’une gamme par rapport à un ensemble de notes;
  • de savoir comment jouer les notes d’une gamme ou d’un accord (en arpèges) sur un instrument de musique (corde / case pour une guitare, alvéoles + souffler / aspirer + tirette pour un harmonica, …) grâce â une représentation graphique simple des notes.

Le projet est disponible sur le site Sourceforge :

Portage de l’application

Le portage de l’application de musique dévelopée sur EEE PC s’est déroulé en deux étapes :

  • exécution directe à partir de la console (terminal) sans utiliser les packages particuliers des activités de Sugar : Le XO étant un vrai système Linux rien n’empêche d’exécuter directement l’application afin de vérifier la portabilité du code mais aussi que les librairies nécessaires sont déjà pré-installées sur le XO.Sur EEE PC, les librairies utilisées sont :
    • python-cairo (pour les sorties graphiques);
    • python-gtk2 (pour la gestion de l’interface GTK);
    • librsvg2-2 (pour pouvoir utiliser les images vectorielles SVG dans Cairo);
    • python-psyco (pour accélérer l’éxécution des programmes Python).

    La seule librairie manquante dans la configuration d’origine du XO est Psyco.
    Cette librairie permet de faire tourner les programmes Python plus rapidement mais au prix d’une plus grande consommation mémoire. Psyco peut être installé sur le XO à l’aide du gestionnaire de package YUM et cela fonctionne très bien.

    Pour activer Psyco dans un programme Python, le code suivant peut être utilisé :


    try:
    import psyco
    psyco.full()
    except ImportError:
    print "'Psyco' introuvable !"

    Pour éviter tout problème de mémoire, l’utilisation du garbage collector peut être forcée et le maximum de mémoire peut être récupérée grâce aux commandes suivantes :


    try:
    import gc
    gc.enable()
    gc.collect()
    except:
    print "Garbage collector error !"

    Compte-tenu des ressources du XO (processeur, interface en Python, Psyco non installé), certaines parties du code ont du être optimisées. Mais ici, ce sont bien des optimisations d’algorithmes ou de pure logique et non des optimisations de bas niveau comme il est possible de le faire avec le langage C.

    Le programme, à la suite de ces optimisations, est stable (plus de problème de mémoire, rapidité acceptable) sur le XO.

  • Création de l’activité :
    • Créer le répertoire de l’activité
      : theorie.activity;
    • Créer dans le répertoire theorie.activity le sous-répertoire activity;
    • Créer dans le répertoire activity, l’icone pour le projet au format SVG : theorie-activity.svg
      Remarque : l’icone de l’activité (clé de sol) provient de la librairie OpenClipart et a été modifié pour intégrer le mécanisme de changement de couleur de Sugar. Déclaration de deux variables contenant les couleurs de tracé (stroke) et de remplissage (fill) :

      <?xml version="1.0" encoding="UTF-8"?>
      <!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd' [
      <!ENTITY stroke_color "#666666">
      <!ENTITY fill_color "#FFFFFF">
      ]>
      Puis, dans les objets du SVG (path, rec, …), ces couleurs peuvent être
      directement associées en référençant ces variables :


      <path fill="&fill_color;" stroke="&stroke_color;" stroke-width="4" ...

      Sugar peut ensuite modifier la couleur de remplissage dynamiquement lors du survol de l’icone.

      Remarque : pour générer ses propres icones, le logiciel libre Inkscape est très adapté.

    • Créer le fichier activity.info dans le répertoire theorie.activity/activity qui contient :

      [Activity]
      name = Theorie
      service_name = Theorie
      bundle_id = Theorie
      class = theorie.Theorie
      icon = activity-theorie
      activity_version = 1
      host_version = 1
      show_launcher = yes
      Avec :

      • class le nom de la classe Python héritant de la classe Activity de Sugar
      • icon le nom de l’icone de l’activité sans l’extension SVG >
    • Créer ou copier le fichier setup.py en mettant le nom de l’activité en paramètre de la méthode start :
      #!/usr/bin/env python
      from sugar.activity import bundlebuilder
      if __name__ == "__main__":
      bundlebuilder.start("TheorieActivity")

      Ce fichier Python facilite certaines opérations comme :

      • l’installation de l’activité en environnement de développement (création dans le répertoire des activités d’un lien sur le répertoire de l’activité développée) :
        python setup.py dev
        Ainsi, il n’est pas utile, à chaque modification du code Python, de recréer le fichier XO pour le déployer.
      • la création ou la mise à jour du fichier MANIFEST (qui contient les noms de tous les fichiers du projet) pour la création du fichier XO :
        python setup.py fix_manifest
        Voici le contenu du fichier MANIFEST situé à la racine du répertoire de l’activité :

        setup.py
        theorie.py
        commun.py
        modele.py
        modele_data.py
        observable.py
        canvas_instrument.py
        canvas_clarinette.py
        canvas_flute.py
        canvas_guitare.py
        canvas_harmonica.py
        canvas_piano.py
        composant_notes.py
        composant_degres.py
        composant_comparaison.py
        composant_selection.py
        composant_affichage.py
        composant_clarinette.py
        composant_flute.py
        composant_guitare.py
        composant_harmonica.py
        composant_piano.py
        clarinette.svg
        gpl.txt

        activity/activity.info
        activity/theorie.activity.svg

      • la création du fichier XO pour la distribution de l’application :
        python setup.py dist_xo
    • Transformation de l’application PyGtk en activité Sugar :
      Le programme original utilise une seule fenêtre GTK. Le point d’entrée du programme PyGtk est une classe héritant de gtk.Window :

      class ComposantTheorie(gtk.Window):

      def __init__(self):
      gtk.Window.__init__(self)
      self.set_title(« Théorie musicale – Instruments de musique »)
      # creation des composants
      SET_AFF(MOD_NOT)
      SET_CMP(MOD_OCT)
      compGAM = ComposantGammes()
      compACC = ComposantAccords()
      compNOT = ComposantNotes()
      compSEL = ComposantSelection(«  », [compGAM, compACC, compNOT], gtk.POS_LEFT)
      notes = compGAM.getNotes()
      compCMP = ComposantComparaison(notes)
      compHAR = ComposantHarmonica(notes)
      compFLU = ComposantFlute(notes)
      compGUI = ComposantGuitare(notes)
      compCLA = ComposantClarinette(notes)
      # recuperation des dimensions de l’ecran
      lar = screen_width()
      hau = screen_height()
      # composition de l’ecran suivant sa hauteur (en pixels)
      if hau <= 480:
      compAFF = ComposantAffichage(«  », notes, [compGUI , compHAR, compFLU, compCLA, compCMP], gtk.POS_TOP)
      else:
      compINS = ComposantAffichage(TXT_ONG_INS, notes, [compGUI, compHAR, compFLU, compCLA], gtk.POS_BOTTOM)
      compAFF = ComposantAffichage(«  », notes, [compINS, compCMP], gtk.POS_TOP)
      paned = definirVPANED(compSEL.getContainer(), compAFF.getContainer())
      self.add(paned)
      # affichage en plein ecran ou non
      if lar <= 1024 or hau <= 600:
      self.fullscreen()
      else:
      self.set_size_request(1024,600)
      # gestion des evenements compSEL.addObserver(compAFF)
      self.connect(« destroy », gtk.main_quit)
      self.show_all()

      Le programme est ensuite lancé par le code suivant :

      if __name__ == "__main__":
      try:
      import psyco
      psyco.full()
      except ImportError:
      print "'Psyco' introuvable !"
      try:
      import gc
      gc.enable()
      gc.collect()
      except:
      print "Garbage collector error !"
      obj = ComposantTheorie()
      gtk.main()

      Le programme doit être modifié :

      • la classe principale
        doit hériter de activity.Activity (et non de gtk.Window);
      • il faut ajouter la barre d’outil standard des activités;
      • il faut associer le contenu de la fenêtre du programme PyGtk à l’activité par l’intermédiaire de la méthode set_canvas de la classe Activity;
      • compte-tenu du fait que Sugar se charge de démarrer l’activité :
        • le code de l’activité ne doit pas contenir de gtk.Main() (lancement du programme et gestion des événements);
        • le code relatif à Psyco et au garbage collector est déplacé dans le constructeur de l’activité.

      Ce qui donne :

      class Theorie(activity.Activity):
      ...
      def __init__(self, handle):
      # initialisations (initialisation de l'activite + creation de la toolbox)
      activity.Activity.__init__(self, handle)
      toolbox = activity.ActivityToolbox(self)
      self.set_toolbox(toolbox)
      toolbox.show()
      # recuperation du maximum de memoire
      try:
      import gc
      gc.enable()
      gc.collect()
      except:
      pass
      # activation de Psyco
      try:
      import psyco
      psyco.full()
      except:
      pass
      # creation des composants specifiques a l'application
      self.set_title("Théorie musicale - Pratique des instruments de musique")
      SET_AFF(MOD_NOT)
      SET_CMP(MOD_OCT)
      # creation des onglets gammes, accords, notes
      compGAM = ComposantGammes()
      compACC = ComposantAccords()
      compNOT = ComposantNotes()
      compSEL = ComposantSelection("", [compGAM, compACC, compNOT], gtk.POS_TOP)
      # recuperation des notes initiales
      notes = compGAM.getNotes()
      # creation des onglets instruments et theorie
      compHAR = ComposantHarmonica(notes)
      compFLU = ComposantFlute(notes)
      compGUI = ComposantGuitare(notes)
      compCLA = ComposantClarinette(notes)
      compPIA = ComposantPiano(notes)
      compINS = Composant Affichage(TXT_ONG_INS, notes, [compGUI, compHAR, compFLU, compCLA, compPIA], gtk.POS_BOTTOM)
      compCMP = ComposantComparaison(notes)
      compAFF = ComposantAffichage("", notes, [compINS, compCMP], gtk.POS_TOP)
      panedUI = definirVPANED(compSEL.getContainer(), compAFF.getContainer())
      # liaison 'evenement' entre les deux zones
      compSEL.addObserver(compAFF)
      # ajout de l'ensemble des composants dans la zone ecran de l'activite
      self.set_canvas(panedUI)
      # gestion des evenements 'clavier' self.connect('key-press-event', self.__keyPress)

    • Gestion des touches de l’écran pour une utilisation en mode replié :
      Curieusement, les touches des deux PADs (disposées à gauche et à droite de l’écran) ne permettent pas dans leur configuration par défaut de piloter le logiciel entièrement : naviguer d’un contrôle à l’autre, activer une case à cocher… Le comportement des touches a donc ét
      é modifié pour que le logiciel puisse être piloté sans le clavier :

      • naviguer entre les différents contrôles;
      • pouvoir sélectionner ou désélectioner une case à cocher ou un bouton à état.

      Le principe est exactement le même que pour réagir aux autres touches du clavier :
      il suffit d’associer à l’événement key-press-event du contrôle considéré une fonction ayant comme paramètre le widget et l’événement.

      Pour exemple, voici le code pour que les cases à cocher puissent être cochées ou décochées en appuyant sur les touches de gauche et de droite du PAD disposé à droite de l’écran.
      self.hKEY = self.checkREL.connect("key-press-event", self.__keyPress)
      Avec self.checkREL, la case à
      cocher et self.__keyPress la méthode à appeler.


      def __keyPress(self, widget, event):
      key = gtk.gdk.keyval_name(event.keyval)
      if key in ['KP_Home', 'KP_End']:
      active = widget.get_active()
      widget.set_active(not active)
      return True
      return False

      PyGtk fournit les méthodes get_active() et set_active() pour changer l’état de la case à cocher.

      Autre exemple de code pour faire en sorte que les boutons du haut et du bas du PAD de gauche permettent de passer d’un contrôle à l’autre :


      class Theorie(activity.Activity):
      ...
      def __keyPress(self, widget, event):
      key = gtk.gdk.keyval_name(event.keyval)
      if key == 'KP_Page_Up':
      widget.get_toplevel().child_focus(gtk.DIR_TAB_BACKWARD)
      return True
      elif key == 'KP_Page_Down':
      widget.get_toplevel().child_focus(gtk.DIR_TAB_FORWARD)
      return True
      return False

    • Pour lancer le programme, deux possibi
      lités :

      • en mode développement :
        python setup.py dev pour installer l’application dans le menu sous la forme d’un lien (les fichiers *.py ne sont pas copiés dans le répertoire principal des activités)
      • lorsque le développement est terminé :
        • python setup.py dist_xo pour créer le package XO (fichier compressé ZIP);
        • sugar-install-bundle pour installer le package XO dans le menu (copie physique des fichiers nécessaires dans le répertoire des activités).

Documents ou liens utiles