From 3cdcc213fa98879cc2057eaf694a110c69e7c8d8 Mon Sep 17 00:00:00 2001 From: Majora Date: Mon, 7 Apr 2014 20:51:04 +0200 Subject: [PATCH] =?UTF-8?q?Voici=20la=20fonction=20lecture.=20Elle=20initi?= =?UTF-8?q?alise=20l'audio,=20ouvre=20un=20nombre=20de=20chaines=20audio?= =?UTF-8?q?=20d=C3=A9fini=20en=20argument,=20et=20importe=20les=20samples?= =?UTF-8?q?=20(ici=20Square=20et=20Saw).?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ensuite elle va chercher les notes du morceau à jouer avec getInstrument (corrige-moi si je me suis gourré Guy) et elle les lit un à un en balayant les chaines et en jouant les samples correspondants au numéro de la chaine (ici aussi je sais pas si j'ai merdé ou pas avec les pointeurs les adresses etc...) On ne se sert pas du tout du module "instrument" mais c'est pas plus mal. Le module instrument risque de ne servir qu'à la création d'instrument (numéro de chaine et/ou de sample à importer) plus tard. --- sources/lecture/Saw.wav | Bin 0 -> 720 bytes sources/lecture/Square.wav | Bin 0 -> 902 bytes sources/lecture/lecture.c | 44 +++++++++++++++++++++++++++++++++++++ 3 files changed, 44 insertions(+) create mode 100644 sources/lecture/Saw.wav create mode 100644 sources/lecture/Square.wav create mode 100644 sources/lecture/lecture.c diff --git a/sources/lecture/Saw.wav b/sources/lecture/Saw.wav new file mode 100644 index 0000000000000000000000000000000000000000..f60e61c96ff02db5f10b816bbcc30a0e539961a6 GIT binary patch literal 720 zcmV;>0x$hiNk&G<0ssJ4K~_a(ZFC?I0000100IC+tN;KIu>t@D01yCVVRT`n0ssIA z00{ua0m}hk0%`&h0~rIh1GxiZ1Z4yU1q%hO1+@iK23H3D2K@%42cic_2ucX<2=54z z36u#r3O5Sh3fc;T3x5kH3?&T649E;@4Qve#4i65o4zdnY4^G7#A3^7_=Bp8B!VT z8SWX08jBhy8zvjY8^Rl49A6y!9Qz!X9hMz39x@)w9?%|QA8jA}9|jv=I7>_=bqAdM`>TT*F>mTdW>(%Ro?1=0)?K$o2?da{H z?wIaU?@aFi@B#3y@Urk=@ni81@)PpF^1||Q^KkPa^dR)l^w0Et^?&s%_AU0>_SyD{ z_lNg2_%`_A_~iJG`H%TL`Z@aR`sVtR`;z-W{6hTY{OSCb{hj?b{x|;l{_*~R|9Jm# C6<6K> literal 0 HcmV?d00001 diff --git a/sources/lecture/Square.wav b/sources/lecture/Square.wav new file mode 100644 index 0000000000000000000000000000000000000000..197a3ebfc6ee496fc8f529884dc7d1bc57a20493 GIT binary patch literal 902 zcmWIYbaSg?W?%?+40BD(Em06)U|?WoU}A7t!@!`B#LB?Ipumupm|VgF6b}L7l*E$6 z1xySK9Q?g@qnN5;un!oXqnJuzP@G$kqXJB?Ffb*8fx!mGL8CMCic8pmVj%f?AWTfo zOpySxS;1lrKoSC27(lszfx*W!I0VE>Oex6$vF(6tPd_(*PiNl{B_KN}H95a1B{fAM nKTpBHT;IS%-^jqwL?JUz!8IkbI6qI1!86z`1Y{$G&%gix<^<(O literal 0 HcmV?d00001 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 + } +}