Gros retravail du code de lecture. Quentin, as-tu seulement relu ton code ???
This commit is contained in:
parent
14621f0f8b
commit
a95b57bcc2
|
@ -26,4 +26,6 @@ sources/main.o
|
||||||
sources/melodie.o
|
sources/melodie.o
|
||||||
sources/motifs.o
|
sources/motifs.o
|
||||||
sources/ponytracker
|
sources/ponytracker
|
||||||
sources/lecture/.lecture.c.swp
|
sources/lecture/.lecture.c.swp
|
||||||
|
sources/lecture/.lecture.h.swp
|
||||||
|
sources/lecture/lecture.o
|
Binary file not shown.
|
@ -1,44 +1,31 @@
|
||||||
#include <motifs.h>
|
#include "lecture.h"
|
||||||
#include <instrument.h>
|
|
||||||
#include <SDL/SDL.h>
|
|
||||||
#include <SDL_mixer.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.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);
|
SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO);
|
||||||
|
|
||||||
//INITIALISATION SAMPLES ET CHANNELS
|
//INITIALISATION SAMPLES ET CHANNELS
|
||||||
Mix_AllocateChannels(nombreChaines) // On ouvre le nombre de chaines nécessaires dans le mixer
|
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 *1 = Mix_LoadWAV("Square.wav"); // Import du sample Square
|
|
||||||
Mix_Chunk *2 = Mix_LoadWAV("Saw.wav"); // Import du sample Saw
|
|
||||||
|
|
||||||
//Lecture des motifs
|
//Lecture des motifs
|
||||||
for (courant = 0; courant < 4; courant++) {
|
for (courant = 0; courant < taille; courant++) {
|
||||||
for (int i = 0; i < melodie[courant] -> nbrTmp; i++) {
|
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();
|
Mix_CloseAudio();
|
||||||
SDL_Quit();
|
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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
#ifndef _LECTURE_H
|
||||||
|
#define _LECTURE_H
|
||||||
|
|
||||||
|
|
||||||
|
#include "../melodie/melodie.h"
|
||||||
|
// #include "../instruments/instrument.h"
|
||||||
|
|
||||||
|
#include <SDL/SDL.h>
|
||||||
|
#include <SDL/SDL_mixer.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
#define NBR_MS
|
||||||
|
|
||||||
|
void lecture(int nbrChaines, Motif* melodie[]);
|
||||||
|
|
||||||
|
#endif
|
|
@ -3,6 +3,7 @@
|
||||||
|
|
||||||
#include "motifs/motifs.h"
|
#include "motifs/motifs.h"
|
||||||
#include "melodie/melodie.h"
|
#include "melodie/melodie.h"
|
||||||
|
#include "lecture/lecture.h"
|
||||||
|
|
||||||
#define DEF_NBR_TMP 16
|
#define DEF_NBR_TMP 16
|
||||||
#define MAX_PATTERNS 256
|
#define MAX_PATTERNS 256
|
||||||
|
@ -44,6 +45,7 @@ int main(){
|
||||||
taille = 0;
|
taille = 0;
|
||||||
|
|
||||||
debut(melodie, liste, nbrPortees);
|
debut(melodie, liste, nbrPortees);
|
||||||
|
lecture(nbrPortee, melodie);
|
||||||
|
|
||||||
// insérer code GTK ici
|
// insérer code GTK ici
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue