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


#ifndef _instruments_h
#define _instruments_h

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include "../samples/samples.h"

typedef struct _enveloppe {
	unsigned long int tmp; // axe des temps (abscisse sur le graphe de l'enveloppe)
	int volume; // axe du volume (ordonnée sur le graphe de l'enveloppe)
	struct _enveloppe* suite;
} Enveloppe;

typedef struct _intrument {
	Sample* sample;
	Enveloppe enveloppe;
	int balance;
	int volume;
	char nom[20];
} Instrument;

void ajouterInstrument(Instrument* tab[], int i);

void supprimerInstrument(Instrument* tab[], int i);

char* getChemin(Instrument* inst);

int getVolumeInst(Instrument* inst);

int getBalanceInst(Instrument* inst);

char* getNomInst(Instrument* inst);

Sample* getSample(Instrument* inst);

void setVolume(Instrument* inst, int volume);

void setBalance(Instrument* inst, int balance);

void setNomInst(Instrument* inst, char* nom);

void setSample(Instrument* inst, Sample* smpl);

/*
 * Cette fonction prend une note et une octave en paramètre et renvoie la valeur à entrer dans le pitch shifter.
 */
float rapportPitch(Instrument* inst, int note, int octave);

#endif
