/*
 *	VOICE.H
 *
 *	Declarations for voice patch bank handling code.
 *
 *	Voices are stored as an arbitrary voice name chosen by the user,
 *	normally corresponding to the name in the voice patch data.
 *	There is then a pointer to the patch data itself, and an optional
 *	performance memory associated with it.
 *	Several names may refer to the same patch.
 *
 *	There is a default performance memory, and a default voice (INIT VOICE).
 *
 *	32-voice banks consist of 32 voice names and pointers to 32 voice
 *	patch data.  The same voice data may be referred to by different names
 *	in banks.
 *
 *	It is planned to have a (32-bit?) signature stored with each voice patch
 *	data, to identify each uniquely (not encoding the voice name).
 */

/*
 *	One element of the list of user voice names
 */

/* one element of the voice list */
struct vl_elem {
	struct vl_elem *vl_link;	/* linked list pointer */
	char   *vl_name;		/* The user's name for the voice */
	struct dx7voice *vl_voice;	/* the voice patch data */
};

/* one element of the list of voice banks */
struct bl_elem {
	struct bl_elem *bl_link;	/* linked list pointer */
	char   *bl_name;		/* User's name for bank */
	struct dx7voice *bl_voice[32];	/* -> array of voice patch data */
};
