joris Abadie
#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. //lmfab104 est un chemin de huit fronts qui augmente l'amplitude, fait un plateau modulo 5, puis diminue l'amplitude. // Etape 1 //Nous indiquons ici combien de fois nous allons augmenter l'amplitude for(int laforcehbase = joc.laforceh; laforcehbase > 0; laforcehbase--) { for(int i=0; i<8; i++) { //ici nous appliquons le changement de la valeur d'amplitude du front tous les 8 fronts if(i%2) joc.amplitude[i] -= joc.changeamplitude[i]; else joc.amplitude[i] += joc.changeamplitude[i]; //les 2 lignes suivantes écrivent les fichiers audio, le premier en binaire, l'autre en ascii 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]); } } // Etape 2 // la nous créons un plateau de 8 front sans variation d'amplitude int basculeDe1 = joc.nbtremolo * 8; int basculeDe2 = basculeDe1 - 1; int basculeDe3 = basculeDe1 * 2 - 1; int basculeDe5 = 0; for(int laforcehbase = joc.laforceb; laforcehbase > 0; laforcehbase--) { for(int i=0; i<8; i++) { //nous créons ici un trémolo de nbtremolo, comme c-est sur 8 fronts une bascule à nbtremolo*8 //avec une vinaigrette l'amplitude et la durée varient à l'inverse if(basculeDe5basculeDe2) { joc.dureefront[i] -= joc.changedureefront[i]; joc.amplitude[i] += joc.changeamplitudep[i]; } basculeDe5++; if(basculeDe5>basculeDe3) basculeDe5 = 0; //les 2 lignes suivantes écrivent les fichiers audio, le premier en binaire, l'autre en ascii 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]); } } // Etape 3 // la nous reprenons la premiere forme en changeant le sens pour revenir aux valeurs de départ for(int laforcehbase = joc.laforceh; laforcehbase > 0; laforcehbase--) { for(int i=0; i<8; i++) { //ici nous appliquons le changement de la valeur d'amplitude du front tous les 8 fronts if(i%2) joc.amplitude[i] += joc.changeamplitude[i]; else joc.amplitude[i] -= joc.changeamplitude[i]; joc.dureefront[i] += joc.changedureefront[i]; // création d'une décurité afin que la durée ne soit jamais supérieur à 240 if (joc.dureefront[i]>240) joc.dureefront[i] = 240; //les 2 lignes suivantes écrivent les fichiers audio, le premier en binaire, l'autre en ascii 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]); } } // fin de la zone de travail de l'apprenant /************************************************************************/ fclose(fichierjo); fclose(fichierjoa); }
#include "fronts.h" #include "jo.h" jo clavier32[26] = { { // a touche1 7, // laforceh 21, // laforceb 5, // nombre de tremolo {129, 128, 129, 128, 129, 128, 129, 128}, // amplitude {56, 57, 58, 59, 60, 61, 62, 63}, // dureefront {16, 16 , 8, 8 , 4, 4, 2, 2}, // varamplitude {2, 2 , 4, 4, 8, 8, 16, 16}, // varamplitudeplateau {1, 1, 1, 1, 1, 1, 1, 1} // vardureefront }, { // b touche25 7, // laforceh 109, // laforceb 3, // nombre de tremolo {129, 128, 129, 128, 129, 128, 129, 128}, // amplitude {8, 9, 10, 11, 12, 13, 14, 15}, // dureefront {16, 16 , 8, 8 , 4, 4, 2, 2}, // varamplitude {2, 2 , 4, 4, 8, 8, 16, 16}, // varamplitudeplateau {1, 1, 1, 1, 1, 1, 1, 1} // vardureefront }, { // c touche23 7, // laforceh 81, // laforceb 5, // nombre de tremolo {129, 128, 129, 128, 129, 128, 129, 128}, // amplitude {12, 13, 14, 15, 16, 17, 18, 19}, // dureefront {16, 16 , 8, 8 , 4, 4, 2, 2}, // varamplitude {2, 2 , 4, 4, 8, 8, 16, 16}, // varamplitudeplateau {1, 1, 1, 1, 1, 1, 1, 1} // vardureefront }, { // d touche13 7, // laforceh 35, // laforceb 5, // nombre de tremolo {129, 128, 129, 128, 129, 128, 129, 128}, // amplitude {32, 33, 34, 35, 36, 37, 38, 39}, // dureefront {16, 16 , 8, 8 , 4, 4, 2, 2}, // varamplitude {2, 2 , 4, 4, 8, 8, 16, 16}, // varamplitudeplateau {1, 1, 1, 1, 1, 1, 1, 1} // vardureefront }, { // e touche3 7, // laforceh 23, // laforceb 5, // nombre de tremolo {129, 128, 129, 128, 129, 128, 129, 128}, // amplitude {52, 53, 54, 55, 56, 57, 58, 59}, // dureefront {16, 16 , 8, 8 , 4, 4, 2, 2}, // varamplitude {2, 2 , 4, 4, 8, 8, 16, 16}, // varamplitudeplateau {1, 1, 1, 1, 1, 1, 1, 1} // vardureefront }, { // f touche14 7, // laforceh 37, // laforceb 5, // nombre de tremolo {129, 128, 129, 128, 129, 128, 129, 128}, // amplitude {30, 31, 32, 33, 34, 35, 36, 37}, // dureefront {16, 16 , 8, 8 , 4, 4, 2, 2}, // varamplitude {2, 2 , 4, 4, 8, 8, 16, 16}, // varamplitudeplateau {1, 1, 1, 1, 1, 1, 1, 1} // vardureefront }, { // g touche15 7, // laforceh 40, // laforceb 5, // nombre de tremolo {129, 128, 129, 128, 129, 128, 129, 128}, // amplitude {28, 29, 30, 31, 32, 33, 34, 35}, // dureefront {16, 16 , 8, 8 , 4, 4, 2, 2}, // varamplitude {2, 2 , 4, 4, 8, 8, 16, 16}, // varamplitudeplateau {1, 1, 1, 1, 1, 1, 1, 1} // vardureefront }, { // h touche16 7, // laforceh 42, // laforceb 5, // nombre de tremolo {129, 128, 129, 128, 129, 128, 129, 128}, // amplitude {26, 27, 28, 29, 30, 31, 32, 33}, // dureefront {16, 16 , 8, 8 , 4, 4, 2, 2}, // varamplitude {2, 2 , 4, 4, 8, 8, 16, 16}, // varamplitudeplateau {1, 1, 1, 1, 1, 1, 1, 1} // vardureefront }, { // i touche8 7, // laforceh 27, // laforceb 5, // nombre de tremolo {129, 128, 129, 128, 129, 128, 129, 128}, // amplitude {42, 43, 44, 45, 46, 47, 48, 49}, // dureefront {16, 16 , 8, 8 , 4, 4, 2, 2}, // varamplitude {2, 2 , 4, 4, 8, 8, 16, 16}, // varamplitudeplateau {1, 1, 1, 1, 1, 1, 1, 1} // vardureefront }, { // j touche17 7, // laforceh 45, // laforceb 5, // nombre de tremolo {129, 128, 129, 128, 129, 128, 129, 128}, // amplitude {24, 25, 26, 27, 28, 29, 30, 31}, // dureefront {16, 16 , 8, 8 , 4, 4, 2, 2}, // varamplitude {2, 2 , 4, 4, 8, 8, 16, 16}, // varamplitudeplateau {1, 1, 1, 1, 1, 1, 1, 1} // vardureefront }, { // k touche18 7, // laforceh 49, // laforceb 5, // nombre de tremolo {129, 128, 129, 128, 129, 128, 129, 128}, // amplitude {22, 23, 24, 25, 26, 27, 28, 29}, // dureefront {16, 16 , 8, 8 , 4, 4, 2, 2}, // varamplitude {2, 2 , 4, 4, 8, 8, 16, 16}, // varamplitudeplateau {1, 1, 1, 1, 1, 1, 1, 1} // vardureefront }, { // l touche19 7, // laforceh 53, // laforceb 5, // nombre de tremolo {129, 128, 129, 128, 129, 128, 129, 128}, // amplitude {20, 21, 22, 23, 24, 25, 26, 27}, // dureefront {16, 16 , 8, 8 , 4, 4, 2, 2}, // varamplitude {2, 2 , 4, 4, 8, 8, 16, 16}, // varamplitudeplateau {1, 1, 1, 1, 1, 1, 1, 1} // vardureefront }, { // m touche20 7, // laforceh 58, // laforceb 5, // nombre de tremolo {129, 128, 129, 128, 129, 128, 129, 128}, // amplitude {18, 19, 20, 21, 22, 23, 24, 25}, // dureefront {16, 16 , 8, 8 , 4, 4, 2, 2}, // varamplitude {2, 2 , 4, 4, 8, 8, 16, 16}, // varamplitudeplateau {1, 1, 1, 1, 1, 1, 1, 1} // vardureefront }, { // n touche26 7, // laforceh 132, // laforceb 5, // nombre de tremolo {129, 128, 129, 128, 129, 128, 129, 128}, // amplitude {6, 7, 8, 9, 10, 11, 12, 13}, // dureefront {16, 16 , 8, 8 , 4, 4, 2, 2}, // varamplitude {2, 2 , 4, 4, 8, 8, 16, 16}, // varamplitudeplateau {1, 1, 1, 1, 1, 1, 1, 1} // vardureefront }, { // o touche9 7, // laforceh 29, // laforceb 5, // nombre de tremolo {129, 128, 129, 128, 129, 128, 129, 128}, // amplitude {40, 41, 42, 43, 44, 45, 46, 47}, // dureefront {16, 16 , 8, 8 , 4, 4, 2, 2}, // varamplitude {2, 2 , 4, 4, 8, 8, 16, 16}, // varamplitudeplateau {1, 1, 1, 1, 1, 1, 1, 1} // vardureefront }, { // p touche10 7, // laforceh 30, // laforceb 5, // nombre de tremolo {129, 128, 129, 128, 129, 128, 129, 128}, // amplitude {38, 39, 40, 41, 42, 43, 44, 45}, // dureefront {16, 16 , 8, 8 , 4, 4, 2, 2}, // varamplitude {2, 2 , 4, 4, 8, 8, 16, 16}, // varamplitudeplateau {1, 1, 1, 1, 1, 1, 1, 1} // vardureefront }, { // q touche11 7, // laforceh 32, // laforceb 5, // nombre de tremolo {129, 128, 129, 128, 129, 128, 129, 128}, // amplitude {36, 37, 38, 39, 40, 41, 42, 43}, // dureefront {16, 16 , 8, 8 , 4, 4, 2, 2}, // varamplitude {2, 2 , 4, 4, 8, 8, 16, 16}, // varamplitudeplateau {1, 1, 1, 1, 1, 1, 1, 1} // vardureefront }, { // r touche4 7, // laforceh 23, // laforceb 5, // nombre de tremolo {129, 128, 129, 128, 129, 128, 129, 128}, // amplitude {50, 51, 52, 53, 54, 55, 56, 57}, // dureefront {16, 16 , 8, 8 , 4, 4, 2, 2}, // varamplitude {2, 2 , 4, 4, 8, 8, 16, 16}, // varamplitudeplateau {1, 1, 1, 1, 1, 1, 1, 1} // vardureefront }, { // s touche12 7, // laforceh 33, // laforceb 5, // nombre de tremolo {129, 128, 129, 128, 129, 128, 129, 128}, // amplitude {34, 35, 36, 37, 38, 39, 40, 41}, // dureefront {16, 16 , 8, 8 , 4, 4, 2, 2}, // varamplitude {2, 2 , 4, 4, 8, 8, 16, 16}, // varamplitudeplateau {1, 1, 1, 1, 1, 1, 1, 1} // vardureefront }, { // t touche5 7, // laforceh 24, // laforceb 5, // nombre de tremolo {129, 128, 129, 128, 129, 128, 129, 128}, // amplitude {48, 49, 50, 51, 52, 53, 54, 55}, // dureefront {16, 16 , 8, 8 , 4, 4, 2, 2}, // varamplitude {2, 2 , 4, 4, 8, 8, 16, 16}, // varamplitudeplateau {1, 1, 1, 1, 1, 1, 1, 1} // vardureefront }, { // u touche7 7, // laforceh 26, // laforceb 5, // nombre de tremolo {129, 128, 129, 128, 129, 128, 129, 128}, // amplitude {44, 45, 46, 47, 48, 49, 50, 51}, // dureefront {16, 16 , 8, 8 , 4, 4, 2, 2}, // varamplitude {2, 2 , 4, 4, 8, 8, 16, 16}, // varamplitudeplateau {1, 1, 1, 1, 1, 1, 1, 1} // vardureefront }, { // v touche24 7, // laforceh 93, // laforceb 5, // nombre de tremolo {129, 128, 129, 128, 129, 128, 129, 128}, // amplitude {10, 11, 12, 13, 14, 15, 16, 17}, // dureefront {16, 16 , 8, 8 , 4, 4, 2, 2}, // varamplitude {2, 2 , 4, 4, 8, 8, 16, 16}, // varamplitudeplateau {1, 1, 1, 1, 1, 1, 1, 1} // vardureefront }, { // w touche21 7, // laforceh 64, // laforceb 5, // nombre de tremolo {129, 128, 129, 128, 129, 128, 129, 128}, // amplitude {16, 17, 18, 19, 20, 21, 22, 23}, // dureefront {16, 16 , 8, 8 , 4, 4, 2, 2}, // varamplitude {2, 2 , 4, 4, 8, 8, 16, 16}, // varamplitudeplateau {1, 1, 1, 1, 1, 1, 1, 1} // vardureefront }, { // x touche22 7, // laforceh 71, // laforceb 5, // nombre de tremolo {129, 128, 129, 128, 129, 128, 129, 128}, // amplitude {14, 15, 16, 17, 18, 19, 20, 21}, // dureefront {16, 16 , 8, 8 , 4, 4, 2, 2}, // varamplitude {2, 2 , 4, 4, 8, 8, 16, 16}, // varamplitudeplateau {1, 1, 1, 1, 1, 1, 1, 1} // vardureefront }, { // y touche6 7, // laforceh 25, // laforceb 5, // nombre de tremolo {129, 128, 129, 128, 129, 128, 129, 128}, // amplitude {46, 47, 48, 49, 50, 51, 52, 53}, // dureefront {16, 16 , 8, 8 , 4, 4, 2, 2}, // varamplitude {2, 2 , 4, 4, 8, 8, 16, 16}, // varamplitudeplateau {1, 1, 1, 1, 1, 1, 1, 1} // vardureefront }, { // z touche2 7, // laforceh 22, // laforceb 5, // nombre de tremolo {129, 128, 129, 128, 129, 128, 129, 128}, // amplitude {54, 55, 56, 57, 58, 59, 60, 61}, // dureefront {16, 16 , 8, 8 , 4, 4, 2, 2}, // varamplitude {2, 2 , 4, 4, 8, 8, 16, 16}, // varamplitudeplateau {1, 1, 1, 1, 1, 1, 1, 1} // vardureefront } }; jo *mesjo = clavier32;