lmfab107 support des U.E. des piano virtuels

joris Abadiejoris Abadie

Adnforme.cpp :

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.
Le fichier Adnforme sert à indiquer comment nous manipulons les plateaux d'équilibre
#include "AdnForme.h"
// Génère les fichiers c.jo et c.joa
void genereFichierJo(char c)
{

jo joc = mesjo[c-'a'];

  // Nom du fichier jo
  char nomfichierjo[32];
  snprintf(nomfichierjo, 32, "%c.jo", c);
  // Nom du fichier joa
  char nomfichierjoa[32];
  snprintf(nomfichierjoa, 32, "%c.joa", c);

  // Fichier jo
  FILE* fichierjo;
  if (!(fichierjo = fopen(nomfichierjo, "wb")))
   {
    exit(-1);
   }
  // Fichier joa
  FILE* fichierjoa;
  if (!(fichierjoa = fopen(nomfichierjoa, "wb")))
   {
    exit(-1);
   }
/******************************fin*partie*fixe************/

// ici commence la zone de travail pour l'apprenant
//Nous allons utiliser les boucles du for en langage c pour produire les différents sons.
//Imaginer un gaulois qui marche, il va rencontrer plusieurs paysages prédéterminés.
//pour les sons, il en est de même, nous allons rencontrer plusieurs plateaux en équilibre 
//selon le chemin emprunté et les valeurs placées dans les plateaux d'équilibre.
//lmfab107 est un chemin monotone de deux fronts qui diminue l'amplitude, un marteau acoustique
//A la différence de lmfab101 nous augmentons la force des fronts par la répétition

//Nous indiquons ici combien de fois nous allons diminuer l'amplitude
//en entrant la valeur de laforceh dans une boucle


    for(int laforcehbase = joc.laforceh; laforcehbase > 0; laforcehbase--)
     {

         joc.amplitude[0] -= joc.changeamplitude[0];
         joc.amplitude[1] -= joc.changeamplitude[1];
         joc.amplitude[2] -= joc.changeamplitude[2];
         joc.amplitude[3] += joc.changeamplitude[3];
         joc.amplitude[4] += joc.changeamplitude[4];
         joc.amplitude[5] += joc.changeamplitude[5];


          fprintf(fichierjo,  "%c%c",    (char)joc.amplitude[0], (char)joc.dureefront[0]);
          fprintf(fichierjoa, "%d %d\n", (unsigned char)joc.amplitude[0], (unsigned char)joc.dureefront[0]);
          fprintf(fichierjo,  "%c%c",    (char)joc.amplitude[1], (char)joc.dureefront[1]);
          fprintf(fichierjoa, "%d %d\n", (unsigned char)joc.amplitude[1], (unsigned char)joc.dureefront[1]);
          fprintf(fichierjo,  "%c%c",    (char)joc.amplitude[2], (char)joc.dureefront[2]);
          fprintf(fichierjoa, "%d %d\n", (unsigned char)joc.amplitude[2], (unsigned char)joc.dureefront[2]);
          fprintf(fichierjo,  "%c%c",    (char)joc.amplitude[3], (char)joc.dureefront[3]);
          fprintf(fichierjoa, "%d %d\n", (unsigned char)joc.amplitude[3], (unsigned char)joc.dureefront[3]);
          fprintf(fichierjo,  "%c%c",    (char)joc.amplitude[4], (char)joc.dureefront[4]);
          fprintf(fichierjoa, "%d %d\n", (unsigned char)joc.amplitude[4], (unsigned char)joc.dureefront[4]);
          fprintf(fichierjo,  "%c%c",    (char)joc.amplitude[5], (char)joc.dureefront[5]);
          fprintf(fichierjoa, "%d %d\n", (unsigned char)joc.amplitude[5], (unsigned char)joc.dureefront[5]);

      for(int i = joc.laforcer; i > 0; i--)
       {

          fprintf(fichierjo,  "%c%c",    (char)joc.amplitude[0], (char)joc.dureefront[0]);
          fprintf(fichierjoa, "%d %d\n", (unsigned char)joc.amplitude[0], (unsigned char)joc.dureefront[0]);
          fprintf(fichierjo,  "%c%c",    (char)joc.amplitude[1], (char)joc.dureefront[1]);
          fprintf(fichierjoa, "%d %d\n", (unsigned char)joc.amplitude[1], (unsigned char)joc.dureefront[1]);
          fprintf(fichierjo,  "%c%c",    (char)joc.amplitude[2], (char)joc.dureefront[2]);
          fprintf(fichierjoa, "%d %d\n", (unsigned char)joc.amplitude[2], (unsigned char)joc.dureefront[2]);
          fprintf(fichierjo,  "%c%c",    (char)joc.amplitude[3], (char)joc.dureefront[3]);
          fprintf(fichierjoa, "%d %d\n", (unsigned char)joc.amplitude[3], (unsigned char)joc.dureefront[3]);
          fprintf(fichierjo,  "%c%c",    (char)joc.amplitude[4], (char)joc.dureefront[4]);
          fprintf(fichierjoa, "%d %d\n", (unsigned char)joc.amplitude[4], (unsigned char)joc.dureefront[4]);
          fprintf(fichierjo,  "%c%c",    (char)joc.amplitude[5], (char)joc.dureefront[5]);
          fprintf(fichierjoa, "%d %d\n", (unsigned char)joc.amplitude[5], (unsigned char)joc.dureefront[5]);
       }
     }

// fin de la zone de travail de l'apprenant
// Ce cas utilise une seule boucle contenant 5 valeurs différentes pour chaque note placées dans fronts.cpp
/************************************************************************/
  fclose(fichierjo);
  fclose(fichierjoa);
}

