#ifndef _motif_h
#define _motif_h

#include <stdlib.h>
#include <stdio.h>

#define DEFNBRTMP 16

typedef struct _note{
    int note;
    int octave;
    int instrument;
    int volume;
    int effet;
} Note;

typedef Note Portee[];

typedef Portee* Mesure[];

typedef struct _motif{
    char            nom[10];
    int             nbrTmp;
    Mesure*	    motif;
    struct _motif*  suivant;
} Motif;

int getIdMotif(Motif* m);

void ajouterMotif(Motif** pliste, int nbrTmp, int nbrPortees);

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, int nbrPortees); // cellule correspond à l'adresse de l'élément de la liste (avec &)

void definirNote(Motif* m, int portee, int tmp, int note);

void definirOctave(Motif* m, int portee, int tmp, int octave);

void definirInstrument(Motif* m, int portee, int tmp, int intrument);

void definirVolume(Motif* m, int portee, int tmp, int volume);

void definirEffet(Motif* m, int portee, int tmp, int effet);

void supprimerNote(Motif* m, int portee, int tmp);

// Maintenant, voici les getters (qui intéressent entre autres Majora)

int getNote(Motif* m, int portee, int tmp);

int getOctave(Motif* m, int portee, int tmp);

int getInstrument(Motif* m, int portee, int tmp);

int getVolume(Motif* m, int portee, int tmp);

int getEffet(Motif* m, int portee, int tmp);

#endif
