From a95b57bcc27951e0df4d430f0d561a94ca683755 Mon Sep 17 00:00:00 2001 From: Raspbeguy Date: Tue, 8 Apr 2014 14:23:22 +0200 Subject: [PATCH] Gros retravail du code de lecture. Quentin, as-tu seulement relu ton code ??? --- .gitignore | 4 +++- sources/GUI/premierTest | Bin 13264 -> 0 bytes sources/lecture/lecture.c | 49 ++++++++++++++------------------------ sources/lecture/lecture.h | 17 +++++++++++++ sources/main.c | 2 ++ 5 files changed, 40 insertions(+), 32 deletions(-) delete mode 100644 sources/GUI/premierTest create mode 100644 sources/lecture/lecture.h diff --git a/.gitignore b/.gitignore index bea6a33..800fca8 100644 --- a/.gitignore +++ b/.gitignore @@ -26,4 +26,6 @@ sources/main.o sources/melodie.o sources/motifs.o sources/ponytracker -sources/lecture/.lecture.c.swp \ No newline at end of file +sources/lecture/.lecture.c.swp +sources/lecture/.lecture.h.swp +sources/lecture/lecture.o \ No newline at end of file diff --git a/sources/GUI/premierTest b/sources/GUI/premierTest deleted file mode 100644 index 3d9926312608579b9fb286146afe7e3de0c89498..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13264 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 diff --git a/sources/lecture/lecture.c b/sources/lecture/lecture.c index c8c7140..a05a33d 100644 --- a/sources/lecture/lecture.c +++ b/sources/lecture/lecture.c @@ -1,44 +1,31 @@ -#include -#include -#include -#include -#include -#include +#include "lecture.h" +void lireTick (Motif* m, int tmp, Mix_Chunk* chunk[], int nbrPortees) { // On va lire les ticks (plus petite division temporelle de la playlist) de haut en bas + int tempsPrecedent = SDL_GetTicks(); -void lecture (int nombreChaine) { + for (int chaine = 0; chaine <= nbrPortees; chaine++) { // On va lire les chaines une à une par numéro croissant + if (m != NULL) { + if (getNote(m,0,tmp) == -1) Mix_HaltChannel(chaine); // Si la note est un silence, la chaine s'arrête + else Mix_PlayChannel(chaine, chunk[getInstrument(m,nbrPortees,tmp)], -1); // Sinon le sample de la chaine est joué en boucle + } + while (SDL_GetTicks() - tempsPrecedent > 250) {} // Si 250 ms se sont écoulées (il faudra régler ce temps sur le tempo) + tempsPrecedent = tempsPrecedent + 250; // On actualise l'horloge du programme + } +} + +void lecture (int nombreChaines, Motif* melodie[]) { 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 - + Mix_AllocateChannels(nombreChaines); // On ouvre le nombre de chaines nécessaires dans le mixer + Mix_Chunk* chunk[2] = {Mix_LoadWAV("Square.wav"), Mix_LoadWAV("Saw.wav")}; //Lecture des motifs - for (courant = 0; courant < 4; courant++) { + for (courant = 0; courant < taille; courant++) { for (int i = 0; i < melodie[courant] -> nbrTmp; i++) { - lireTick (int getInstrument(m, portee, tmp), int tmp); + lireTick (melodie[courant], i, chunk, nombreChaines); } } 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 - } -} diff --git a/sources/lecture/lecture.h b/sources/lecture/lecture.h new file mode 100644 index 0000000..4bd1b91 --- /dev/null +++ b/sources/lecture/lecture.h @@ -0,0 +1,17 @@ +#ifndef _LECTURE_H +#define _LECTURE_H + + +#include "../melodie/melodie.h" +// #include "../instruments/instrument.h" + +#include +#include +#include +#include + +#define NBR_MS + +void lecture(int nbrChaines, Motif* melodie[]); + +#endif diff --git a/sources/main.c b/sources/main.c index f98d18d..656da85 100644 --- a/sources/main.c +++ b/sources/main.c @@ -3,6 +3,7 @@ #include "motifs/motifs.h" #include "melodie/melodie.h" +#include "lecture/lecture.h" #define DEF_NBR_TMP 16 #define MAX_PATTERNS 256 @@ -44,6 +45,7 @@ int main(){ taille = 0; debut(melodie, liste, nbrPortees); + lecture(nbrPortee, melodie); // insérer code GTK ici