Support des unités d'enseignement du piano virtuel allégé pour l'initiation en programmation informatique des jeunes enfants

joris Abadiejoris Abadie

Introduction :

L'application lmfab a été conçu pour initier les plus jeunes enfants au concept de programmation informatique en utilisant l'attirance de pouvoir créer avec facilité des piano virtuels inédits.
Il s'entend que toute présentation est fils du formateur qui l'anime, et qu'ici se trouve qu'une perception personnelle de manière à donner une base de construction au formateur.

U.E.petit génie

Matières :

les boucles en langage C
Les variables
compilation avec make
test du piano virtuel créé.
Démarrage sur la clef USB MultiSystem.

Public visé :

enfant de 10 à 14 ans.
Durée de la formation3 heures.

Protocole de la formation

A reception des enfants, une clef USB MultiSystem est remise à chaque apprenant.
Le cours commence par expliquer les différents mode de démarrage d'un ordinateur et aide chaque intervenant à démarrer sur sa clef USB.
Le formateur indique le fonctionnement d'une boucle "for" et la variable "int" et comment modifier les deux fichiers qui créent les sons.
Le formateur accompagne le lancement du make qui crée le piano virtuel et laisse les enfants créer.
En fin de formation, chaque apprenant peut conserver son outil de travail (la clef MultiSystem).

U.E.souffle

Matières :

les boucles en langage C
Les variables
compilation avec make
description et manipulations des états d'équilibre

Public visé :

Amateurs currieux.
Durée de la formation1 jour (6 heures).

Protocole de la formation

En début de formation une clef USB MultiSystem est remise à chaque apprenant.
Le cours commence par expliquer les différents mode de démarrage d'un ordinateur et aide chaque intervenant à démarrer sur sa clef USB.
Le formateur indique le fonctionnement du fichier fronts.cpp, les principaux états d'équilibre, et le mixage des fronts.
Le formateur indique ce qu'est une structure et comment modifier la structure de lmfab (gestion du nombre de fronts et équilibres utiles).
Le formateur accompagne le lancement du make qui crée le piano virtuel et laisse les apprenants créer.
En fin de formation, chaque apprenant peut conserver son outil de travail (la clef MultiSystem).

U.E.D.du gui

Matières :

les boucles en langage C
Les variables
compilation avec make
description et manipulations des états d'équilibre

Public visé :

Chercheurs en demande d'éventuelles nouvelles possibilités.
Durée de la formation3 jours (18 heures).

Protocole de la formation

Apprentissage des trois techniques créatrices de la force
Apprendre à piloter un facteur au travers des portes en travaillant par analogie.
En exemple analogie entre l'augmentation d'une force par la répétition de même front et l'apport constant d'énergie à une casserole d'eau qui passe d'un équilibre de changement de température à un équilibre de changement d'état.
Analogie de l'effet serpillère et comment écrire les boucles pour obtenir l'effet serpillère. Une serpillère sans eau ne lave pas le sol, une serpillère avec trop d'eau ne lave pas le sol. Pour certains sons, c'est pareil il faut écrire les boucles pour que l'effet mémoire soit en équilibre avec la force et l'effet mémoire. Cette écriture se fait en utilisant des boucles internes créant des plateaux.
Analogie des effets mémoire. L'effet mémoire possède plusieurs formes. La première de ces formes est qu'il faut que l'effet ne soit pas couvert par un autre effet de force suppérieur en amont ou en aval. La deuxième forme de l'effet mémoire se comprend par analogie à la cristalisation de l'acier de Damas. Lorsque l'acier refroidit, que les structure cristalinne se forment, il faut maintenir la température un certain temps à 37°C, ce palier permet d'obtenir la bonne vitesse d'échange pour obtenir une structure très solide. pour les sons, lors des création, il faut de même placer des paliers dans les varitions. La technique d'écriture des boucles est identique à l'effet serpillère bien que les états d'équilibre manipulés soient différents, et donc ne donnent pas les mêmes effets, tout en utilisant les mêmes outils.
Analogie des temps de diffusion.



...

Concept

Entendement

Considérant que notre esprit est submergé en permanence d'informations et qu'il élimine la plupart d'entre elles sans aucune forme d'analyse, nous ne pouvons pas percevoir les sons subtils si un autre homme ne les fait pas remarquer à notre entendement. L'idée est : qu'un savoir intelligent ne peut être qu'un savoir qui s'est transmis et amélioré au travers de plusieurs hommes. Rien ne sort du désert mis à par des illusions. Un soupçon peut sortir d'un millieu riche en informations, mais une modélisation tendant vers le correcte ne peut-être qu'une idée qui à traversé l'entendement et les savoir de plusieurs hommes. En exemple directe de cet effet de l'entendement, est de créer un son de forme voix humaine. Ensuite de commencer la lecture de ce son à partir d'une amplitude haute. En ces conditions, nous allons entendre un son de piano dans le meilleur des cas, mais certainement pas un son de voix humaine, alors même que nous savons que c'est un bout de son de voix humaine. L'explication en est qu'avant notre entendement, nous filtrons les cas possibles, et par habitude nous savons que la voix humaine ne peut démarrer sur un marteau acoustique (amplitude élevée). Ainsi bien que sachant que c'est une voix humaine, nous entendons malgré nous un son de piano.

