home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Phoenix Heaven Sunny 2
/
APPARE2.BIN
/
oh_towns
/
taropyon
/
he386
/
he386.cci
< prev
next >
Wrap
Text File
|
1995-06-20
|
53KB
|
2,607 lines
# 1 "main.c"
# 1 "main.c"
# 2 "midilib.c"
char _OUT_OF_STRING_SPACE[24] = "Out of string space!";
# 8 "midilib.c"
int make_sysEx( char *buf, unsigned int siz, unsigned char *dat )
{
int i, len;
char *p, tmp[8];
p = buf;
strcpy( p, "@EXCL(");
p += 6;
for ( i = 1; i < siz - 1; ++i )
{
sprintf(tmp, "%d", dat[i] & 0xFF );
strcpy(p,tmp); p += strlen(tmp);
if ( i < siz - 2 )
{
*p = ',';
++p;
}
}
*p = ')'; ++p;
*p = '\0';
return (strlen(buf));
}
# 2 "gm.c"
char *GmFuncTbl[2] =
{
"exGM_systemOn" ,
(0)
};
int GM_macroInit( char *sqr )
{
int i;
for ( i = 0; GmFuncTbl[i] != (0); ++i )
MMac_extDefine( sqr, GmFuncTbl[i], GmFuncTbl[i], (4), (0) );
MMac_extDefine( sqr, "_GM_MACRO_DEFINED", "", (0) , (0) );
return ((0));
}
# 25 "gm.c"
int exGM_systemOn( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
char dat[32], tmp[256];
unsigned siz;
dat[0] = 0xF0;
dat[1] = 0x7E;
dat[2] = 0x7F;
dat[3] = 0x09;
dat[4] = 0x01;
dat[5] = 0xF7;
siz = 6;
siz = make_sysEx(tmp, siz, dat );
if ( siz >= bufSiz )
{
MM_setErrMsg(sqr,_OUT_OF_STRING_SPACE);
return ((-1));
}
memcpy( buf, tmp, siz );
return (siz);
}
# 8 "gs.c"
int GsDeviceID = 16;
char *GsFuncTbl[32] =
{
"GS_setDeviceNumber" ,
"sysEx_gs" ,
"sysEx_sc55" ,
"exGs_reset" ,
"exGs_masterVolume" ,
"exGs_partialReserve",
"exGs_reverbMacro" ,
"exGs_reverbPara" ,
"exGs_chorusMacro" ,
"exGs_chorusPara" ,
"exGs_rxChannel" ,
"exGs_assignMode" ,
"exGs_rymMap" ,
"exGs_mod" ,
"exGs_bend" ,
"exGs_caf" ,
"exGs_paf" ,
"exGs_cc1number" ,
"exGs_cc2number" ,
"exGs_cc1control" ,
"exGs_cc2control" ,
"exSC55_msgSet" ,
"exSC55_dotSet" ,
"SC55_initDotBuffer" ,
"SC55_setDotBuffer" ,
"exSC55_dotBuffer" ,
(0)
};
int GS_macroInit( char *sqr )
{
int i;
GsDeviceID = 17 - 1;
for ( i = 0; GsFuncTbl[i] != (0); ++i )
MMac_extDefine( sqr, GsFuncTbl[i], GsFuncTbl[i], (4), (0) );
MMac_extDefine( sqr, "_GS_MACRO_DEFINED", "", (0) , (0) );
return ((0));
}
# 64 "gs.c"
int GS_setDeviceNumber( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
int n;
if ( argc < 1 )
{
_ERR: MM_setErrMsg(sqr,"[GS] device number error!");
return ((-1));
}
n = atoi(argv[0]) - 1;
if ( n < 1 || n > 32 )
goto _ERR;
GsDeviceID = n - 1;
return (0);
}
# 84 "gs.c"
int roland_excl( unsigned char *buf, int deviceID, int modelID, unsigned int adr, unsigned int siz, unsigned char *dat )
{
int i, sum;
buf[0] = 0xF0;
buf[1] = 0x41;
buf[2] = deviceID;
buf[3] = modelID;
buf[4] = 0x12;
buf[5] = (adr>>16); buf[6] = (adr>>8); buf[7] = (adr);
sum = buf[5] + buf[6] + buf[7];
for ( i = 0; i < siz; ++i )
{
buf[8+i] = dat[i];
sum += dat[i];
}
sum = (0x80 - (sum & 0x7F)) & 0x7F;
buf[8+siz] = sum;
buf[9+siz] = 0xF7;
return (siz + 10);
}
int gs_genMML( char *sqr, unsigned int bufSiz, char *buf, unsigned int adr, unsigned int siz, char *dat)
{
int ret;
char excl[256], tmp[1024];
ret = roland_excl( excl, GsDeviceID, (0x42), adr, siz, dat );
ret = make_sysEx( tmp, ret, excl );
if ( ret >= bufSiz )
{
MM_setErrMsg(sqr,_OUT_OF_STRING_SPACE);
return ((-1));
}
memcpy( buf, tmp, ret );
return (ret);
}
int sc55_genMML( char *sqr, unsigned int bufSiz, char *buf, unsigned int adr, unsigned int siz, char *dat)
{
int ret;
char excl[256], tmp[1024];
ret = roland_excl( excl, GsDeviceID, (0x45), adr, siz, dat );
ret = make_sysEx( tmp, ret, excl );
if ( ret >= bufSiz )
{
MM_setErrMsg(sqr,_OUT_OF_STRING_SPACE);
return ((-1));
}
memcpy( buf, tmp, ret );
return (ret);
}
# 146 "gs.c"
int sysEx_gs( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
char dat[128];
unsigned int adr, siz;
int i, ret;
if ( argc < 3 )
{
MM_setErrMsg(sqr,"GS system exclusive error!");
return ((-1));
}
sscanf(argv[0],"%x",&adr);
siz = atoi(argv[1]);
if ( siz < 1 || argc < 2 + siz )
return ((-1));
for ( i = 0; i < siz; ++i )
dat[i] = atoi(argv[2+i]);
return gs_genMML( sqr, bufSiz, buf, adr, siz, dat );
}
# 173 "gs.c"
int sysEx_sc55( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
char dat[128];
unsigned int adr, siz;
int i, ret;
if ( argc < 3 )
{
MM_setErrMsg(sqr,"SC-55 system exclusive error!");
return ((-1));
}
sscanf(argv[0],"%x",&adr);
siz = atoi(argv[1]);
if ( siz < 1 || argc < 2 + siz )
return ((-1));
for ( i = 0; i < siz; ++i )
dat[i] = atoi(argv[2+i]);
return sc55_genMML( sqr, bufSiz, buf, adr, siz, dat );
}
# 198 "gs.c"
int exGs_reset( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
char dat[4];
int ret;
if ( argc != 0 )
{
MM_setErrMsg(sqr,"[GS] \"reset\" error!");
return((-1));
}
dat[0] = 0x00;
return gs_genMML( sqr, bufSiz, buf, 0x40007F, 1, dat );
}
# 219 "gs.c"
int exGs_masterVolume( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
char dat[4];
int ret;
if ( argc != 1 )
{
MM_setErrMsg(sqr,"[GS] Master volume error!");
return((-1));
}
dat[0] = atoi(argv[0]);
return gs_genMML( sqr, bufSiz, buf, 0x400004, 1, dat );
}
# 240 "gs.c"
int exGs_partialReserve( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
int i;
char dat[32];
int ret;
if ( argc != 16 )
{
MM_setErrMsg(sqr,"[GS] Partial reserve error!");
return((-1));
}
for ( i = 0; i < 16; ++i )
dat[i] = atoi(argv[i]);
return gs_genMML( sqr, bufSiz, buf, 0x400110, 16, dat );
}
# 263 "gs.c"
int exGs_reverbMacro( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
char dat[4];
int ret;
if ( argc != 1 )
{
MM_setErrMsg(sqr,"[GS] Reverb macro error!");
return((-1));
}
dat[0] = atoi(argv[0]);
return gs_genMML( sqr, bufSiz, buf, 0x400130, 1, dat );
}
# 284 "gs.c"
int exGs_reverbPara( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
int i;
char dat[8];
int ret;
if ( argc != 6 )
{
MM_setErrMsg(sqr,"[GS] Reverb parameter error!");
return((-1));
}
for ( i = 0; i < 6; ++i )
dat[i] = atoi(argv[i]);
return gs_genMML( sqr, bufSiz, buf, 0x400131, 6, dat );
}
# 307 "gs.c"
int exGs_chorusMacro( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
char dat[4];
int ret;
if ( argc != 1 )
{
MM_setErrMsg(sqr,"[GS] Chorus macro error!");
return((-1));
}
dat[0] = atoi(argv[0]);
return gs_genMML( sqr, bufSiz, buf, 0x400138, 1, dat );
}
# 328 "gs.c"
int exGs_chorusPara( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
int i;
char dat[8];
int ret;
if ( argc != 7 )
{
MM_setErrMsg(sqr,"[GS] Chorus parameter error!");
return((-1));
}
for ( i = 0; i < 7; ++i )
dat[i] = atoi(argv[i]);
return gs_genMML( sqr, bufSiz, buf, 0x400139, 7, dat );
}
int GsPartTbl[16] = {1,2,3,4,5,6,7,8,9,0,10,11,12,13,14,15};
int gs_getpart_n( int part )
{
if ( part < 1 || part > 16 )
return (-1);
return (GsPartTbl[part-1]);
}
# 361 "gs.c"
int exGs_rxChannel( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
int i, part, ch;
char dat[4];
int ret;
if ( argc != 2 )
{
_PARA_ERR:
MM_setErrMsg(sqr,"[GS] 'Rx.channel' error!");
return((-1));
}
if ( (part = gs_getpart_n(atoi(argv[0]))) < 0 )
goto _PARA_ERR;
ch = atoi(argv[1]);
if ( ch < 0 || ch > 16 )
goto _PARA_ERR;
if ( ch > 0 )
--ch;
else
ch = 0;
dat[0] = ch;
return gs_genMML( sqr, bufSiz, buf, ((0x401002)+((part)<<8)), 1, dat );
}
# 393 "gs.c"
int exGs_assignMode( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
int i, part;
char dat[4];
int ret;
if ( argc != 2 )
{
_PARA_ERR:
MM_setErrMsg(sqr,"[GS] 'Assign mode' error!");
return((-1));
}
if ( (part = gs_getpart_n(atoi(argv[0]))) < 0 )
goto _PARA_ERR;
dat[0] = atoi(argv[1]);
return gs_genMML( sqr, bufSiz, buf, ((0x401014)+((part)<<8)), 1, dat );
}
# 14 "gs_cc.c"
int exGs_mod( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
int part, v;
char dat[16];
int ret;
if ( argc != 12 )
{
_PARA_ERR:
MM_setErrMsg(sqr,"[GS] 'MOD control' error!");
return((-1));
}
if ( (part = gs_getpart_n(atoi(argv[0]))) < 0 )
goto _PARA_ERR;
v = atoi(argv[1]);
if ( v < -24 || v > 24 )
goto _PARA_ERR;
dat[0] = v + 0x40;
v = atoi(argv[2]);
if ( v < -64 || v > 63 )
goto _PARA_ERR;
dat[1] = v + 0x40;
v = atoi(argv[3]);
if ( v < -64 || v > 63 )
goto _PARA_ERR;
dat[2] = v + 0x40;
v = atoi(argv[4]);
if ( v < -64 || v > 63 )
goto _PARA_ERR;
dat[3] = v + 0x40;
v = atoi(argv[5]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[4] = v;
v = atoi(argv[6]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[5] = v;
v = atoi(argv[7]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[6] = v;
v = atoi(argv[8]);
if ( v < -64 || v > 63 )
goto _PARA_ERR;
dat[7] = v + 0x40;
v = atoi(argv[9]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[8] = v;
v = atoi(argv[10]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[9] = v;
v = atoi(argv[11]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[10] = v;
return gs_genMML( sqr, bufSiz, buf, ((0x402000)+((part)<<8)), 11, dat );
}
# 107 "gs_cc.c"
int exGs_bend( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
int part, v;
char dat[16];
int ret;
if ( argc != 12 )
{
_PARA_ERR:
MM_setErrMsg(sqr,"[GS] 'Pitch control' error!");
return((-1));
}
if ( (part = gs_getpart_n(atoi(argv[0]))) < 0 )
goto _PARA_ERR;
v = atoi(argv[1]);
if ( v < 0 || v > 24 )
goto _PARA_ERR;
dat[0] = v + 0x40;
v = atoi(argv[2]);
if ( v < -64 || v > 63 )
goto _PARA_ERR;
dat[1] = v + 0x40;
v = atoi(argv[3]);
if ( v < -64 || v > 63 )
goto _PARA_ERR;
dat[2] = v + 0x40;
v = atoi(argv[4]);
if ( v < -64 || v > 63 )
goto _PARA_ERR;
dat[3] = v + 0x40;
v = atoi(argv[5]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[4] = v;
v = atoi(argv[6]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[5] = v;
v = atoi(argv[7]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[6] = v;
v = atoi(argv[8]);
if ( v < -64 || v > 63 )
goto _PARA_ERR;
dat[7] = v + 0x40;
v = atoi(argv[9]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[8] = v;
v = atoi(argv[10]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[9] = v;
v = atoi(argv[11]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[10] = v;
return gs_genMML( sqr, bufSiz, buf, ((0x402010)+((part)<<8)), 11, dat );
}
# 200 "gs_cc.c"
int exGs_caf( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
int part, v;
char dat[16];
int ret;
if ( argc != 12 )
{
_PARA_ERR:
MM_setErrMsg(sqr,"[GS] 'CAf control' error!");
return((-1));
}
if ( (part = gs_getpart_n(atoi(argv[0]))) < 0 )
goto _PARA_ERR;
v = atoi(argv[1]);
if ( v < -24 || v > 24 )
goto _PARA_ERR;
dat[0] = v + 0x40;
v = atoi(argv[2]);
if ( v < -64 || v > 63 )
goto _PARA_ERR;
dat[1] = v + 0x40;
v = atoi(argv[3]);
if ( v < -64 || v > 63 )
goto _PARA_ERR;
dat[2] = v + 0x40;
v = atoi(argv[4]);
if ( v < -64 || v > 63 )
goto _PARA_ERR;
dat[3] = v + 0x40;
v = atoi(argv[5]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[4] = v;
v = atoi(argv[6]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[5] = v;
v = atoi(argv[7]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[6] = v;
v = atoi(argv[8]);
if ( v < -64 || v > 63 )
goto _PARA_ERR;
dat[7] = v + 0x40;
v = atoi(argv[9]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[8] = v;
v = atoi(argv[10]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[9] = v;
v = atoi(argv[11]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[10] = v;
return gs_genMML( sqr, bufSiz, buf, ((0x402020)+((part)<<8)), 11, dat );
}
# 293 "gs_cc.c"
int exGs_paf( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
int part, v;
char dat[16];
int ret;
if ( argc != 12 )
{
_PARA_ERR:
MM_setErrMsg(sqr,"[GS] 'PAf control' error!");
return((-1));
}
if ( (part = gs_getpart_n(atoi(argv[0]))) < 0 )
goto _PARA_ERR;
v = atoi(argv[1]);
if ( v < -24 || v > 24 )
goto _PARA_ERR;
dat[0] = v + 0x40;
v = atoi(argv[2]);
if ( v < -64 || v > 63 )
goto _PARA_ERR;
dat[1] = v + 0x40;
v = atoi(argv[3]);
if ( v < -64 || v > 63 )
goto _PARA_ERR;
dat[2] = v + 0x40;
v = atoi(argv[4]);
if ( v < -64 || v > 63 )
goto _PARA_ERR;
dat[3] = v + 0x40;
v = atoi(argv[5]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[4] = v;
v = atoi(argv[6]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[5] = v;
v = atoi(argv[7]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[6] = v;
v = atoi(argv[8]);
if ( v < -64 || v > 63 )
goto _PARA_ERR;
dat[7] = v + 0x40;
v = atoi(argv[9]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[8] = v;
v = atoi(argv[10]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[9] = v;
v = atoi(argv[11]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[10] = v;
return gs_genMML( sqr, bufSiz, buf, ((0x402030)+((part)<<8)), 11, dat );
}
# 384 "gs_cc.c"
int exGs_cc1number( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
int i, part;
char dat[4];
int ret;
if ( argc != 2 )
{
_PARA_ERR:
MM_setErrMsg(sqr,"[GS] 'CC1 controller number' error!");
return((-1));
}
if ( (part = gs_getpart_n(atoi(argv[0]))) < 0 )
goto _PARA_ERR;
dat[0] = atoi(argv[1]);
return gs_genMML( sqr, bufSiz, buf, ((0x40101F)+((part)<<8)), 1, dat );
}
# 409 "gs_cc.c"
int exGs_cc2number( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
int i, part;
char dat[4];
int ret;
if ( argc != 2 )
{
_PARA_ERR:
MM_setErrMsg(sqr,"[GS] 'CC2 controller number' error!");
return((-1));
}
if ( (part = gs_getpart_n(atoi(argv[0]))) < 0 )
goto _PARA_ERR;
dat[0] = atoi(argv[1]);
return gs_genMML( sqr, bufSiz, buf, ((0x401020)+((part)<<8)), 1, dat );
}
# 438 "gs_cc.c"
int exGs_cc1control( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
int part, v;
char dat[16];
int ret;
if ( argc != 12 )
{
_PARA_ERR:
MM_setErrMsg(sqr,"[GS] 'CC1 control' error!");
return((-1));
}
if ( (part = gs_getpart_n(atoi(argv[0]))) < 0 )
goto _PARA_ERR;
v = atoi(argv[1]);
if ( v < -24 || v > 24 )
goto _PARA_ERR;
dat[0] = v + 0x40;
v = atoi(argv[2]);
if ( v < -64 || v > 63 )
goto _PARA_ERR;
dat[1] = v + 0x40;
v = atoi(argv[3]);
if ( v < -64 || v > 63 )
goto _PARA_ERR;
dat[2] = v + 0x40;
v = atoi(argv[4]);
if ( v < -64 || v > 63 )
goto _PARA_ERR;
dat[3] = v + 0x40;
v = atoi(argv[5]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[4] = v;
v = atoi(argv[6]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[5] = v;
v = atoi(argv[7]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[6] = v;
v = atoi(argv[8]);
if ( v < -64 || v > 63 )
goto _PARA_ERR;
dat[7] = v + 0x40;
v = atoi(argv[9]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[8] = v;
v = atoi(argv[10]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[9] = v;
v = atoi(argv[11]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[10] = v;
return gs_genMML( sqr, bufSiz, buf, ((0x402040)+((part)<<8)), 11, dat );
}
# 531 "gs_cc.c"
int exGs_cc2control( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
int part, v;
char dat[16];
int ret;
if ( argc != 12 )
{
_PARA_ERR:
MM_setErrMsg(sqr,"[GS] 'CC2 control' error!");
return((-1));
}
if ( (part = gs_getpart_n(atoi(argv[0]))) < 0 )
goto _PARA_ERR;
v = atoi(argv[1]);
if ( v < -24 || v > 24 )
goto _PARA_ERR;
dat[0] = v + 0x40;
v = atoi(argv[2]);
if ( v < -64 || v > 63 )
goto _PARA_ERR;
dat[1] = v + 0x40;
v = atoi(argv[3]);
if ( v < -64 || v > 63 )
goto _PARA_ERR;
dat[2] = v + 0x40;
v = atoi(argv[4]);
if ( v < -64 || v > 63 )
goto _PARA_ERR;
dat[3] = v + 0x40;
v = atoi(argv[5]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[4] = v;
v = atoi(argv[6]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[5] = v;
v = atoi(argv[7]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[6] = v;
v = atoi(argv[8]);
if ( v < -64 || v > 63 )
goto _PARA_ERR;
dat[7] = v + 0x40;
v = atoi(argv[9]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[8] = v;
v = atoi(argv[10]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[9] = v;
v = atoi(argv[11]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[10] = v;
return gs_genMML( sqr, bufSiz, buf, ((0x402050)+((part)<<8)), 11, dat );
}
# 7 "gs_drum.c"
int exGs_rymMap( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
int i, part;
char dat[4];
int ret;
if ( argc != 2 )
{
_PARA_ERR:
MM_setErrMsg(sqr,"[GS] 'rhythm map' error!");
return((-1));
}
if ( (part = gs_getpart_n(atoi(argv[0]))) < 0 )
goto _PARA_ERR;
dat[0] = atoi(argv[1]);
return gs_genMML( sqr, bufSiz, buf, ((0x401015)+((part)<<8)), 1, dat );
}
# 5 "sc55disp.c"
char *Sc55dispFuncTbl[8] =
{
"exSC55_msgSet" ,
"exSC55_dotSet" ,
"SC55_initDotBuffer" ,
"SC55_setDotBuffer" ,
"exSC55_dotBuffer" ,
(0)
};
int SC55disp_macroInit( char *sqr )
{
int i;
for ( i = 0; Sc55dispFuncTbl[i] != (0); ++i )
MMac_extDefine( sqr, Sc55dispFuncTbl[i], Sc55dispFuncTbl[i], (4), (0) );
MMac_extDefine( sqr, "_SC55DISP_MACRO_DEFINED", "", (0) , (0) );
return ((0));
}
int _isSC55dot(int ch)
{
ch &= 0xFF;
if ( ch == '0' || ch == ' ' )
return (0);
else
return (1);
}
# 41 "sc55disp.c"
int exSC55_msgSet( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
int len, siz;
char *msg;
if ( argc < 1 )
{
_ERR: MM_setErrMsg(sqr,"[SC-55] displayed letter error!");
return((-1));
}
msg = argv[0];
len = strlen(msg);
if ( len < 1 || len > 32 )
goto _ERR;
return sc55_genMML( sqr, bufSiz, buf, 0x100000, len, msg );
}
# 65 "sc55disp.c"
int exSC55_dotSet( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
int i, level;
char *s, dat[128];
unsigned char dot[256];
if ( argc < 16 )
{
_ERR: MM_setErrMsg(sqr,"[SC-55] displayed dot data error!");
return((-1));
}
for ( level = 0; level < 16; ++level )
{
s = argv[level];
while ( isspace(*s) )
++s;
if ( strlen(s) < 16 )
goto _ERR;
for ( i = 0; i < 16; ++i )
{
dot[(level*16)+i] = _isSC55dot(*s);
++s;
}
}
for ( i = 0; i < 16; ++i )
{
dat[i ] = (dot[i*16+ 0]<<4) + (dot[i*16+ 1]<<3) + (dot[i*16+ 2]<<2) + (dot[i*16+ 3]<<1) + (dot[i*16+ 4]);
dat[i+16] = (dot[i*16+ 5]<<4) + (dot[i*16+ 6]<<3) + (dot[i*16+ 7]<<2) + (dot[i*16+ 8]<<1) + (dot[i*16+ 9]);
dat[i+32] = (dot[i*16+10]<<4) + (dot[i*16+11]<<3) + (dot[i*16+12]<<2) + (dot[i*16+13]<<1) + (dot[i*16+14]);
dat[i+48] = (dot[i*16+15]<<4);
}
return sc55_genMML( sqr, bufSiz, buf, 0x100100, 64, dat );
}
int Sc55dotBufXs = 0;
int Sc55dotBufYs = 0;
unsigned char *Sc55dotBuffer = (0);
# 112 "sc55disp.c"
int SC55_initDotBuffer( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
int x, y;
if ( argc < 2 )
{
_ERR: MM_setErrMsg(sqr,"\x22SC55_initDotBuffer()\x22 parameter error!");
return((-1));
}
x = atoi(argv[0]);
y = atoi(argv[1]);
if ( x < 16 || y < 16 )
goto _ERR;
Sc55dotBufXs = x;
Sc55dotBufYs = y;
if ( (Sc55dotBuffer = calloc(Sc55dotBufXs*Sc55dotBufYs,1)) == (0) )
goto _ERR;
return (0);
}
# 138 "sc55disp.c"
int SC55_setDotBuffer( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
int x, y;
char *s;
if ( Sc55dotBuffer == (0) || Sc55dotBufXs < 16 || Sc55dotBufYs < 16 )
{
MM_setErrMsg(sqr,"SC-55 dot buffer not initiarize!");
return((-1));
}
if ( argc < 2 )
{
_ERR: MM_setErrMsg(sqr,"\x22SC55_setDotBuffer()\x22 parameter error!");
return((-1));
}
y = atoi(argv[0]);
s = argv[1];
while ( isspace(*s) )
++s;
if ( *s )
{
for ( x = 0; x < Sc55dotBufXs; ++x )
{
Sc55dotBuffer[y * Sc55dotBufXs + x] = _isSC55dot(*s);
++s;
if ( *s == '\0' )
break;
}
}
return (0);
}
# 177 "sc55disp.c"
int exSC55_dotBuffer( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
int y, x0, y0;
char *s, dat[128];
unsigned char dot[256];
if ( Sc55dotBuffer == (0) || Sc55dotBufXs < 16 || Sc55dotBufYs < 16 )
{
MM_setErrMsg(sqr,"SC-55 dot buffer not initiarize!");
return((-1));
}
if ( argc < 2 )
{
_ERR: MM_setErrMsg(sqr,"\x22exSC55_dotBuffer()\x22 parameter error!");
return((-1));
}
x0 = atoi(argv[0]);
y0 = atoi(argv[1]);
if ( x0 < 0 || x0 + 15 > Sc55dotBufXs || y0 < 0 || y0 + 15 > Sc55dotBufYs )
goto _ERR;
for ( y = 0; y < 16; ++y, ++y0 )
{
dat[y ] = (Sc55dotBuffer[(y0*Sc55dotBufXs)+x0+ 0]<<4)
+ (Sc55dotBuffer[(y0*Sc55dotBufXs)+x0+ 1]<<3)
+ (Sc55dotBuffer[(y0*Sc55dotBufXs)+x0+ 2]<<2)
+ (Sc55dotBuffer[(y0*Sc55dotBufXs)+x0+ 3]<<1)
+ (Sc55dotBuffer[(y0*Sc55dotBufXs)+x0+ 4]);
dat[y+16] = (Sc55dotBuffer[(y0*Sc55dotBufXs)+x0+ 5]<<4)
+ (Sc55dotBuffer[(y0*Sc55dotBufXs)+x0+ 6]<<3)
+ (Sc55dotBuffer[(y0*Sc55dotBufXs)+x0+ 7]<<2)
+ (Sc55dotBuffer[(y0*Sc55dotBufXs)+x0+ 8]<<1)
+ (Sc55dotBuffer[(y0*Sc55dotBufXs)+x0+ 9]);
dat[y+32] = (Sc55dotBuffer[(y0*Sc55dotBufXs)+x0+10]<<4)
+ (Sc55dotBuffer[(y0*Sc55dotBufXs)+x0+11]<<3)
+ (Sc55dotBuffer[(y0*Sc55dotBufXs)+x0+12]<<2)
+ (Sc55dotBuffer[(y0*Sc55dotBufXs)+x0+13]<<1)
+ (Sc55dotBuffer[(y0*Sc55dotBufXs)+x0+14]);
dat[y+48] = (Sc55dotBuffer[(y0*Sc55dotBufXs)+x0+15]<<4);
}
return sc55_genMML( sqr, bufSiz, buf, 0x100100, 64, dat );
}
# 8 "tg300.c"
int TG300devNum = 0;
char *Tg300funcTbl[64] =
{
"TG300_setDeviceNumber" ,
"sysEx_TG300" ,
"exTG300_allParameterReset" ,
"exTG300_masterTune" ,
"exTG300_masterVolume" ,
"exTG300_masterPan" ,
"exTG300_masterCutoff" ,
"exTG300_masterPModDep" ,
"exTG300_varSendCtChg" ,
"exTG300_chorusType" ,
"exTG300_variationType" ,
"exTG300_preVariationType" ,
"exTG300_preReverbType" ,
"exTG300_reverbType" ,
"exTG300_effectInput" ,
"exTG300_dryLevel" ,
"exTG300_effectReturn" ,
"exTG300_effectSend" ,
"exTG300_choParam" ,
"exTG300_varParam" ,
"exTG300_preVarParam" ,
"exTG300_preRevParam" ,
"exTG300_revParam" ,
"exTG300_elementReserve" ,
"exTG300_bank" ,
"exTG300_programNo" ,
"exTG300_rcvChannel" ,
"exTG300_monoPolyMode" ,
"exTG300_keyAssign" ,
"exTG300_partMode" ,
"exTG300_noteShift" ,
"exTG300_detune" ,
"exTG300_volume" ,
"exTG300_velSensDepth" ,
"exTG300_velSensOffst" ,
"exTG300_pan" ,
"exTG300_mwControl" ,
"exTG300_bendControl" ,
"exTG300_catControl" ,
"exTG300_patControl" ,
"exTG300_ac1Control" ,
"exTG300_ac2Control" ,
"exTG300_drumSetup" ,
"exTG300_voiceDataSet" ,
(0)
};
int TG300_macroInit( char *sqr )
{
int i;
TG300devNum = 0;
for ( i = 0; Tg300funcTbl[i] != (0); ++i )
MMac_extDefine( sqr, Tg300funcTbl[i], Tg300funcTbl[i], (4), (0) );
MMac_extDefine( sqr, "_TG300_MACRO_DEFINED", "", (0) , (0) );
return ((0));
}
# 83 "tg300.c"
int TG300_setDeviceNumber( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
int n;
if ( argc < 1 )
{
_ERR: MM_setErrMsg(sqr,"TG300 device number!");
return ((-1));
}
n = atoi(argv[0]) - 1;
if ( n < 0 || n > 15 )
goto _ERR;
TG300devNum = n;
return (0);
}
# 104 "tg300.c"
int tg300_excl( unsigned char *buf, unsigned int adr, unsigned int siz, unsigned char *dat )
{
int i, sum;
buf[0] = 0xF0;
buf[1] = (0x43);
buf[2] = 0x10+TG300devNum;
buf[3] = (0x2B);
buf[4] = (adr>>16); buf[5] = (adr>>8); buf[6] = (adr);
sum = buf[4] + buf[5] + buf[6];
for ( i = 0; i < siz; ++i )
{
buf[7+i] = dat[i];
sum += dat[i];
}
sum = (0x80 - (sum & 0x7F)) & 0x7F;
buf[7+siz] = sum;
buf[8+siz] = 0xF7;
return (siz + 9);
}
int tg300_genMML( char *sqr, unsigned int bufSiz, char *buf, unsigned int adr, unsigned int siz, char *dat)
{
int ret;
char excl[256], tmp[1024];
ret = tg300_excl( excl, adr, siz, dat );
ret = make_sysEx( tmp, ret, excl );
if ( ret >= bufSiz )
{
MM_setErrMsg(sqr,_OUT_OF_STRING_SPACE);
return ((-1));
}
memcpy( buf, tmp, ret );
return (ret);
}
# 149 "tg300.c"
int sysEx_TG300( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
char dat[256];
unsigned adr, siz;
int i, ret;
if ( argc < 3 )
{
MM_setErrMsg(sqr,"TG300 system exclusive error!");
return ((-1));
}
sscanf(argv[0],"%x",&adr);
siz = atoi(argv[1]);
if ( siz < 1 || argc < 2 + siz )
return ((-1));
for ( i = 0; i < siz; ++i )
dat[i] = atoi(argv[2+i]);
return tg300_genMML( sqr, bufSiz, buf, adr, siz, dat );
}
# 176 "tg300.c"
int exTG300_allParameterReset( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
char dat[4];
if ( argc != 0 )
{
MM_setErrMsg(sqr,"TG300 \"All Parameter Reset\" error!");
return((-1));
}
dat[0] = 0;
return tg300_genMML( sqr, bufSiz, buf, 0x00007F, 1, dat );
}
# 197 "tg300.c"
int exTG300_masterTune( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
char dat[4];
int tune;
if ( argc != 1 )
{
_ERR: MM_setErrMsg(sqr,"TG300 \"MASTER TUNE\" error!");
return((-1));
}
tune = atoi(argv[0]) + 1024;
if ( tune < 0 || tune > 0x7FF )
goto _ERR;
dat[0] = (tune>>12) & 0x0F;
dat[1] = (tune>> 8) & 0x0F;
dat[2] = (tune>> 4) & 0x0F;
dat[3] = tune & 0x0F;
return tg300_genMML( sqr, bufSiz, buf, 0x000000, 4, dat );
}
# 225 "tg300.c"
int exTG300_masterVolume( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
char dat[4];
int vol;
if ( argc != 1 )
{
_ERR: MM_setErrMsg(sqr,"TG300 \"MASTER VOLUM\" error!");
return((-1));
}
vol = atoi(argv[0]);
if ( vol < 0 || vol > 127 )
goto _ERR;
dat[0] = vol;
return tg300_genMML( sqr, bufSiz, buf, 0x000004, 1, dat );
}
# 250 "tg300.c"
int exTG300_masterPan( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
char dat[32];
int pan;
if ( argc != 1 )
{
_ERR: MM_setErrMsg(sqr,"TG300 \"MASTER PAN\" error!");
return((-1));
}
pan = atoi(argv[0]) + 64;
if ( pan < 1 || pan > 127 )
goto _ERR;
dat[0] = pan;
return tg300_genMML( sqr, bufSiz, buf, 0x000006, 1, dat );
}
# 275 "tg300.c"
int exTG300_masterCutoff( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
char dat[32];
int v;
if ( argc != 1 )
{
_ERR: MM_setErrMsg(sqr,"TG300 \"MASTER CUTOFF\" error!");
return((-1));
}
v = atoi(argv[0]) + 64;
if ( v < 0 || v > 127 )
goto _ERR;
dat[0] = v;
return tg300_genMML( sqr, bufSiz, buf, 0x000007, 1, dat );
}
# 300 "tg300.c"
int exTG300_masterPModDep( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
char dat[32];
int v;
if ( argc != 1 )
{
_ERR: MM_setErrMsg(sqr,"TG300 \"MASTER PITCH MODULATION DEPTH\" error!");
return((-1));
}
v = atoi(argv[0]) + 64;
if ( v < 0 || v > 127 )
goto _ERR;
dat[0] = v;
return tg300_genMML( sqr, bufSiz, buf, 0x000008, 1, dat );
}
# 325 "tg300.c"
int exTG300_varSendCtChg( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
char dat[32];
int v;
if ( argc != 1 )
{
_ERR: MM_setErrMsg(sqr,"TG300 \"VARIATION EFFECT SEND CONTROL CHANGE NUMBER\" error!");
return((-1));
}
v = atoi(argv[0]);
if ( v < 0 || v > 95 )
goto _ERR;
dat[0] = v;
return tg300_genMML( sqr, bufSiz, buf, 0x000009, 1, dat );
}
# 13 "tg300me.c"
int exTG300_chorusType( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
char dat[32];
int v;
if ( argc != 1 )
{
_ERR: MM_setErrMsg(sqr,"TG300 \"CHORUS TYPE\" error!");
return((-1));
}
v = atoi(argv[0]);
if ( v < 0 || v > 7 )
goto _ERR;
dat[0] = v;
return tg300_genMML( sqr, bufSiz, buf, 0x010000, 1, dat );
}
# 38 "tg300me.c"
int exTG300_variationType( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
char dat[32];
int v;
if ( argc != 1 )
{
_ERR: MM_setErrMsg(sqr,"TG300 \"VARIATION TYPE\" error!");
return((-1));
}
v = atoi(argv[0]);
if ( v < 0 || v > 0x19 )
goto _ERR;
dat[0] = v;
return tg300_genMML( sqr, bufSiz, buf, 0x010001, 1, dat );
}
# 63 "tg300me.c"
int exTG300_preVariationType( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
char dat[32];
int v;
if ( argc != 1 )
{
_ERR: MM_setErrMsg(sqr,"TG300 \"Pre-VARIATION TYPE\" error!");
return((-1));
}
v = atoi(argv[0]);
if ( v < 0 || v > 4 )
goto _ERR;
dat[0] = v;
return tg300_genMML( sqr, bufSiz, buf, 0x010002, 1, dat );
}
# 88 "tg300me.c"
int exTG300_preReverbType( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
char dat[32];
int v;
if ( argc != 1 )
{
_ERR: MM_setErrMsg(sqr,"TG300 \"Pre-REVERB TYPE\" error!");
return((-1));
}
v = atoi(argv[0]);
if ( v < 0 || v > 5 )
goto _ERR;
dat[0] = v;
return tg300_genMML( sqr, bufSiz, buf, 0x010003, 1, dat );
}
# 112 "tg300me.c"
int exTG300_reverbType( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
char dat[32];
int v;
if ( argc != 1 )
{
_ERR: MM_setErrMsg(sqr,"TG300 \"REVERB TYPE\" error!");
return((-1));
}
v = atoi(argv[0]);
if ( v < 0 || v > 0x0B )
goto _ERR;
dat[0] = v;
return tg300_genMML( sqr, bufSiz, buf, 0x010004, 1, dat );
}
# 142 "tg300me.c"
int exTG300_effectInput( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
char dat[32];
unsigned int adr, siz;
int rev, cho, var;
if ( argc < 2 )
{
_ERR: MM_setErrMsg(sqr,"TG300 \"Effect Input\" error!");
return((-1));
}
switch ( atoi(argv[0]) )
{
case 0:
if ( argc != 4 )
goto _ERR;
rev = atoi(argv[1]); if ( rev < 0 || rev > 127 ) goto _ERR;
cho = atoi(argv[2]); if ( cho < 0 || cho > 127 ) goto _ERR;
var = atoi(argv[3]); if ( var < 0 || var > 127 ) goto _ERR;
dat[0] = rev;
dat[1] = cho;
dat[2] = var;
adr = 0x010005;
siz = 3;
break;
case 1:
rev = atoi(argv[1]);
if ( rev < 0 || rev > 127 )
goto _ERR;
dat[0] = rev;
adr = 0x010005;
siz = 1;
break;
case 2:
cho = atoi(argv[1]);
if ( cho < 0 || cho > 127 )
goto _ERR;
dat[0] = cho;
adr = 0x010006;
siz = 1;
break;
case 3:
var = atoi(argv[1]);
if ( var < 0 || var > 127 )
goto _ERR;
dat[0] = var;
adr = 0x010007;
siz = 1;
break;
default:
goto _ERR;
}
return tg300_genMML( sqr, bufSiz, buf, adr, siz, dat );
}
# 208 "tg300me.c"
int exTG300_dryLevel( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
char dat[32];
int v;
if ( argc != 1 )
{
_ERR: MM_setErrMsg(sqr,"TG300 \"DRY level\" error!");
return((-1));
}
v = atoi(argv[0]);
if ( v < 0 || v > 127 )
goto _ERR;
dat[0] = v;
return tg300_genMML( sqr, bufSiz, buf, 0x010008, 1, dat );
}
# 238 "tg300me.c"
int exTG300_effectReturn( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
char dat[32];
unsigned int adr, siz;
int rev, cho, var;
if ( argc < 2 )
{
_ERR: MM_setErrMsg(sqr,"TG300 \"Effect Return\" error!");
return((-1));
}
switch ( atoi(argv[0]) )
{
case 0:
if ( argc != 4 )
goto _ERR;
rev = atoi(argv[1]); if ( rev < 0 || rev > 127 ) goto _ERR;
cho = atoi(argv[2]); if ( cho < 0 || cho > 127 ) goto _ERR;
var = atoi(argv[3]); if ( var < 0 || var > 127 ) goto _ERR;
dat[0] = rev;
dat[1] = cho;
dat[2] = var;
adr = 0x010009;
siz = 3;
break;
case 1:
rev = atoi(argv[1]);
if ( rev < 0 || rev > 127 )
goto _ERR;
dat[0] = rev;
adr = 0x010009;
siz = 1;
break;
case 2:
cho = atoi(argv[1]);
if ( cho < 0 || cho > 127 )
goto _ERR;
dat[0] = cho;
adr = 0x01000A;
siz = 1;
break;
case 3:
var = atoi(argv[1]);
if ( var < 0 || var > 127 )
goto _ERR;
dat[0] = var;
adr = 0x01000B;
siz =1;
break;
default:
goto _ERR;
}
return tg300_genMML( sqr, bufSiz, buf, adr, siz, dat );
}
# 310 "tg300me.c"
int exTG300_effectSend( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
char dat[32];
unsigned int adr, siz;
int var2cho, var2rev, cho2rev;
if ( argc < 2 )
{
_ERR: MM_setErrMsg(sqr,"TG300 \"Effect Send\" error!");
return((-1));
}
switch ( atoi(argv[0]) )
{
case 0:
if ( argc != 4 )
goto _ERR;
var2cho = atoi(argv[1]); if ( var2cho < 0 || var2cho > 127 ) goto _ERR;
var2rev = atoi(argv[2]); if ( var2rev < 0 || var2rev > 127 ) goto _ERR;
cho2rev = atoi(argv[3]); if ( cho2rev < 0 || cho2rev > 127 ) goto _ERR;
dat[0] = var2cho;
dat[1] = var2rev;
dat[2] = cho2rev;
adr = 0x01000C;
siz = 3;
break;
case 1:
var2cho = atoi(argv[1]);
if ( var2cho < 0 || var2cho > 127 )
goto _ERR;
dat[0] = var2cho;
adr = 0x01000C;
siz = 1;
break;
case 2:
var2rev = atoi(argv[1]);
if ( var2rev < 0 || var2rev > 127 )
goto _ERR;
dat[0] = var2rev;
adr = 0x01000D;
siz = 1;
break;
case 3:
cho2rev = atoi(argv[1]);
if ( cho2rev < 0 || cho2rev > 127 )
goto _ERR;
dat[0] = cho2rev;
adr = 0x01000E;
siz = 1;
break;
default:
goto _ERR;
}
return tg300_genMML( sqr, bufSiz, buf, adr, siz, dat );
}
# 379 "tg300me.c"
int exTG300_choParam( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
char dat[16];
unsigned int adr, siz;
int typ, v, i;
if ( argc < 2 )
{
_ERR: MM_setErrMsg(sqr,"TG300 \"CHORUS Parameter\" error!");
return((-1));
}
typ = atoi(argv[0]);
if ( typ < 0 || typ > 10 )
goto _ERR;
if ( typ == 0 )
{
if ( argc != 11 )
goto _ERR;
for ( i = 0; i < 10; ++i )
{
v = atoi(argv[i+1]);
if ( v < 0 || v > 0x7F )
goto _ERR;
dat[i] = v;
}
adr = 0x01000F;
siz = 10;
} else
{
if ( argc != 2 )
goto _ERR;
v = atoi(argv[i+1]);
if ( v < 0 || v > 0x7F )
goto _ERR;
dat[0] = v;
adr = 0x01000F + typ - 1;
siz = 1;
}
return tg300_genMML( sqr, bufSiz, buf, adr, siz, dat );
}
# 435 "tg300me.c"
int exTG300_varParam( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
char dat[32];
unsigned int adr, siz;
int typ, v, i;
if ( argc < 3 )
{
_ERR: MM_setErrMsg(sqr,"TG300 \"VARIATION Parameter\" error!");
return((-1));
}
typ = atoi(argv[0]);
if ( typ < 0 || typ > 10 )
goto _ERR;
if ( typ == 0 )
{
if ( argc != 21 )
goto _ERR;
for ( i = 0; i < 5; ++i )
{
v = atoi(argv[i*2+1]); if ( v < 0 || v > 0x7F ) goto _ERR;
dat[i*2 ] = v;
v = atoi(argv[i*2+2]); if ( v < 0 || v > 0x7F ) goto _ERR;
dat[i*2+1] = v;
}
for ( i = 0; i < 5; ++i )
{
v = atoi(argv[11+i]); if ( v < 0 || v > 0x7F ) goto _ERR;
dat[10+i] = v;
}
adr = 0x010019;
siz = 15;
} else
{
if ( typ <= 5 )
{
if ( argc != 3 )
goto _ERR;
v = atoi(argv[1]); if ( v < 0 || v > 0x7F ) goto _ERR;
dat[0] = v;
v = atoi(argv[2]); if ( v < 0 || v > 0x7F ) goto _ERR;
dat[1] = v;
adr = 0x010019 + (typ - 1)*2;
siz = 2;
} else
{
if ( argc != 2 )
goto _ERR;
v = atoi(argv[1]); if ( v < 0 || v > 0x7F ) goto _ERR;
dat[0] = v;
adr = 0x010023 + typ - 6;
siz = 1;
}
}
return tg300_genMML( sqr, bufSiz, buf, adr, siz, dat );
}
# 503 "tg300me.c"
int exTG300_preVarParam( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
char dat[16];
unsigned int adr, siz;
int typ, v, i;
if ( argc < 2 )
{
_ERR: MM_setErrMsg(sqr,"TG300 \"Pre-VARIATION Parameter\" error!");
return((-1));
}
typ = atoi(argv[0]);
if ( typ < 0 || typ > 8 )
goto _ERR;
if ( typ == 0 )
{
if ( argc != 9 )
goto _ERR;
for ( i = 0; i < 8; ++i )
{
v = atoi(argv[i+1]);
if ( v < 0 || v > 0x7F )
goto _ERR;
dat[i] = v;
}
adr = 0x010028;
siz = 8;
} else
{
if ( argc != 2 )
goto _ERR;
v = atoi(argv[1]);
if ( v < 0 || v > 0x7F )
goto _ERR;
dat[0] = v;
adr = 0x010028 + typ - 1;
siz = 1;
}
return tg300_genMML( sqr, bufSiz, buf, adr, siz, dat );
}
# 554 "tg300me.c"
int exTG300_preRevParam( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
char dat[16];
unsigned int adr, siz;
int typ, v, i;
if ( argc < 2 )
{
_ERR: MM_setErrMsg(sqr,"TG300 \"Pre-REVERB Parameter\" error!");
return((-1));
}
typ = atoi(argv[0]);
if ( typ < 0 || typ > 9 )
goto _ERR;
if ( typ == 0 )
{
if ( argc != 10 )
goto _ERR;
for ( i = 0; i < 9; ++i )
{
v = atoi(argv[i+1]);
if ( v < 0 || v > 0x7F )
goto _ERR;
dat[i] = v;
}
adr = 0x010032;
siz = 8;
} else
{
if ( argc != 2 )
goto _ERR;
v = atoi(argv[i+1]);
if ( v < 0 || v > 0x7F )
goto _ERR;
dat[0] = v;
adr = 0x010032 + typ - 1;
siz = 1;
}
return tg300_genMML( sqr, bufSiz, buf, adr, siz, dat );
}
# 605 "tg300me.c"
int exTG300_revParam( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
char dat[16];
unsigned int adr, siz;
int typ, v, i;
if ( argc < 2 )
{
_ERR: MM_setErrMsg(sqr,"TG300 \"REVERB Parameter\" error!");
return((-1));
}
typ = atoi(argv[0]);
if ( typ < 0 || typ > 10 )
goto _ERR;
if ( typ == 0 )
{
if ( argc != 11 )
goto _ERR;
for ( i = 0; i < 10; ++i )
{
v = atoi(argv[i+1]);
if ( v < 0 || v > 0x7F )
goto _ERR;
dat[i] = v;
}
adr = 0x01003C;
siz = 10;
} else
{
if ( argc != 2 )
goto _ERR;
v = atoi(argv[i+1]);
if ( v < 0 || v > 0x7F )
goto _ERR;
dat[0] = v;
adr = 0x01003C + typ - 1;
siz = 1;
}
return tg300_genMML( sqr, bufSiz, buf, adr, siz, dat );
}
# 5 "tg300mp.c"
int Tg300partAdrOfs[16] =
{
0x100,0x200,0x300,0x400,0x500,0x600,0x700,0x800,0x900,0x000,0xA00,0xB00,0xC00,0xD00,0xE00,0xF00
};
int tg300_getPart( char *s )
{
int part;
part = atoi(s) - 1;
if ( part < 0 || part > 15 )
return (-1);
return (part);
}
# 27 "tg300mp.c"
int exTG300_elementReserve( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
char dat[4];
int part, v;
if ( argc != 2 )
{
_ERR: MM_setErrMsg(sqr,"TG300 \"ELEMENT RESERVE\" error!");
return((-1));
}
if ( (part = tg300_getPart(argv[0])) < 0 )
goto _ERR;
v = atoi(argv[1]);
if ( v < 0 || v > 32 )
goto _ERR;
dat[0] = v;
return tg300_genMML( sqr, bufSiz, buf, 0x020000+Tg300partAdrOfs[part], 1, dat );
}
# 54 "tg300mp.c"
int exTG300_bank( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
char dat[4];
int part, msb, lsb;
if ( argc != 3 )
{
_ERR: MM_setErrMsg(sqr,"TG300 \"BANK SELECT\" error!");
return((-1));
}
if ( (part = tg300_getPart(argv[0])) < 0 )
goto _ERR;
msb = atoi(argv[1]); if ( msb < 0 || msb > 0x7F ) goto _ERR;
lsb = atoi(argv[2]); if ( lsb < 0 || lsb > 0x7F ) goto _ERR;
dat[0] = msb;
dat[1] = lsb;
return tg300_genMML( sqr, bufSiz, buf, 0x020001+Tg300partAdrOfs[part], 2, dat );
}
# 82 "tg300mp.c"
int exTG300_programNo( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
char dat[4];
int part, v;
if ( argc != 2 )
{
_ERR: MM_setErrMsg(sqr,"TG300 \"PROGRAM NUMBER\" error!");
return((-1));
}
if ( (part = tg300_getPart(argv[0])) < 0 )
goto _ERR;
v = atoi(argv[1]) - 1;
if ( v < 0 || v > 127 )
goto _ERR;
dat[0] = v;
return tg300_genMML( sqr, bufSiz, buf, 0x020003+Tg300partAdrOfs[part], 2, dat );
}
# 109 "tg300mp.c"
int exTG300_rcvChannel( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
char dat[4];
int part, v;
if ( argc != 2 )
{
_ERR: MM_setErrMsg(sqr,"TG300 \"Rcv CHANNEL\" error!");
return((-1));
}
if ( (part = tg300_getPart(argv[0])) < 0 )
goto _ERR;
v = atoi(argv[1]);
if ( v == 0 )
v = 0x10;
else
--v;
if ( v < 0 || v > 16 )
goto _ERR;
dat[0] = v;
return tg300_genMML( sqr, bufSiz, buf, 0x020004+Tg300partAdrOfs[part], 1, dat );
}
# 141 "tg300mp.c"
int exTG300_monoPolyMode( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
char dat[4];
int part, v;
if ( argc != 2 )
{
_ERR: MM_setErrMsg(sqr,"TG300 \"MONO/POLY MODE\" error!");
return((-1));
}
if ( (part = tg300_getPart(argv[0])) < 0 )
goto _ERR;
v = atoi(argv[1]);
if ( v < 0 || v > 1 )
goto _ERR;
dat[0] = v;
return tg300_genMML( sqr, bufSiz, buf, 0x020015+Tg300partAdrOfs[part], 1, dat );
}
# 170 "tg300mp.c"
int exTG300_keyAssign( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
char dat[4];
int part, v;
if ( argc != 2 )
{
_ERR: MM_setErrMsg(sqr,"TG300 \"SAME NOTE NUMBER KEY ON ASSIGN\" error!");
return((-1));
}
if ( (part = tg300_getPart(argv[0])) < 0 )
goto _ERR;
v = atoi(argv[1]);
if ( v < 0 || v > 2 )
goto _ERR;
dat[0] = v;
return tg300_genMML( sqr, bufSiz, buf, 0x020016+Tg300partAdrOfs[part], 1, dat );
}
# 198 "tg300mp.c"
int exTG300_partMode( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
char dat[4];
int part, v;
if ( argc != 2 )
{
_ERR: MM_setErrMsg(sqr,"TG300 \"PART MODE\" error!");
return((-1));
}
if ( (part = tg300_getPart(argv[0])) < 0 )
goto _ERR;
v = atoi(argv[1]);
if ( v < 0 || v > 1 )
goto _ERR;
dat[0] = v;
return tg300_genMML( sqr, bufSiz, buf, 0x020017+Tg300partAdrOfs[part], 1, dat );
}
# 225 "tg300mp.c"
int exTG300_noteShift( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
char dat[4];
int part, v;
if ( argc != 2 )
{
_ERR: MM_setErrMsg(sqr,"TG300 \"NOTE SHIFT\" error!");
return((-1));
}
if ( (part = tg300_getPart(argv[0])) < 0 )
goto _ERR;
v = atoi(argv[1]) + 0x40;
if ( v < 0x28 || v > 0x58 )
goto _ERR;
dat[0] = v;
return tg300_genMML( sqr, bufSiz, buf, 0x020018+Tg300partAdrOfs[part], 1, dat );
}
# 252 "tg300mp.c"
int exTG300_detune( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
char dat[4];
int part, v;
if ( argc != 2 )
{
_ERR: MM_setErrMsg(sqr,"TG300 \"DETUNE\" error!");
return((-1));
}
if ( (part = tg300_getPart(argv[0])) < 0 )
goto _ERR;
v = atoi(argv[1]) + 0x80;
if ( v < 0x00 || v > 0xFF )
goto _ERR;
dat[0] = (v >> 4) & 0x0F;
dat[1] = v & 0x0F;
return tg300_genMML( sqr, bufSiz, buf, 0x020019+Tg300partAdrOfs[part], 2, dat );
}
# 280 "tg300mp.c"
int exTG300_volume( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
char dat[4];
int part, v;
if ( argc != 2 )
{
_ERR: MM_setErrMsg(sqr,"TG300 \"VOLUME\" error!");
return((-1));
}
if ( (part = tg300_getPart(argv[0])) < 0 )
goto _ERR;
v = atoi(argv[1]);
if ( v < 0 || v > 0x7F )
goto _ERR;
dat[0] = v;
return tg300_genMML( sqr, bufSiz, buf, 0x02001B+Tg300partAdrOfs[part], 1, dat );
}
# 308 "tg300mp.c"
int exTG300_velSensDepth( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
char dat[4];
int part, v;
if ( argc != 2 )
{
_ERR: MM_setErrMsg(sqr,"TG300 \"VELOCITY SENSE DEPTH\" error!");
return((-1));
}
if ( (part = tg300_getPart(argv[0])) < 0 )
goto _ERR;
v = atoi(argv[1]);
if ( v < 0 || v > 0x7F )
goto _ERR;
dat[0] = v;
return tg300_genMML( sqr, bufSiz, buf, 0x02001C+Tg300partAdrOfs[part], 1, dat );
}
# 335 "tg300mp.c"
int exTG300_velSensOffst( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
char dat[4];
int part, v;
if ( argc != 2 )
{
_ERR: MM_setErrMsg(sqr,"TG300 \"VELOCITY SENSE OFFSET\" error!");
return((-1));
}
if ( (part = tg300_getPart(argv[0])) < 0 )
goto _ERR;
v = atoi(argv[1]);
if ( v < 0 || v > 0x7F )
goto _ERR;
dat[0] = v;
return tg300_genMML( sqr, bufSiz, buf, 0x02001D+Tg300partAdrOfs[part], 1, dat );
}
# 362 "tg300mp.c"
int exTG300_pan( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
char dat[4];
int part, v;
if ( argc != 2 )
{
_ERR: MM_setErrMsg(sqr,"TG300 \"PAN\" error!");
return((-1));
}
if ( (part = tg300_getPart(argv[0])) < 0 )
goto _ERR;
if ( strcmpi(argv[1],"rnd") == 0 )
v = 0;
else
{
v = atoi(argv[1]);
if ( v < -63 || v > 63 )
goto _ERR;
v += 64;
}
dat[0] = v;
return tg300_genMML( sqr, bufSiz, buf, 0x02001E+Tg300partAdrOfs[part], 1, dat );
}
# 400 "tg300mp.c"
int exTG300_mwControl( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
char dat[8];
int part, pitch, filter, amp, pmod, fmod;
if ( argc != 6 )
{
_ERR: MM_setErrMsg(sqr,"TG300 \"MW CONTROL\" error!");
return((-1));
}
if ( (part = tg300_getPart(argv[0])) < 0 )
goto _ERR;
pitch = atoi(argv[1]) + 0x40;
filter = atoi(argv[2]) + 0x40;
amp = atoi(argv[3]) + 0x40;
pmod = atoi(argv[4]);
fmod = atoi(argv[5]);
if ( pitch < 0x28 || pitch > 0x58 || filter < 0 || filter > 0x7F
|| amp < 0 || amp > 0x7F || pmod < 0 || pmod > 0x7F || fmod < 0 || fmod > 0x7F )
goto _ERR;
dat[0] = pitch;
dat[1] = filter;
dat[2] = amp;
dat[3] = pmod;
dat[4] = fmod;
return tg300_genMML( sqr, bufSiz, buf, 0x02003B+Tg300partAdrOfs[part], 5, dat );
}
# 441 "tg300mp.c"
int exTG300_bendControl( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
char dat[8];
int part, pitch, filter, amp, pmod, fmod;
if ( argc != 6 )
{
_ERR: MM_setErrMsg(sqr,"TG300 \"BEND CONTROL\" error!");
return((-1));
}
if ( (part = tg300_getPart(argv[0])) < 0 )
goto _ERR;
pitch = atoi(argv[1]) + 0x40;
filter = atoi(argv[2]) + 0x40;
amp = atoi(argv[3]) + 0x40;
pmod = atoi(argv[4]);
fmod = atoi(argv[5]);
if ( pitch < 0x28 || pitch > 0x58 || filter < 0 || filter > 0x7F
|| amp < 0 || amp > 0x7F || pmod < 0 || pmod > 0x7F || fmod < 0 || fmod > 0x7F )
goto _ERR;
dat[0] = pitch;
dat[1] = filter;
dat[2] = amp;
dat[3] = pmod;
dat[4] = fmod;
return tg300_genMML( sqr, bufSiz, buf, 0x020041+Tg300partAdrOfs[part], 5, dat );
}
# 481 "tg300mp.c"
int exTG300_catControl( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
char dat[8];
int part, pitch, filter, amp, pmod, fmod;
if ( argc != 6 )
{
_ERR: MM_setErrMsg(sqr,"TG300 \"CAT CONTROL\" error!");
return((-1));
}
if ( (part = tg300_getPart(argv[0])) < 0 )
goto _ERR;
pitch = atoi(argv[1]) + 0x40;
filter = atoi(argv[2]) + 0x40;
amp = atoi(argv[3]) + 0x40;
pmod = atoi(argv[4]);
fmod = atoi(argv[5]);
if ( pitch < 0x28 || pitch > 0x58 || filter < 0 || filter > 0x7F
|| amp < 0 || amp > 0x7F || pmod < 0 || pmod > 0x7F || fmod < 0 || fmod > 0x7F )
goto _ERR;
dat[0] = pitch;
dat[1] = filter;
dat[2] = amp;
dat[3] = pmod;
dat[4] = fmod;
return tg300_genMML( sqr, bufSiz, buf, 0x020047+Tg300partAdrOfs[part], 5, dat );
}
# 521 "tg300mp.c"
int exTG300_patControl( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
char dat[8];
int part, pitch, filter, amp, pmod, fmod;
if ( argc != 6 )
{
_ERR: MM_setErrMsg(sqr,"TG300 \"PAT CONTROL\" error!");
return((-1));
}
if ( (part = tg300_getPart(argv[0])) < 0 )
goto _ERR;
pitch = atoi(argv[1]) + 0x40;
filter = atoi(argv[2]) + 0x40;
amp = atoi(argv[3]) + 0x40;
pmod = atoi(argv[4]);
fmod = atoi(argv[5]);
if ( pitch < 0x28 || pitch > 0x58 || filter < 0 || filter > 0x7F
|| amp < 0 || amp > 0x7F || pmod < 0 || pmod > 0x7F || fmod < 0 || fmod > 0x7F )
goto _ERR;
dat[0] = pitch;
dat[1] = filter;
dat[2] = amp;
dat[3] = pmod;
dat[4] = fmod;
return tg300_genMML( sqr, bufSiz, buf, 0x02004D+Tg300partAdrOfs[part], 5, dat );
}
# 561 "tg300mp.c"
int exTG300_ac1Control( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
char dat[8];
int part, pitch, filter, amp, pmod, fmod;
if ( argc != 6 )
{
_ERR: MM_setErrMsg(sqr,"TG300 \"AC1 CONTROL\" error!");
return((-1));
}
if ( (part = tg300_getPart(argv[0])) < 0 )
goto _ERR;
pitch = atoi(argv[1]) + 0x40;
filter = atoi(argv[2]) + 0x40;
amp = atoi(argv[3]) + 0x40;
pmod = atoi(argv[4]);
fmod = atoi(argv[5]);
if ( pitch < 0x28 || pitch > 0x58 || filter < 0 || filter > 0x7F
|| amp < 0 || amp > 0x7F || pmod < 0 || pmod > 0x7F || fmod < 0 || fmod > 0x7F )
goto _ERR;
dat[0] = pitch;
dat[1] = filter;
dat[2] = amp;
dat[3] = pmod;
dat[4] = fmod;
return tg300_genMML( sqr, bufSiz, buf, 0x020053+Tg300partAdrOfs[part], 5, dat );
}
# 601 "tg300mp.c"
int exTG300_ac2Control( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
char dat[8];
int part, pitch, filter, amp, pmod, fmod;
if ( argc != 6 )
{
_ERR: MM_setErrMsg(sqr,"TG300 \"AC2 CONTROL\" error!");
return((-1));
}
if ( (part = tg300_getPart(argv[0])) < 0 )
goto _ERR;
pitch = atoi(argv[1]) + 0x40;
filter = atoi(argv[2]) + 0x40;
amp = atoi(argv[3]) + 0x40;
pmod = atoi(argv[4]);
fmod = atoi(argv[5]);
if ( pitch < 0x28 || pitch > 0x58 || filter < 0 || filter > 0x7F
|| amp < 0 || amp > 0x7F || pmod < 0 || pmod > 0x7F || fmod < 0 || fmod > 0x7F )
goto _ERR;
dat[0] = pitch;
dat[1] = filter;
dat[2] = amp;
dat[3] = pmod;
dat[4] = fmod;
return tg300_genMML( sqr, bufSiz, buf, 0x020059+Tg300partAdrOfs[part], 5, dat );
}
# 5 "tg300ds.c"
int Tg300drumBlockOfs[16] =
{
0x10000,0x20000,0x30000,0x40000,0x50000,0x60000,0x70000,0x80000,
0x90000,0x00000,0xA0000,0xB0000,0xC0000,0xD0000,0xE0000,0xF0000
};
# 38 "tg300ds.c"
int exTG300_drumSetup( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
char dat[20];
int part, note;
int pitch, fine, level, grp, pan, rev, cho, kasn;
int rxOff, rxOn, freq, reso, atak, dc1, dc2, var;
if ( argc != 18 )
{
_ERR: MM_setErrMsg(sqr,"TG300 \"DRUM SETUP PARAMETER\" error!");
return((-1));
}
if ( (part = tg300_getPart(argv[0])) < 0 )
goto _ERR;
note = atoi(argv[1]);
if ( note < 0x1B || note > 0x58 )
goto _ERR;
pitch = atoi(argv[ 2]);
fine = atoi(argv[ 3]) + 0x40;
level = atoi(argv[ 4]);
if ( strcmpi( argv[ 5],"rnd") == 0 )
pan = 0;
else
pan = atoi(argv[ 5]) + 0x40;
rev = atoi(argv[ 6]);
cho = atoi(argv[ 7]);
var = atoi(argv[ 8]);
freq = atoi(argv[ 9]);
reso = atoi(argv[10]);
grp = atoi(argv[11]);
kasn = atoi(argv[12]);
rxOn = atoi(argv[13]);
rxOff = atoi(argv[14]);
atak = atoi(argv[15]);
dc1 = atoi(argv[16]);
dc2 = atoi(argv[17]);
dat[ 0] = pitch;
dat[ 1] = fine;
dat[ 2] = level;
dat[ 3] = grp;
dat[ 4] = pan;
dat[ 5] = rev;
dat[ 6] = cho;
dat[ 7] = kasn;
dat[ 8] = rxOff;
dat[ 9] = rxOn;
dat[10] = freq;
dat[11] = reso;
dat[12] = atak;
dat[13] = dc2;
dat[14] = dc1;
dat[15] = var;
return tg300_genMML( sqr, bufSiz, buf, 0x100000+Tg300drumBlockOfs[part]+(note<<8), 16, dat );
}
# 5 "tg300vm.c"
int _tg300_readVoiceData( char *fp, char *common, char *e1buf, char *e2buf );
int my_isxdigit(int ch);
# 19 "tg300vm.c"
int exTG300_voiceDataSet( char *sqr, unsigned int bufSiz, char *buf, int argc, char **argv )
{
int ret, vno, retsiz;
char *fp;
char *fn, excl[256], tmp[1024];
char common[16], e1buf[0x80], e2buf[0x80];
if ( argc != 2 )
{
_ERR: MM_setErrMsg(sqr,"TG300 \"VOICE DATA SET\" error!");
return((-1));
}
vno = atoi(argv[0]) - 1;
if ( vno < 0 || vno > 127 )
goto _ERR;
fn = argv[1];
if ( (fp = MM_fopen(sqr,fn,"r")) == (0) )
{
MM_setErrMsg(sqr,"TG300 \"VOICE DATA SET\" file open eror! (%s)", fn);
return((-1));
}
ret = _tg300_readVoiceData( fp, common, e1buf, e2buf );
fclose(fp);
if ( ret )
goto _ERR;
retsiz = 0;
ret = tg300_excl( excl, 0x040000 + (vno<<8), 0x0B, common);
ret = make_sysEx( tmp, ret, excl);
if ( ret >= bufSiz )
{
_STR_ERR:
MM_setErrMsg(sqr,_OUT_OF_STRING_SPACE);
return ((-1));
}
memcpy( buf, tmp, ret );
bufSiz -= ret;
buf += ret;
retsiz += ret;
ret = tg300_excl( excl, 0x050000 + (vno<<8), 0x50, e1buf);
ret = make_sysEx( tmp, ret, excl);
if ( ret >= bufSiz )
goto _STR_ERR;
memcpy( buf, tmp, ret );
bufSiz -= ret;
buf += ret;
retsiz += ret;
if ( common[1] == 1 )
{
ret = tg300_excl( excl, 0x060000 + (vno<<8), 0x50, e2buf);
ret = make_sysEx( tmp, ret, excl);
if ( ret >= bufSiz )
goto _STR_ERR;
memcpy( buf, tmp, ret );
bufSiz -= ret;
retsiz += ret;
buf += ret;
}
return (retsiz);
}
int _tg300_readVoiceData( char *fp, char *common, char *e1buf, char *e2buf )
{
char *s, buf[512];
int siz, ret, dat, c1, c2, len, mode;
unsigned adr;
char name[12];
char flgCommon, flgEle1, flgEle2;
ret = (0);
flgCommon = 0;
flgEle1 = 0;
flgEle2 = 0;
mode = -1;
while ( fgets(buf,512,fp) != (0) )
{
s = buf;
while(isspace(*(s))) ++(s);
if ( *s == '#' || *s == '\0' )
goto _NEXT_LINE;
if ( *s == '.' )
{
if ( mode >= 0 )
break;
++s;
while(isspace(*(s))) ++(s);
if ( strncmp(s,"voice",5) == 0 )
{
s += 5;
while(isspace(*(s))) ++(s);
strncpy( name, s, 8 ); name[8] = '\0';
mode = 0;
siz = 0;
} else if ( strncmp(s,"element",7) == 0 )
{
s += 7;
while(isspace(*(s))) ++(s);
mode = atoi(s);
if ( mode < 1 || mode > 2 )
{
ret = (-1);
break;
}
siz = 0;
}
} else if ( mode >= 0 )
{
for (;;)
{
if ( *s == '#' )
goto _NEXT_LINE;
c1 = my_isxdigit(s[0]);
c2 = my_isxdigit(s[1]);
if ( c1 >= 0 && c2 >= 0 )
{
s += 2;
dat = (c1<<4) | c2;
switch ( mode )
{
case 0:
common[siz++] = dat;
if ( siz == 3 )
{
len = strlen(name);
memcpy(&common[3]," ",8 );
memcpy(&common[3],name ,len);
flgCommon = 1;
mode = -1;
goto _NEXT_LINE;
}
break;
case 1:
e1buf[siz++] = dat;
if ( siz == 0x50 )
{
flgEle1 = 1;
mode = -1;
goto _NEXT_LINE;
}
break;
case 2:
e2buf[siz++] = dat;
if ( siz == 0x50 )
{
flgEle2 = 1;
mode = -1;
goto _NEXT_LINE;
}
break;
}
} else
++s;
}
}
_NEXT_LINE:
;
}
if ( ret != (0) )
return ((-1));
if ( flgCommon == 0 || flgEle1 == 0 )
return ((-1));
if ( common[1] == 1 && flgEle2 ==0 )
return ((-1));
return ((0));
}
int my_isxdigit(int ch)
{
if ( ch >= '0' && ch <= '9' )
return (ch - '0');
else if ( ch >= 'A' && ch <= 'Z' )
return (ch - 'A' + 10);
else if ( ch >= 'a' && ch <= 'z' )
return (ch - 'a' + 10);
else
return (-1);
}
# 18 "main.c"
int HE386_start( char *sqr )
{
GM_macroInit(sqr);
GS_macroInit(sqr);
SC55disp_macroInit( sqr );
# 30 "main.c"
TG300_macroInit(sqr);
return ((0));
}