diff --git a/.gitignore b/.gitignore index de81d93..dc2f0a6 100644 --- a/.gitignore +++ b/.gitignore @@ -17,4 +17,5 @@ documentation/latex/refman.pdf documentation/latex/refman.toc sources/motifs/.motifs.c.swp sources/motifs/.motifs.h.swp -sources/motifs/motifs.o \ No newline at end of file +sources/motifs/motifs.o +sources/melodie/melodie.o \ No newline at end of file diff --git a/sources/TODO_fonctions b/sources/TODO_fonctions index f778fc8..ab3f40d 100644 --- a/sources/TODO_fonctions +++ b/sources/TODO_fonctions @@ -1,4 +1,4 @@ -samples.h +samples.h — ajouterSample — supprimerSample — previsualiserSample @@ -18,28 +18,28 @@ instruments.h — definirBalance — definirVolume -motifs.h (en cours) +motifs.h (en attente) — ajouterMotif (ok) — supprimerMotif (ok) — ajouterNote (ok) - — modifierNote (à venir) + — modifierNote (ok) — supprimerNote (ok) - — definirRefMotif (attente de l'IG) - — definirNbTemps (idem) - — definirCommentaire (idem) - — definirBoucle (idem) + — definirRefMotif (ok) + — definirNbTemps (après le proto) + — definirNom (ok) -melodie.h - — motifPrecedent - — motifSuivant +melodie.h (en attente) + — definirCourant (ok) + — calculerTemps (en secondes) (ça viendra) + — definirModeEdition (pareil) + — definirIntrument (ça demande des connaissance en Glade, ça...) + — definirBPM (idem) + — definirNbTicks (itou) + +lecture.h + — lireNote — lireMelodie - — calculerTemps (en secondes) - — definirNote - — definirEffet - — definirModeEdition - — definirIntrument - — definirBPM - — definirNbTicks + — Stop — exportSon effets.h diff --git a/sources/melodie/melodie.c b/sources/melodie/melodie.c index e69de29..58f070f 100644 --- a/sources/melodie/melodie.c +++ b/sources/melodie/melodie.c @@ -0,0 +1,36 @@ +#include "melodie.h" + +void afficherListeMelodie(){ + // TODO +} + +void affocherListeMotifs(){ + // TODO +} + +void afficherMotifActuel(){ + // TODO +} + +void definirCourant(int i){ + courant = i; +} + +void ajouterMotifVirtuel(){ + for (int i = taille; i > courant; i--) { + melodie[i] = melodie[i-1]; + } + taille++; + melodie[courant] = liste; +} + +void definirMotifVirtuel(Motif* m){ + melodie[courant] = m; +} + +void supprimerMotifVirtuel(){ + taille--; + for (int i = courant; i < taille; i--) { + melodie[i] = melodie[i+1]; + } +} \ No newline at end of file diff --git a/sources/melodie/melodie.h b/sources/melodie/melodie.h index 916d7ea..4a42b38 100644 --- a/sources/melodie/melodie.h +++ b/sources/melodie/melodie.h @@ -3,7 +3,30 @@ #include #include +#include "../motifs/motifs.h" +#define MAX_PATTERNS 256 +Motif* melodie[MAX_PATTERNS] = {NULL}; + +int courant = 0; + +int taille = 0; + +// Les trois fonctions suivantes servent au couplage avec la GUI. + +void afficherListeMelodie(); + +void afficherListeMotifs(); + +void afficherMotifActuel(); + +void definirCourant(int i); + +void ajouterMotifVirtuel(); + +void definirMotifVirtuel(Motif* m); + +void supprimerMotifVirtuel(); #endif \ No newline at end of file diff --git a/sources/motifs/motifs.c b/sources/motifs/motifs.c index ea69e91..7838ec2 100644 --- a/sources/motifs/motifs.c +++ b/sources/motifs/motifs.c @@ -9,9 +9,9 @@ int getIdMotif(Motif* m){ } } -void ajouterMotif(int nbrPortees, int nbrTmp){ +void ajouterMotif(){ Motif* m = malloc(sizeof(Motif)); - m->nbrTmp = nbrTmp; + m->nbrTmp = DEFNBRTMP; m->suivant = liste; m->motif = malloc(nbrPortees*sizeof(Portee)); char* nombre = NULL; @@ -19,12 +19,12 @@ void ajouterMotif(int nbrPortees, int nbrTmp){ m->nom = strcat("Motif ", nombre); int i; for (i=0; imotif[i] = calloc(nbrTmp,sizeof(Note)); + m->motif[i] = calloc(DEFNBRTMP,sizeof(Note)); } liste = m; } -void definirNomMotif(char* nom, Motif* m){ +void definirNomMotif(Motif* m, char* nom){ m->nom = nom; } diff --git a/sources/motifs/motifs.h b/sources/motifs/motifs.h index fc296e4..ff93246 100644 --- a/sources/motifs/motifs.h +++ b/sources/motifs/motifs.h @@ -4,6 +4,8 @@ #include #include +#define DEFNBRTMP 16 + typedef struct _note{ int note; int octave; @@ -18,20 +20,22 @@ typedef struct _motif{ char* nom; int nbrTmp; Portee* motif; - struct _motif* suivant; + struct _motif* suivant; } Motif; Motif* liste = NULL; -int nbrTmp = 16; - int nbrPortees = 4; int getIdMotif(Motif* m); -void ajouterMotif(int nbrPortees, int nbrTmp); +void ajouterMotif(); -void definirNomMotif(char* nom, Motif* m); +void definirNomMotif(Motif* m, char* nom); + +// void definirNbrTmp(Motif* m, int nbrTmp); +// C'est chiant de changer le nomre de temps en cours de route, +// donc on le fera après le proto. void supprimerMotif(Motif** cellule); // cellule correspond à l'adresse de l'élément de la liste (avec &)