Physiologie

Mécanismes physiques

Nous pilotons une dizaine d'états d'équilibre avec deux facteurs, l'amplitude et la durée. Le premier représente la différence de pression de l'air par rapport à la pression ambiante, et le deuxième facteur représente la durée par rapport à une base de temps constante.

Définitions

Les différentes manières d'associer les états d'équilibre font apparaitre des effets particuliers.
Pour reconnaitre et indiquer les formes des boucles informatique qui les produisent, je les ai nommés comme suit :

Marteau acoustique

Le marteau acoustique se crée avec l'appartion d'une amplitude forte qui diminue. Cette forme va créer les sons de tambour, de piano, de guitar.
Exemple d'écriture de boucle pour créer un marteau acoustique :
    for(int laforcehbase = joc.laforceh; laforcehbase > 0; laforcehbase--)
     {
      for(int i=0; i<2; i++)
       {
        if(i%2)
         joc.amplitude[i] += joc.changeamplitude[i];
        else
         joc.amplitude[i] -= joc.changeamplitude[i];

        joc.dureefront[i] += joc.changedureefront[i];

if (joc.dureefront[i] > 240)
joc.dureefront[i] = 240;

          fprintf(fichierjo,  "%c%c",    (char)joc.amplitude[i], (char)joc.dureefront[i]);
          fprintf(fichierjoa, "%d %d\n", (unsigned char)joc.amplitude[i], (unsigned char)joc.dureefront[i]);
       }
     }
Et pour les valeurs dans les états d'équilibre manipulés par la boucle :
   { // a
    1, // duree
    30, // laforceh
    1, // laforceb
    {233, 30}, // amplitude
    {85, 84}, // dureefront
    {3, 3}, // varamplitude
    {8, 8},//varduree
    2 // combiendezonememoire
   },

La licorne

La licorne se crée en construisant la forme sans force en son début. Une de ses principales propriétés, c'est qu'elle permet de faire surfer dessus le son précédent, comme si les deux sons avait été mixés.
La licorne va créer les sons de flute, d'orgue ...
Exemple d'écriture de boucle pour créer la licorne :
    // monte laforceh
    for(int laforcehbase = joc.laforceh; laforcehbase > 0; laforcehbase--)
     {
      for(int i=0; i<2; i++)
       {
        if(i%2)
         joc.amplitude[i] -= joc.changeamplitude[i];
        else
         joc.amplitude[i] += joc.changeamplitude[i];

          fprintf(fichierjo,  "%c%c",    (char)joc.amplitude[i], (char)joc.dureefront[i]);
          fprintf(fichierjoa, "%d %d\n", (unsigned char)joc.amplitude[i], (unsigned char)joc.dureefront[i]);
       }
     }
    // descend laforceh
    for(int laforcehbase = joc.laforceh; laforcehbase > 0; laforcehbase--)
     {
      for(int i=0; i<2; i++)
       {
        if(i%2)
         joc.amplitude[i] += joc.changeamplitude[i];
        else
         joc.amplitude[i] -= joc.changeamplitude[i];

          fprintf(fichierjo,  "%c%c",    (char)joc.amplitude[i], (char)joc.dureefront[i]);
          fprintf(fichierjoa, "%d %d\n", (unsigned char)joc.amplitude[i], (unsigned char)joc.dureefront[i]);
       }
     }
Et pour les états d'équilibre
   { // a touche1
    1, // duree
    100, // laforceh
    2, // laforceb
    7, // laforcec
    {129, 128}, // amplitude
    {58, 60}, // dureefront
    {1, 1}, // varamplitude
    {0, 0}, // vardureefront
    2 // combiendezonememoire
   },

Le mariage

Le mariage, c'est quand les deux éléments de nature contraire (amplitude_durée) varient dans le même sens en harmonie.
Exemple d'écriture de boucle pour créer le mariage :
    // monte laforceh
    for(int laforcehbase = joc.laforceh; laforcehbase > 0; laforcehbase--)
     {
      for(int i=0; i<2; i++)
       {
        if(i%2)
         joc.amplitude[i] -= joc.changeamplitude[i];
        else
         joc.amplitude[i] += joc.changeamplitude[i];

         joc.dureefront[i] += joc.changedureefront[i];
	if (joc.dureefront[i]>240)
	joc.dureefront[i] = 240;

          fprintf(fichierjo,  "%c%c",    (char)joc.amplitude[i], (char)joc.dureefront[i]);
          fprintf(fichierjoa, "%d %d\n", (unsigned char)joc.amplitude[i], (unsigned char)joc.dureefront[i]);
       }
     }
    // descend laforceh
    for(int laforcehbase = joc.laforceh; laforcehbase > 0; laforcehbase--)
     {
      for(int i=0; i<2; i++)
       {
        if(i%2)
         joc.amplitude[i] += joc.changeamplitude[i];
        else
         joc.amplitude[i] -= joc.changeamplitude[i];

         joc.dureefront[i] -= joc.changedureefront[i];
          fprintf(fichierjo,  "%c%c",    (char)joc.amplitude[i], (char)joc.dureefront[i]);
          fprintf(fichierjoa, "%d %d\n", (unsigned char)joc.amplitude[i], (unsigned char)joc.dureefront[i]);
       }
     }
Et pour les états d'équilibre
   { // a touche1
    1, // duree
    100, // laforceh
    2, // laforceb
    7, // laforcec
    {129, 128}, // amplitude
    {58, 60}, // dureefront
    {1, 1}, // varamplitude
    {1, 1}, // vardureefront
    2 // combiendezonememoire
   },

La vinaigrette

La vinaigrette, c'est quand les deux éléments de nature contraire varient en sens inverse en harmonie.
Exemple d'écriture de boucle pour créer
    // monte laforceh
    for(int laforcehbase = joc.laforceh; laforcehbase > 0; laforcehbase--)
     {
      for(int i=0; i<2; i++)
       {
        if(i%2)
         joc.amplitude[i] -= joc.changeamplitude[i];
        else
         joc.amplitude[i] += joc.changeamplitude[i];

         joc.dureefront[i] -= joc.changedureefront[i];
	if (joc.dureefront[i]<6)
	joc.dureefront[i] = 6;

          fprintf(fichierjo,  "%c%c",    (char)joc.amplitude[i], (char)joc.dureefront[i]);
          fprintf(fichierjoa, "%d %d\n", (unsigned char)joc.amplitude[i], (unsigned char)joc.dureefront[i]);
       }
     }
    // descend laforceh
    for(int laforcehbase = joc.laforceh; laforcehbase > 0; laforcehbase--)
     {
      for(int i=0; i<2; i++)
       {
        if(i%2)
         joc.amplitude[i] += joc.changeamplitude[i];
        else
         joc.amplitude[i] -= joc.changeamplitude[i];

         joc.dureefront[i] += joc.changedureefront[i];
          fprintf(fichierjo,  "%c%c",    (char)joc.amplitude[i], (char)joc.dureefront[i]);
          fprintf(fichierjoa, "%d %d\n", (unsigned char)joc.amplitude[i], (unsigned char)joc.dureefront[i]);
       }
     }
Et pour les états d'équilibre
   { // a touche1
    1, // duree
    100, // laforceh
    2, // laforceb
    7, // laforcec
    {129, 128}, // amplitude
    {58, 60}, // dureefront
    {1, 1}, // varamplitude
    {1, 1}, // vardureefront
    2 // combiendezonememoire
   },

Les forces

Nous pouvons donner de la force à une forme en utilisant plusieurs techniques différentes.

La première technique pourrait être utilisée dans lmfab, mais après la modification du tableau de conversion.
Nous pourrions même envisager des forces différentes entre les fronts montant et descendant ou encore partie de nos constructions acoustiques (ce qui est le cas dans la nature).
Cette force est induite par la valeur "jo", un nombre sans dimension qui donne la forme de la variation. Comme les ordinateur sont de très mauvaix calculateurs à répétition, mais de très bon imitateur ou encore manipulateurs d'adressage, et qu'encore plusieurs causes peuvent avoir le même effet sonore, j'ai donné une valeur fixe à "jo" et placer le résultat du calcul des variations en fonction de "jo" dans un tableau d'adressage.
Cette force est modifiable, avec quelques connaissances et du temps.

