/*****************************************************************************

GRAOUMF TRACKER 2

Copyright (c) 1996 - 2002 Laurent de Soras

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.

Contact the author : laurent@ohmforce.com
More information about this license : http://www.gnu.org/licenses/gpl.html

*****************************************************************************/



#if defined (INST_CURRENT_HEADER)
	#error Inclusion recursive du header INST.
#endif
#define	INST_CURRENT_HEADER

#if ! defined (INST_HEADER_INCLUDED)
#define	INST_HEADER_INCLUDED



/*\\\ INCLUDES \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/



/*\\\ CONSTANTES PUBLIQUES \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/

#define	INST_NBRINSTR_MAXI		255		/* 1-255 */



/*\\\ TYPES & STRUCTURES PUBLIQUES \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/



/*\\\ PROTOTYPES DES FONCTIONS PUBLIQUES \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/

signed int	INST_init (void);
void	INST_restore (void);

/*--------------------------------------------------------------------------*/
/*      Routines de base                                                    */
/*--------------------------------------------------------------------------*/

void	INST_get_instr_name (int instr, char *name_0);
void	INST_set_instr_name (int instr, const char *name_0);
int	INST_get_instr_volume (int instr);
void	INST_set_instr_volume (int instr, int volume);
signed int	INST_get_instr_autobal (int instr);
void	INST_set_instr_autobal (int instr, signed int balance);
int	INST_get_instr_quality (int instr);
void	INST_set_instr_quality (int instr, int quality);
int	INST_get_instr_sample (int instr, int note);
void	INST_set_instr_sample (int instr, int note, int sample);
signed int	INST_get_instr_transp (int instr, int note);
void	INST_set_instr_transp (int instr, int note, signed int transp);
int	INST_get_instr_zone_start (int instr, int note);
int	INST_get_instr_zone_end (int instr, int note);
int	INST_get_instr_env (int instr, int type);
void	INST_set_instr_env (int instr, int type, int env);
bool	INST_get_filter_flag (int instr);
void	INST_set_filter_flag (int instr, bool flag);
bool	INST_get_filter_freq_vol_flag (int instr);
void	INST_set_filter_freq_vol_flag (int instr, bool flag);
bool	INST_get_filter_q_vol_flag (int instr);
void	INST_set_filter_q_vol_flag (int instr, bool flag);
double	INST_get_filter_freq (int instr, int type);
void	INST_set_filter_freq (int instr, int type, double val);
double	INST_get_filter_q (int instr, int type);
void	INST_set_filter_q (int instr, int type, double val);
signed int	INST_kill_instr (int instr);
signed int	INST_clear_instruments (void);

/*--------------------------------------------------------------------------*/
/*      Routines avec utilisation de l'interface                            */
/*--------------------------------------------------------------------------*/

signed int	INST_set_instr_volume_intr (int type, signed int value);
signed int	INST_set_instr_env_intr (int type, signed int value, int env_type);



/*\\\ VARIABLES EXTERNES \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/



/*\\\ FIN DU FICHIER \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/

#endif

#undef INST_CURRENT_HEADER
