2014-05-15 03:44:03 +02:00
|
|
|
/**
|
|
|
|
* @file motifs.h
|
|
|
|
*
|
|
|
|
* Gestion des motifs
|
|
|
|
*
|
|
|
|
* @version 1
|
|
|
|
* @author Module CSC3502 : Projet Informatique 1ère année TELECOM SudParis
|
|
|
|
* @date Mai 2014
|
|
|
|
*/
|
|
|
|
|
2014-04-01 13:48:39 +02:00
|
|
|
#ifndef _motif_h
|
|
|
|
#define _motif_h
|
|
|
|
|
2014-03-29 17:47:13 +01:00
|
|
|
#include <stdlib.h>
|
|
|
|
#include <stdio.h>
|
|
|
|
|
2014-04-01 21:31:20 +02:00
|
|
|
#define DEFNBRTMP 16
|
|
|
|
|
2014-03-29 17:47:13 +01:00
|
|
|
typedef struct _note{
|
2014-04-01 13:48:39 +02:00
|
|
|
int note;
|
|
|
|
int octave;
|
|
|
|
int instrument;
|
|
|
|
int volume;
|
|
|
|
int effet;
|
|
|
|
} Note;
|
2014-03-29 17:47:13 +01:00
|
|
|
|
2014-04-06 20:08:43 +02:00
|
|
|
typedef Note Portee[];
|
|
|
|
|
|
|
|
typedef Portee* Mesure[];
|
2014-03-29 17:47:13 +01:00
|
|
|
|
2014-04-01 13:48:39 +02:00
|
|
|
typedef struct _motif{
|
2014-04-06 20:08:43 +02:00
|
|
|
char nom[10];
|
2014-04-01 13:48:39 +02:00
|
|
|
int nbrTmp;
|
2014-04-06 20:08:43 +02:00
|
|
|
Mesure* motif;
|
2014-04-01 21:31:20 +02:00
|
|
|
struct _motif* suivant;
|
2014-04-01 13:48:39 +02:00
|
|
|
} Motif;
|
|
|
|
|
2014-05-15 03:44:03 +02:00
|
|
|
/**
|
|
|
|
Permet d'obtenir le numéro d'un motif
|
|
|
|
@param[in] m : Mmtif dont on veut déterminer le numéro
|
|
|
|
@return Le numéro du motif
|
|
|
|
*/
|
2014-04-01 13:48:39 +02:00
|
|
|
int getIdMotif(Motif* m);
|
2014-03-29 17:47:13 +01:00
|
|
|
|
2014-05-15 03:44:03 +02:00
|
|
|
/**
|
|
|
|
Permet d'ajouter un nouveau motif
|
|
|
|
@param[out] pliste : liste de motifs
|
|
|
|
@param[in] nbrTmp : nombre de temps que doit contenir le motif
|
|
|
|
@param[in] nbrPortees : nombre de portées que doit contenir le motif
|
|
|
|
*/
|
2014-04-06 20:08:43 +02:00
|
|
|
void ajouterMotif(Motif** pliste, int nbrTmp, int nbrPortees);
|
2014-04-01 21:31:20 +02:00
|
|
|
|
2014-05-15 03:44:03 +02:00
|
|
|
/**
|
|
|
|
Permet de nommer un motif
|
|
|
|
@param[out] m : motif que l'on veut nommer
|
|
|
|
@param[in] nom : nom que l'on donne au motif
|
|
|
|
*/
|
2014-04-01 21:31:20 +02:00
|
|
|
void definirNomMotif(Motif* m, char* nom);
|
2014-03-29 17:47:13 +01:00
|
|
|
|
2014-04-01 21:31:20 +02:00
|
|
|
// 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.
|
2014-04-01 13:48:39 +02:00
|
|
|
|
2014-05-15 03:44:03 +02:00
|
|
|
/**
|
|
|
|
Permet de supprimer un motif
|
|
|
|
@param[out] cellule : adresse de l'élément de la liste
|
|
|
|
@param[in] nbrPortees : nombre de portées que l'on supprime
|
|
|
|
*/
|
2014-04-03 12:16:16 +02:00
|
|
|
void supprimerMotif(Motif** cellule, int nbrPortees); // cellule correspond à l'adresse de l'élément de la liste (avec &)
|
2014-03-29 18:00:23 +01:00
|
|
|
|
2014-05-15 03:44:03 +02:00
|
|
|
/**
|
|
|
|
Permet de définir une note
|
|
|
|
param[out] m : motif dans lequel on ajoute la note
|
|
|
|
param[in] portee : portée du motif dans laquelle on ajoute la note
|
|
|
|
param[in] tmp : temps du motif dans lequel on ajoute la note
|
|
|
|
param[in] note : note que l'on ajoute
|
|
|
|
*/
|
2014-04-01 13:48:39 +02:00
|
|
|
void definirNote(Motif* m, int portee, int tmp, int note);
|
|
|
|
|
2014-05-15 03:44:03 +02:00
|
|
|
/**
|
|
|
|
Permet de définir une octave
|
|
|
|
param[out] m : motif dans lequel on ajoute l'octave
|
|
|
|
param[in] portee : portée du motif dans laquelle on ajoute l'octave
|
|
|
|
param[in] tmp : temps du motif dans lequel on ajoute l'octave
|
|
|
|
param[in] octave : octave que l'on ajoute à la note
|
|
|
|
*/
|
2014-04-01 14:11:27 +02:00
|
|
|
void definirOctave(Motif* m, int portee, int tmp, int octave);
|
2014-04-01 13:48:39 +02:00
|
|
|
|
2014-05-15 03:44:03 +02:00
|
|
|
/**
|
|
|
|
Permet de définir l'instrument jouant une note
|
|
|
|
param[out] m : motif dans lequel on utilise cet instrument
|
|
|
|
param[in] portee : portée du motif dans laquelle on utilise cet instrument
|
|
|
|
param[in] tmp : temps du motif dans lequel on utilise cet instrument
|
|
|
|
param[in] instrument : instrument que l'on utilise
|
|
|
|
*/
|
2014-04-01 14:11:27 +02:00
|
|
|
void definirInstrument(Motif* m, int portee, int tmp, int intrument);
|
2014-04-01 13:48:39 +02:00
|
|
|
|
2014-05-15 03:44:03 +02:00
|
|
|
/**
|
|
|
|
Permet de définir le volume d'une note
|
|
|
|
param[out] m : motif dans lequel on modifie le volume
|
|
|
|
param[in] portee : portée du motif dans laquelle on modifie le volume
|
|
|
|
param[in] tmp : temps du motif dans lequel on modifie le volume
|
|
|
|
param[in] volume : volume de la note
|
|
|
|
*/
|
2014-04-01 14:11:27 +02:00
|
|
|
void definirVolume(Motif* m, int portee, int tmp, int volume);
|
2014-04-01 13:48:39 +02:00
|
|
|
|
2014-05-15 03:44:03 +02:00
|
|
|
/**
|
|
|
|
Permet de définir l'effet donné à une note
|
|
|
|
param[out] m : motif dans lequel on ajoute l'effet
|
|
|
|
param[in] portee : portée du motif dans laquelle on ajoute l'effet
|
|
|
|
param[in] tmp : temps du motif dans lequel on ajoute l'effet
|
|
|
|
param[in] effet : effet donné à la note
|
|
|
|
*/
|
2014-04-01 14:11:27 +02:00
|
|
|
void definirEffet(Motif* m, int portee, int tmp, int effet);
|
2014-03-29 18:00:23 +01:00
|
|
|
|
2014-05-15 03:44:03 +02:00
|
|
|
/**
|
|
|
|
Permet de supprimer une note
|
|
|
|
param[out] m : motif dans lequel on supprime la note
|
|
|
|
param[in] portee : portée du motif dans laquelle on supprime la note
|
|
|
|
param[in] tmp : temps du motif dans lequel on supprime la note
|
|
|
|
*/
|
2014-04-01 14:11:27 +02:00
|
|
|
void supprimerNote(Motif* m, int portee, int tmp);
|
2014-04-01 13:48:39 +02:00
|
|
|
|
2014-04-06 20:24:35 +02:00
|
|
|
// Maintenant, voici les getters (qui intéressent entre autres Majora)
|
|
|
|
|
2014-05-15 03:44:03 +02:00
|
|
|
/**
|
|
|
|
Permet d'afficher une note
|
|
|
|
param[out] m : motif dans lequel on affiche la note
|
|
|
|
param[in] portee : portée du motif dans laquelle on affiche la note
|
|
|
|
param[in] tmp : temps du motif dans lequel on affiche la note
|
|
|
|
*/
|
2014-04-06 20:24:35 +02:00
|
|
|
int getNote(Motif* m, int portee, int tmp);
|
|
|
|
|
2014-05-15 03:44:03 +02:00
|
|
|
/**
|
|
|
|
Permet d'afficher une octave
|
|
|
|
param[out] m : motif dans lequel on affiche l'octave
|
|
|
|
param[in] portee : portée du motif dans laquelle on affiche l'octave
|
|
|
|
param[in] tmp : temps du motif dans lequel on affiche l'octave
|
|
|
|
*/
|
2014-04-06 20:24:35 +02:00
|
|
|
int getOctave(Motif* m, int portee, int tmp);
|
|
|
|
|
2014-05-15 03:44:03 +02:00
|
|
|
/**
|
|
|
|
Permet d'afficher un instrument utilisé
|
|
|
|
param[out] m : motif dans lequel on affiche l'instrument utilisé
|
|
|
|
param[in] portee : portée du motif dans laquelle on affiche l'instrument utilisé
|
|
|
|
param[in] tmp : temps du motif dans lequel on affiche l'instrument utilisé
|
|
|
|
*/
|
2014-04-06 20:24:35 +02:00
|
|
|
int getInstrument(Motif* m, int portee, int tmp);
|
|
|
|
|
2014-05-15 03:44:03 +02:00
|
|
|
/**
|
|
|
|
Permet d'afficher une volume de note
|
|
|
|
param[out] m : motif dans lequel on affiche le volume de la note
|
|
|
|
param[in] portee : portée du motif dans laquelle on affiche le volume de la note
|
|
|
|
param[in] tmp : temps du motif dans lequel on affiche le volume de la note
|
|
|
|
*/
|
2014-04-06 20:24:35 +02:00
|
|
|
int getVolume(Motif* m, int portee, int tmp);
|
|
|
|
|
2014-05-15 03:44:03 +02:00
|
|
|
/**
|
|
|
|
Permet d'afficher un effet donné
|
|
|
|
param[out] m : motif dans lequel on affiche l'effet donné
|
|
|
|
param[in] portee : portée du motif dans laquelle on affiche l'effet donné
|
|
|
|
param[in] tmp : temps du motif dans lequel on affiche l'effet donné
|
|
|
|
*/
|
2014-04-06 20:24:35 +02:00
|
|
|
int getEffet(Motif* m, int portee, int tmp);
|
|
|
|
|
2014-04-03 12:16:16 +02:00
|
|
|
#endif
|