La deuxième technique consiste à répéter une forme de front ou encore un groupe de fronts.
En exemple le son de la lettre "b" que j'avais démontré en 2011. Nous pouvons créer un son "b" avec une seule amplitude forte à bonne distance d'une voyelle (nous donnons beaucoup d'énergie). Nous pouvons créer le même son, par la répétition de petites amplitudes, nous consommons beaucoup moins d'énergie. Ou encore nous pouvons créer le même son 'b' à l'aide de frémissements nombreux ne consomant presque pas d'énergie, c'est comme si l'énergie sortait de la matière environnante.

Les possibles

Les mixes et les variations de fronts ne sont pas tous mélodieux.
Une légère déformation donne comme une ame au son, c'est souvent le cas dans la nature, mais cet effet possède des limites très proches.

Les boucles informatique

Boucle for
      for(int i=0; i<4; i++)
       {fait ça;}
boucle while
	 int i ;
      while( i<4)
       	{
	fait ça;
	i++ ;
	}
boucle do while
	 int i ;
     	do
       	{
	fait ça;
	i++ ;
	} while(i<4)
 ;
boucle switch
int i ;
switch i
{
case 0 :
	fait ça;
	i++ ;
break ;
case 1 :
	fait ça;
	i++ ;
break ;
…
case 3 :
	fait ça;
	i = 0;
break ;
}
boucle goto
label1 :
	fait ça du 0;
	fait ça du 1;
	fait ça du 2;
	fait ça du 3;
	x++;
	if (x>y)
	{goto label2 ;}
goto label1 ;
label2 :


Les U.E.

U.E.petit génie
U.E.votre première page web
U.E.votre première page web dynamique
U.E.coding, Scratch.


Les cours

Les phénomènes et la manipulation des phénomènes pour obtenir les différentes formes d'états d'équilibre

Les inerties

Introduction par l'exemple sur les portes :
Le ludion, phénomène inverse simple et inertie
La casserole d'eau, phénomène inverse simple de changement de température puis changement d'état à la porte
Les paliers de cristallisation, phénomène simple de l'acier de Damas
Introduction par l'exemple sur la manipulation des équilibres :
Cas du couvercle de la cocote minute passé sous l'eau froide pour varier la pression sans varier la température.
Introduction par l'exemple des notions d'ordre
Cas de la vinaigrette, ou le sel doit être mis avec le vinaigre avant de mettre l'huile pour créer l'acide qui pique la langue. Introduction par l'exemple des inertie et des zones mémoires :

Cas de la lame d'acier ou de l'aiguille chauffé à une extrémité.

Le suport de cours est en construction en attente d'une entente partagée avec plusieurs tux amis.
Mode d’emplois de l'application lmfab.

Lmfab est composé de plusieurs fichiers en C++ à compiler de manière à créer l'exécutable créant le piano virtuel. L'apprenant est invité à modifier deux fichiers afin de devenir le luthier de son imagination. 
Le premier de ces fichiers est le plus important pour l'initiation informatique, car il contient la ou les boucles informatiques à modifier pour créer la note jouée par le piano virtuel. Il se nomme Adnforme.cpp
Le deuxième fichier qui peut être modifié se nomme fronts.cpp, il contient les valeurs qui vont intervenir dans la boucle en fonction de la touche du piano virtuels.

Une grande liberté est donné à l'organisateur de l’atelier, en premier dans le choix du support par la variété des versions lmfab donné dans le répertoire téléchargé, ensuite sur le choix de la technique pour créer les boucles.

Installation :
L'application se télécharge à l'adresse internet : 
https://www.letime.net/vocale/lmfab1.tar.gz 
elle est destinée à des systèmes d'exploitation linux, contenant pour les dépendances et compiler , qt, sox, gcc, build-essential, fakeroot, checkinstall 

Après modification des deux fichiers, il faut donner les droits et selon ./make en terminal suffit, sinon il faut faire en terminal ./Makefile pour créer le piano virtuel.

Licence :
Lmfab est une sous application de la BAUL ( Bibliothèque Acoustique Universelle sous Linux) qui utilise le format adn un sous format de abadie.jo . Abadie.jo format audio ( .jo ) n'est autorisé que pour une utilisation sous linux
La BAUL contient 256 puissance 16 sons différents avec chaque son qui s’identifie avec 16 octets, ses deux premiers octets (soit 256 * 256 formes) servent à indiquer quel boucle se trouve dans Adnforme, les autres octets servent à manipuler les états d'équilibres



Comme pour l'acoustique l'atelier pourra aussi démontrer qu'en programmation, que plusieurs causes peuvent avoir le même effet, ou encore que la même cause peut avoir des effets différents selon l'environnement.
Téléchargement de la création de sons expliqués

Gros plan sur les deux fichiers modifiables de lmfab100

Gros plan sur les deux fichiers modifiables de lmfab101

Gros plan sur les deux fichiers modifiables de lmfab102

Gros plan sur les deux fichiers modifiables de lmfab104

Gros plan sur les deux fichiers modifiables de lmfab105

Gros plan sur les deux fichiers modifiables de lmfab106

Gros plan sur les deux fichiers modifiables de lmfab107

Lmfab est en hommage à Debian-facile qui a corrigé le code ; ce qui a permis d'avoir la structure qui permet l'enseignement