#ifndef MIDI_KAWAI_K1
#define MIDI_KAWAI_K1

#ifndef MIDI_MIDI_H
 #include <midi/midi.h>
#endif

/* SysEx-Offsets */

#define OFFS_STATUS		0
#define OFFS_MANID		1
#define OFFS_CHAN		2
#define OFFS_FUNC		3
#define OFFS_GRPNR		4
#define OFFS_MCHID		5
#define OFFS_SUB1		6
#define OFFS_SUB2		7
#define OFFS_DATA		8

/* Kawai K1: Allgemeine IDs */

#define KAWAI_K1	0x03	/* Machine ID */
#define K1_GROUP	0x00	/* Synthesizergruppe */
#define K1_INT		0x00	/* Interne Soundbank */
#define K1_EXT		0x01	/* Karte */
#define K1_UPCS		0x00	/* Uppercase Singles */
#define K1_LWCS		0x20	/* Lowercase Singles */
#define K1_MULTI	0x40	/* Multis */

/* SysEx-Funktionen des Kawai K1 / K1m */

#define K1_OBDR		0x00	/* One Block Data Request */
#define K1_OBDD		0x20	/* One Block Data Dump */
#define K1_ABDR		0x01	/* All Block Data Request */
#define K1_ABDD		0x21	/* All Block Data Dump */
#define K1_PS		0x10	/* Parameter send */
#define K1_MIR		0x60	/* Machine ID Request */
#define K1_MIA		0x61	/* Machine ID Acknowledge */

struct K1_Single
{	UBYTE sysex[8],
		  data[87],
		  checksum,
		  eox;
};

struct K1_Multi
{	UBYTE sysex[8],
		  data[75],
		  checksum,
		  eox;
};
#endif
