/**
 * @file samples.h
 *
 * Gestion des samples
 *
 * @version 1
 * @author Guy
 * @date Mai 2014
 */

#ifndef _samples_h
#define _samples_h

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "../fmod/include/fmod.h"

#define NMAX_SAMPLES 10

typedef struct _sample{
	//TODO
	// Je propose un truc, mais c'est à Quentin de le compléter,
	// voire de le changer complètement.
	char* chemin; // contient le nom du fichier WAV (qui sera placé dans le sous-dossier samples)
	char* nom; // juste un nom pour qu'on puisse humainement identifier le sample
	// Infos relatives au resampling
	unsigned long int deb; // numéro de l'échantillon de début
	unsigned long int fin; // numéro de l'échantillon de fin
	float hauteur_ref; // fréquence de la hauteur du sample à l'état brut (sans repitching)
} Sample;

/**
 * Il s'agit de définir une liste des samples à supprimer lors de la prochaine sauvegarde.
 */
typedef struct _poubelle{
	char* chemin;
	struct _poubelle* suiv;
} Poubelle;

/**
 * Cette fonction à valeur booléenne détermine si le fichier doit être copié dans le dossier de sauvegarde.
 */
int doitEtreSauvegarde(Sample* tab[], int i);

/**
 * Cette procédure définit le statut du fichier comme déjà copié dans la sauvegarde.
 */
void setSauvegarde(Sample* tab[], int i);

void ajouterSample(Sample* tab[], int i, char* chemin);

void supprimerSample(Sample* tab[], int i, Poubelle** poub);

//void setResampling(Sample* sample, int deb, int fin);

void setNom(Sample* sample, char nom[]);

void setHauteur(Sample* sample, float hauteur);

//unsigned long int getDeb(Sample* sample);

//unsigned long int getFin(Sample* sample);

char* getNom(Sample* sample);

float getHauteur(Sample* sample);

#endif