fronts.cpp :

Le fichier fronts sert à placer les valeurs dans les plateaux d'équilibre manipulés
Chaque groupe de 8 données correspond à une note différente, en exemple pour la lettre a la première donnée est 7.
#include "fronts.h"
#include "jo.h"

jo clavier32[26] = {
   { // a touche1
    55, // laforceh
    2, // laforce par repetition
    {240, 238, 240, 20, 22, 20}, // amplitude
    {225, 225, 225, 225, 225, 225}, // dureefront
    {2, 2, 2, 2, 2, 2}, // varamplitude
    {0, 0, 0, 0, 0, 0} // vardureefront 
   },

   { // b touche25
    55, // laforceh
    6, // laforce par repetition
    {240, 238, 240, 20, 22, 20}, // amplitude
    {56, 56, 56, 56, 56, 56}, // dureefront
    {2, 2, 2, 2, 2, 2}, // varamplitude
    {0, 0, 0, 0, 0, 0} // vardureefront 
   },



   { // c touche23
    55, // laforceh
    4, // laforce par repetition
    {240, 238, 240, 20, 22, 20}, // amplitude
    {63, 63, 63, 63, 63, 63}, // dureefront
    {2, 2, 2, 2, 2, 2}, // varamplitude
    {0, 0, 0, 0, 0, 0} // vardureefront 
   },

   { // d touche13
    55, // laforceh
    4, // laforce par repetition
    {240, 238, 240, 20, 22, 20}, // amplitude
    {112, 112, 112, 112, 112, 112}, // dureefront
    {2, 2, 2, 2, 2, 2}, // varamplitude
    {0, 0, 0, 0, 0, 0} // vardureefront 
   },


   { // e touche3
    55, // laforceh
    2, // laforce par repetition
    {240, 238, 240, 20, 22, 20}, // amplitude
    {200, 200, 200, 200, 200, 200}, // dureefront
    {2, 2, 2, 2, 2, 2}, // varamplitude
    {0, 0, 0, 0, 0, 0} // vardureefront 
   },

   { // f touche14
    55, // laforceh
    4, // laforce par repetition
    {240, 238, 240, 20, 22, 20}, // amplitude
    {106, 106, 106, 106, 106, 106}, // dureefront
    {2, 2, 2, 2, 2, 2}, // varamplitude
    {0, 0, 0, 0, 0, 0} // vardureefront 
   },


   { // g touche15
    55, // laforceh
    4, // laforce par repetition
    {240, 238, 240, 20, 22, 20}, // amplitude
    {100, 100, 100, 100, 100, 100}, // dureefront
    {2, 2, 2, 2, 2, 2}, // varamplitude
    {0, 0, 0, 0, 0, 0} // vardureefront 
   },


   { // h touche16
    55, // laforceh
    4, // laforce par repetition
    {240, 238, 240, 20, 22, 20}, // amplitude
    {94, 94, 94, 94, 94, 94}, // dureefront
    {2, 2, 2, 2, 2, 2}, // varamplitude
    {0, 0, 0, 0, 0, 0} // vardureefront 
   },


   { // i touche8
    55, // laforceh
    2, // laforce par repetition
    {240, 238, 240, 20, 22, 20}, // amplitude
    {150, 150, 150, 150, 150, 150}, // dureefront
    {2, 2, 2, 2, 2, 2}, // varamplitude
    {0, 0, 0, 0, 0, 0} // vardureefront 
   },


   { // j touche17
    55, // laforceh
    4, // laforce par repetition
    {240, 238, 240, 20, 22, 20}, // amplitude
    {89, 89, 89, 89, 89, 89}, // dureefront
    {2, 2, 2, 2, 2, 2}, // varamplitude
    {0, 0, 0, 0, 0, 0} // vardureefront 
   },


   { // k touche18
    55, // laforceh
    4, // laforce par repetition
    {240, 238, 240, 20, 22, 20}, // amplitude
    {84, 84, 84, 84, 84, 84}, // dureefront
    {2, 2, 2, 2, 2, 2}, // varamplitude
    {0, 0, 0, 0, 0, 0} // vardureefront 
   },


   { // l touche19
    55, // laforceh
    4, // laforce par repetition
    {240, 238, 240, 20, 22, 20}, // amplitude
    {75, 75, 75, 75, 75, 75}, // dureefront
    {2, 2, 2, 2, 2, 2}, // varamplitude
    {0, 0, 0, 0, 0, 0} // vardureefront 
   },


   { // m touche20
    55, // laforceh
    4, // laforce par repetition
    {240, 238, 240, 20, 22, 20}, // amplitude
    {79, 79, 79, 79, 79, 79}, // dureefront
    {2, 2, 2, 2, 2, 2}, // varamplitude
    {0, 0, 0, 0, 0, 0} // vardureefront 
   },

   { // n touche26
    55, // laforceh
    6, // laforce par repetition
    {240, 238, 240, 20, 22, 20}, // amplitude
    {53, 53, 53, 53, 53, 53}, // dureefront
    {2, 2, 2, 2, 2, 2}, // varamplitude
    {0, 0, 0, 0, 0, 0} // vardureefront 
   },



   { // o touche9
    55, // laforceh
    2, // laforce par repetition
    {240, 238, 240, 20, 22, 20}, // amplitude
    {142, 142, 142, 142, 142, 142}, // dureefront
    {2, 2, 2, 2, 2, 2}, // varamplitude
    {0, 0, 0, 0, 0, 0} // vardureefront 
   },



   { // p touche10
    55, // laforceh
    2, // laforce par repetition
    {240, 238, 240, 20, 22, 20}, // amplitude
    {134, 134, 134, 134, 134, 134}, // dureefront
    {2, 2, 2, 2, 2, 2}, // varamplitude
    {0, 0, 0, 0, 0, 0} // vardureefront 
   },


   { // q touche11
    55, // laforceh
    2, // laforce par repetition
    {240, 238, 240, 20, 22, 20}, // amplitude
    {126, 126, 126, 126, 126, 126}, // dureefront
    {2, 2, 2, 2, 2, 2}, // varamplitude
    {0, 0, 0, 0, 0, 0} // vardureefront 
   },


   { // r touche4
    55, // laforceh
    2, // laforce par repetition
    {240, 238, 240, 20, 22, 20}, // amplitude
    {189, 189, 189, 189, 189, 189}, // dureefront
    {2, 2, 2, 2, 2, 2}, // varamplitude
    {0, 0, 0, 0, 0, 0} // vardureefront 
   },

   { // s touche12
    55, // laforceh
    2, // laforce par repetition
    {240, 238, 240, 20, 22, 20}, // amplitude
    {119, 119, 119, 119, 119, 119}, // dureefront
    {2, 2, 2, 2, 2, 2}, // varamplitude
    {0, 0, 0, 0, 0, 0} // vardureefront 
   },


   { // t touche5
    55, // laforceh
    2, // laforce par repetition
    {240, 238, 240, 20, 22, 20}, // amplitude
    {178, 178, 178, 178, 178, 178}, // dureefront
    {2, 2, 2, 2, 2, 2}, // varamplitude
    {0, 0, 0, 0, 0, 0} // vardureefront 
   },


   { // u touche7    
     55, // laforceh
    2, // laforce par repetition
    {240, 238, 240, 20, 22, 20}, // amplitude
    {159, 159, 159, 159, 159, 159}, // dureefront
    {2, 2, 2, 2, 2, 2}, // varamplitude
    {0, 0, 0, 0, 0, 0} // vardureefront 
   },


   { // v touche24
    55, // laforceh
    4, // laforce par repetition
    {240, 238, 240, 20, 22, 20}, // amplitude
    {60, 59, 60, 59, 60, 59}, // dureefront
    {2, 2, 2, 2, 2, 2}, // varamplitude
    {0, 0, 0, 0, 0, 0} // vardureefront 
   },


   { // w touche21
    55, // laforceh
    4, // laforce par repetition
    {240, 238, 240, 20, 22, 20}, // amplitude
    {71, 71, 71, 71, 71, 71}, // dureefront
    {2, 2, 2, 2, 2, 2}, // varamplitude
    {0, 0, 0, 0, 0, 0} // vardureefront 
   },

   { // x touche22
    55, // laforceh
    4, // laforce par repetition
    {240, 238, 240, 20, 22, 20}, // amplitude
    {67, 67, 67, 67, 67, 67}, // dureefront
    {2, 2, 2, 2, 2, 2}, // varamplitude
    {0, 0, 0, 0, 0, 0} // vardureefront 
   },


   { // y touche6    
    55, // laforceh
    2, // laforce par repetition
    {240, 238, 240, 20, 22, 20}, // amplitude
    {168, 168, 168, 168, 168, 168}, // dureefront
    {2, 2, 2, 2, 2, 2}, // varamplitude
    {0, 0, 0, 0, 0, 0} // vardureefront 
   },


   { // z touche2   
    55, // laforceh
    2, // laforce par repetition
    {240, 238, 240, 20, 22, 20}, // amplitude
    {212, 212, 212, 212, 212, 212}, // dureefront
    {2, 2, 2, 2, 2, 2}, // varamplitude
    {0, 0, 0, 0, 0, 0} // vardureefront 
   }
};

jo *mesjo = clavier32;
Pour écouter les notes de lmfab107, c'est ici


Lmfab est en hommage à Debian-facile qui a corrigé le code ; ce qui a permis d'avoir la structure qui permet l'enseignement
This article is licensed under the GNU Free Documentation License