/*      VMem.h
  Yamaha Voice Structures for DS55 and DX series 4 OP Keyboards
  By Charles A. Brand */

struct Operator {
   UBYTE AR;
   UBYTE D1R;
   UBYTE D2R;
   UBYTE RR;
   UBYTE D1L;
   UBYTE LS;
   UBYTE ABK;  /* 0|X|XXX|XXX = 0|AME|EBS|KVS */
   UBYTE OUT;
   UBYTE CRS;
   UBYTE RD;   /* 000|XX|XXX = 000|RS|DET */
};

struct VMem {
   struct   Operator OP4;
   struct   Operator OP2;
   struct   Operator OP3;
   struct   Operator OP1;
   UBYTE SFA;  /* 0|X|XXX|XXX = 0|SY|FBL|ALG */
   UBYTE LFS;
   UBYTE LFD;
   UBYTE PMD;
   UBYTE AMD;
   UBYTE PAL;  /* 0|XXX|XX|XX = 0|PMS|AMS|LFW */
   UBYTE TRPS;
   UBYTE PBR;
   UBYTE CMSPP;   /* 000|X|X|X|X|X = 000|CH|MO|SU|PO|PM */
   UBYTE PORT;
   UBYTE FCVOL;
   UBYTE MWPTCH;
   UBYTE MWAMP;
   UBYTE BCPTCH;
   UBYTE BCAMP;
   UBYTE BCPBIAS;
   UBYTE BCEBIAS;
   char  VNAME[10];
   UBYTE PR1;
   UBYTE PR2;
   UBYTE PR3;
   UBYTE PL1;
   UBYTE PL2;
   UBYTE PL3;
   UBYTE EFFOP4;  /* 00|XX|X|XXX =  00|EGSFT|FIX|FIXRG */
   UBYTE OFOP4;   /* 0|XXX|XXXX = 0|OSW|FINE */
   UBYTE EFFOP2;
   UBYTE OFOP2;
   UBYTE EFFOP3;
   UBYTE OFOP3;
   UBYTE EFFOP1;
   UBYTE OFOP1;
   UBYTE REV;
   UBYTE FCPTCH;
   UBYTE FCAMP;
   UBYTE RSRVED1[6];
   UBYTE DELAY;
   UBYTE RSRVED2[37];
};

