diff --git a/sources/lecture/Saw.wav b/sources/lecture/Saw.wav new file mode 100644 index 0000000..f60e61c Binary files /dev/null and b/sources/lecture/Saw.wav differ diff --git a/sources/lecture/Square.wav b/sources/lecture/Square.wav new file mode 100644 index 0000000..197a3eb Binary files /dev/null and b/sources/lecture/Square.wav differ diff --git a/sources/lecture/lecture.c b/sources/lecture/lecture.c new file mode 100644 index 0000000..c258564 --- /dev/null +++ b/sources/lecture/lecture.c @@ -0,0 +1,44 @@ +#include +#include +#include +#include +#include +#include + + + +void lecture (int nombreChaine) { + SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO); + + //INITIALISATION SAMPLES ET CHANNELS + Mix_AllocateChannels(nombreChaines) // On ouvre le nombre de chaines nécessaires dans le mixer + + Mix_Chunk *1 = Mix_LoadWAV("Square.wav"); // Import du sample Square + Mix_Chunk *2 = Mix_LoadWAV("Saw.wav"); // Import du sample Saw + + //Lecture des motifs + for (courant = 0; courant < 4; courant++) { + for (int i = 0; i < melodie[courant] -> nbrTmp; i++) { + lireTick (int getInstrument(m, portee, tmp), int tmp); + } + } + Mix_CloseAudio(); + SDL_Quit(); +} + + +void lireTick (int n, int tmp) { // On va lire les ticks (plus petite division temporelle de la playlist) de haut en bas + + int tempsPrecedent = SDL_GetTicks(), tempsActuel = SDL_GetTicks(); + + for (int chaine = 0; chaine <= nombreChaines; chaine++) { // On va lire les chaines une à une par numéro croissant + if n != NULL { + if n -> note = 0 Mix_HaltChannel(chaine); // Si la note est un silence, la chaine s'arrête + else Mix_PlayChannel(chaine, Mix_Chunk *chaine, -1); // Sinon le sample de la chaine est joué en boucle + } + while (tempsActuel - tempsPrecedent > 250) { // Si 250 ms se sont écoulées (il faudra régler ce temps sur le tempo) + tempsActuel = SDL_GetTicks(); + } + tempsPrecedent = tempsActuel; // On actualise l'horloge du programme + } +}