diff --git a/sources/lecture/0.wav b/sources/lecture/0.wav new file mode 100644 index 0000000..bcd0ce5 Binary files /dev/null and b/sources/lecture/0.wav differ diff --git a/sources/lecture/1.wav b/sources/lecture/1.wav new file mode 100644 index 0000000..3861e02 Binary files /dev/null and b/sources/lecture/1.wav differ diff --git a/sources/lecture/2.wav b/sources/lecture/2.wav new file mode 100644 index 0000000..788559a Binary files /dev/null and b/sources/lecture/2.wav differ diff --git a/sources/lecture/3.wav b/sources/lecture/3.wav new file mode 100644 index 0000000..3854a70 Binary files /dev/null and b/sources/lecture/3.wav differ diff --git a/sources/lecture/4.wav b/sources/lecture/4.wav new file mode 100644 index 0000000..ddd626b Binary files /dev/null and b/sources/lecture/4.wav differ diff --git a/sources/lecture/Saw.wav b/sources/lecture/Saw.wav deleted file mode 100644 index f60e61c..0000000 Binary files a/sources/lecture/Saw.wav and /dev/null differ diff --git a/sources/lecture/Square.wav b/sources/lecture/Square.wav deleted file mode 100644 index 197a3eb..0000000 Binary files a/sources/lecture/Square.wav and /dev/null differ diff --git a/sources/lecture/lecture.c b/sources/lecture/lecture.c index a6424b1..b8d5856 100644 --- a/sources/lecture/lecture.c +++ b/sources/lecture/lecture.c @@ -6,22 +6,39 @@ void lireTick (Motif* m, int tmp, Mix_Chunk* chunk[], int nbrPortees) { // On 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 + if (getInstrument(m,0,tmp) == -1) Mix_HaltChannel(chaine); // Si la note est un silence, la chaine s'arrête else { - Mix_PlayChannel(-1, chunk[getInstrument(m,chaine,tmp)], -1); // Sinon le sample de la chaine est joué en boucle + if (getNote(m,0,tmp) != 0) { + Mix_PlayChannel(chaine, chunk[getInstrument(m,chaine,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; + while (SDL_GetTicks() - tempsPrecedent < 125) {} // Si 250 ms se sont écoulées (il faudra régler ce temps sur le tempo) + tempsPrecedent = tempsPrecedent + 125; } void lecture (int nombreChaines, Motif* melodie[]) { + // Tout ça c'est pour ouvrir le périphérique audio + int audio_rate = 44100; + Uint16 audio_format = AUDIO_S16; /* 16-bit stereo */ + int audio_channels = 1; + int audio_buffers = 4096; SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO); - + if(Mix_OpenAudio(audio_rate, audio_format, audio_channels, audio_buffers)) { + printf("Unable to open audio!\n"); + exit(1); + } + //INITIALISATION SAMPLES ET CHANNELS 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")}; + Mix_Chunk* chunk[5]; + chunk[0] = Mix_LoadWAV("lecture/0.wav"); + chunk[1] = Mix_LoadWAV("lecture/1.wav"); + chunk[2] = Mix_LoadWAV("lecture/2.wav"); + chunk[3] = Mix_LoadWAV("lecture/3.wav"); + chunk[4] = Mix_LoadWAV("lecture/4.wav"); + //Lecture des motifs for (courant = 0; courant < taille; courant++) { for (int i = 0; i < melodie[courant] -> nbrTmp; i++) { diff --git a/sources/main.c b/sources/main.c index 06407a0..3be054f 100644 --- a/sources/main.c +++ b/sources/main.c @@ -29,16 +29,84 @@ void afficherMotif(Motif* m, int nbrPortees){ void debut(Motif* melodie[], Motif* liste, int nbrPortees){ ajouterMotif(&liste, DEF_NBR_TMP, nbrPortees); Motif* m = liste; - definirNote(m,0,4,5); - definirNote(m,0,2,9); + + // My Little Pony. + definirNote(m,0,0,1); + definirInstrument(m,0,0,1); + definirInstrument(m,0,2,-1); + definirNote(m,0,4,1); + definirInstrument(m,0,4,0); + definirNote(m,0,5,1); + definirInstrument(m,0,5,1); + definirInstrument(m,0,6,-1); + definirNote(m,0,7,1); + definirInstrument(m,0,7,2); + definirInstrument(m,0,8,-1); + definirNote(m,0,9,1); + definirInstrument(m,0,9,1); + definirInstrument(m,0,12,-1); + ajouterMotif(&liste, DEF_NBR_TMP, nbrPortees); Motif* n = liste; - definirNote(n,0,10,3); - definirNote(n,0,6,7); + + // I used to wonder what friendship could be. + definirNote(n,0,1,1); + definirInstrument(n,0,1,3); + definirNote(n,0,2,1); + definirInstrument(n,0,2,3); + definirNote(n,0,3,1); + definirInstrument(n,0,3,3); + definirNote(n,0,4,1); + definirInstrument(n,0,4,3); + definirInstrument(n,0,5,-1); + definirNote(n,0,6,1); + definirInstrument(n,0,6,1); + definirNote(n,0,7,1); + definirInstrument(n,0,7,2); + definirInstrument(n,0,8,-1); + definirNote(n,0,9,1); + definirInstrument(n,0,9,1); + definirInstrument(n,0,10,-1); + definirNote(n,0,11,1); + definirInstrument(n,0,11,3); + definirInstrument(n,0,12,-1); + definirNote(n,0,13,1); + definirInstrument(n,0,13,2); + definirInstrument(n,0,14,-1); + definirNote(n,0,15,1); + definirInstrument(n,0,15,1); + + ajouterMotif(&liste, DEF_NBR_TMP, nbrPortees); + Motif* p = liste; + + // Until you all shared its magic with me. + definirNote(p,0,0,1); + definirInstrument(p,0,0,3); + definirNote(p,0,1,1); + definirInstrument(p,0,1,4); + definirInstrument(p,0,2,-1); + definirNote(p,0,3,1); + definirInstrument(p,0,3,4); + definirInstrument(p,0,4,-1); + definirNote(p,0,5,1); + definirInstrument(p,0,5,3); + definirInstrument(p,0,6,-1); + definirNote(p,0,7,1); + definirInstrument(p,0,7,2); + definirInstrument(p,0,8,-1); + definirNote(p,0,9,1); + definirInstrument(p,0,9,1); + definirNote(p,0,10,1); + definirInstrument(p,0,10,3); + definirInstrument(p,0,11,-1); + definirNote(p,0,12,1); + definirInstrument(p,0,12,2); + definirInstrument(p,0,14,-1); + ajouterMotifVirtuel(melodie,0,m); ajouterMotifVirtuel(melodie,1,n); ajouterMotifVirtuel(melodie,2,m); - ajouterMotifVirtuel(melodie,3,n); + ajouterMotifVirtuel(melodie,3,p); } int main( int argc, char *argv[] ){