home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Phoenix Heaven Sunny 2
/
APPARE2.BIN
/
oh_towns
/
taropyon
/
he386
/
ccisrc
/
gs_cc.c
< prev
next >
Wrap
Text File
|
1995-06-20
|
14KB
|
615 lines
/*************************************************************************
* GS controller
*************************************************************************/
/*************************************************************************
* Modulation control
*-------------------------------------------------------------------------
* (<part>,
* <PITCH>, <TVF CUTOFF>, <AMPLITUDE>,
* <LFO1 RATE>, <LFO1 PITCH DEPTH>, <LFO1 TVF DEPTH>, <LFO1 TVA DEPTH>
* <LFO2 RATE>, <LFO2 PITCH DEPTH>, <LFO2 TVF DEPTH>, <LFO2 TVA DEPTH>
*************************************************************************/
int exGs_mod( char *sqr, size_t 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(ERR);
}
if ( (part = gs_getpart_n(atoi(argv[0]))) < 0 )
goto _PARA_ERR;
/* PITCH */
v = atoi(argv[1]);
if ( v < -24 || v > 24 )
goto _PARA_ERR;
dat[0] = v + 0x40;
/* TVF CUTOFF */
v = atoi(argv[2]);
if ( v < -64 || v > 63 )
goto _PARA_ERR;
dat[1] = v + 0x40;
/* AMPLITUDE */
v = atoi(argv[3]);
if ( v < -64 || v > 63 )
goto _PARA_ERR;
dat[2] = v + 0x40;
/* LFO1 RATE */
v = atoi(argv[4]);
if ( v < -64 || v > 63 )
goto _PARA_ERR;
dat[3] = v + 0x40;
/* LFO1 PITCH DEPTH */
v = atoi(argv[5]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[4] = v;
/* LFO1 TVF DEPTH */
v = atoi(argv[6]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[5] = v;
/* LFO1 TVA DEPTH */
v = atoi(argv[7]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[6] = v;
/* LFO2 RATE */
v = atoi(argv[8]);
if ( v < -64 || v > 63 )
goto _PARA_ERR;
dat[7] = v + 0x40;
/* LFO2 PITCH DEPTH */
v = atoi(argv[9]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[8] = v;
/* LFO2 TVF DEPTH */
v = atoi(argv[10]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[9] = v;
/* LFO2 TVA DEPTH */
v = atoi(argv[11]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[10] = v;
return gs_genMML( sqr, bufSiz, buf, GS_PARTADR(part,0x402000), 11, dat );
}
/*************************************************************************
* Bend control
*-------------------------------------------------------------------------
* (<part>,
* <PITCH>, <TVF CUTOFF>, <AMPLITUDE>,
* <LFO1 RATE>, <LFO1 PITCH DEPTH>, <LFO1 TVF DEPTH>, <LFO1 TVA DEPTH>
* <LFO2 RATE>, <LFO2 PITCH DEPTH>, <LFO2 TVF DEPTH>, <LFO2 TVA DEPTH>
*************************************************************************/
int exGs_bend( char *sqr, size_t 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(ERR);
}
if ( (part = gs_getpart_n(atoi(argv[0]))) < 0 )
goto _PARA_ERR;
/* PITCH */
v = atoi(argv[1]);
if ( v < 0 || v > 24 )
goto _PARA_ERR;
dat[0] = v + 0x40;
/* TVF CUTOFF */
v = atoi(argv[2]);
if ( v < -64 || v > 63 )
goto _PARA_ERR;
dat[1] = v + 0x40;
/* AMPLITUDE */
v = atoi(argv[3]);
if ( v < -64 || v > 63 )
goto _PARA_ERR;
dat[2] = v + 0x40;
/* LFO1 RATE */
v = atoi(argv[4]);
if ( v < -64 || v > 63 )
goto _PARA_ERR;
dat[3] = v + 0x40;
/* LFO1 PITCH DEPTH */
v = atoi(argv[5]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[4] = v;
/* LFO1 TVF DEPTH */
v = atoi(argv[6]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[5] = v;
/* LFO1 TVA DEPTH */
v = atoi(argv[7]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[6] = v;
/* LFO2 RATE */
v = atoi(argv[8]);
if ( v < -64 || v > 63 )
goto _PARA_ERR;
dat[7] = v + 0x40;
/* LFO2 PITCH DEPTH */
v = atoi(argv[9]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[8] = v;
/* LFO2 TVF DEPTH */
v = atoi(argv[10]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[9] = v;
/* LFO2 TVA DEPTH */
v = atoi(argv[11]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[10] = v;
return gs_genMML( sqr, bufSiz, buf, GS_PARTADR(part,0x402010), 11, dat );
}
/*************************************************************************
* CAf control
*-------------------------------------------------------------------------
* (<part>,
* <PITCH>, <TVF CUTOFF>, <AMPLITUDE>,
* <LFO1 RATE>, <LFO1 PITCH DEPTH>, <LFO1 TVF DEPTH>, <LFO1 TVA DEPTH>
* <LFO2 RATE>, <LFO2 PITCH DEPTH>, <LFO2 TVF DEPTH>, <LFO2 TVA DEPTH>
*************************************************************************/
int exGs_caf( char *sqr, size_t 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(ERR);
}
if ( (part = gs_getpart_n(atoi(argv[0]))) < 0 )
goto _PARA_ERR;
/* PITCH */
v = atoi(argv[1]);
if ( v < -24 || v > 24 )
goto _PARA_ERR;
dat[0] = v + 0x40;
/* TVF CUTOFF */
v = atoi(argv[2]);
if ( v < -64 || v > 63 )
goto _PARA_ERR;
dat[1] = v + 0x40;
/* AMPLITUDE */
v = atoi(argv[3]);
if ( v < -64 || v > 63 )
goto _PARA_ERR;
dat[2] = v + 0x40;
/* LFO1 RATE */
v = atoi(argv[4]);
if ( v < -64 || v > 63 )
goto _PARA_ERR;
dat[3] = v + 0x40;
/* LFO1 PITCH DEPTH */
v = atoi(argv[5]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[4] = v;
/* LFO1 TVF DEPTH */
v = atoi(argv[6]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[5] = v;
/* LFO1 TVA DEPTH */
v = atoi(argv[7]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[6] = v;
/* LFO2 RATE */
v = atoi(argv[8]);
if ( v < -64 || v > 63 )
goto _PARA_ERR;
dat[7] = v + 0x40;
/* LFO2 PITCH DEPTH */
v = atoi(argv[9]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[8] = v;
/* LFO2 TVF DEPTH */
v = atoi(argv[10]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[9] = v;
/* LFO2 TVA DEPTH */
v = atoi(argv[11]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[10] = v;
return gs_genMML( sqr, bufSiz, buf, GS_PARTADR(part,0x402020), 11, dat );
}
/*************************************************************************
* PAf control
*-------------------------------------------------------------------------
* (<part>,
* <PITCH>, <TVF CUTOFF>, <AMPLITUDE>,
* <LFO1 RATE>, <LFO1 PITCH DEPTH>, <LFO1 TVF DEPTH>, <LFO1 TVA DEPTH>
* <LFO2 RATE>, <LFO2 PITCH DEPTH>, <LFO2 TVF DEPTH>, <LFO2 TVA DEPTH>
*************************************************************************/
int exGs_paf( char *sqr, size_t 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(ERR);
}
if ( (part = gs_getpart_n(atoi(argv[0]))) < 0 )
goto _PARA_ERR;
/* PITCH */
v = atoi(argv[1]);
if ( v < -24 || v > 24 )
goto _PARA_ERR;
dat[0] = v + 0x40;
/* TVF CUTOFF */
v = atoi(argv[2]);
if ( v < -64 || v > 63 )
goto _PARA_ERR;
dat[1] = v + 0x40;
/* AMPLITUDE */
v = atoi(argv[3]);
if ( v < -64 || v > 63 )
goto _PARA_ERR;
dat[2] = v + 0x40;
/* LFO1 RATE */
v = atoi(argv[4]);
if ( v < -64 || v > 63 )
goto _PARA_ERR;
dat[3] = v + 0x40;
/* LFO1 PITCH DEPTH */
v = atoi(argv[5]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[4] = v;
/* LFO1 TVF DEPTH */
v = atoi(argv[6]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[5] = v;
/* LFO1 TVA DEPTH */
v = atoi(argv[7]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[6] = v;
/* LFO2 RATE */
v = atoi(argv[8]);
if ( v < -64 || v > 63 )
goto _PARA_ERR;
dat[7] = v + 0x40;
/* LFO2 PITCH DEPTH */
v = atoi(argv[9]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[8] = v;
/* LFO2 TVF DEPTH */
v = atoi(argv[10]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[9] = v;
/* LFO2 TVA DEPTH */
v = atoi(argv[11]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[10] = v;
return gs_genMML( sqr, bufSiz, buf, GS_PARTADR(part,0x402030), 11, dat );
}
/*************************************************************************
* CC1 controller number
*-------------------------------------------------------------------------
* (<part>,<number>)
*************************************************************************/
int exGs_cc1number( char *sqr, size_t 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(ERR);
}
if ( (part = gs_getpart_n(atoi(argv[0]))) < 0 )
goto _PARA_ERR;
dat[0] = atoi(argv[1]);
return gs_genMML( sqr, bufSiz, buf, GS_PARTADR(part,0x40101F), 1, dat );
}
/*************************************************************************
* CC2 controller number
*-------------------------------------------------------------------------
* (<part>,<number>)
*************************************************************************/
int exGs_cc2number( char *sqr, size_t 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(ERR);
}
if ( (part = gs_getpart_n(atoi(argv[0]))) < 0 )
goto _PARA_ERR;
dat[0] = atoi(argv[1]);
return gs_genMML( sqr, bufSiz, buf, GS_PARTADR(part,0x401020), 1, dat );
}
/*************************************************************************
* CC1 control
*-------------------------------------------------------------------------
* (<part>,
* <PITCH>, <TVF CUTOFF>, <AMPLITUDE>,
* <LFO1 RATE>, <LFO1 PITCH DEPTH>, <LFO1 TVF DEPTH>, <LFO1 TVA DEPTH>
* <LFO2 RATE>, <LFO2 PITCH DEPTH>, <LFO2 TVF DEPTH>, <LFO2 TVA DEPTH>
*************************************************************************/
int exGs_cc1control( char *sqr, size_t 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(ERR);
}
if ( (part = gs_getpart_n(atoi(argv[0]))) < 0 )
goto _PARA_ERR;
/* PITCH */
v = atoi(argv[1]);
if ( v < -24 || v > 24 )
goto _PARA_ERR;
dat[0] = v + 0x40;
/* TVF CUTOFF */
v = atoi(argv[2]);
if ( v < -64 || v > 63 )
goto _PARA_ERR;
dat[1] = v + 0x40;
/* AMPLITUDE */
v = atoi(argv[3]);
if ( v < -64 || v > 63 )
goto _PARA_ERR;
dat[2] = v + 0x40;
/* LFO1 RATE */
v = atoi(argv[4]);
if ( v < -64 || v > 63 )
goto _PARA_ERR;
dat[3] = v + 0x40;
/* LFO1 PITCH DEPTH */
v = atoi(argv[5]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[4] = v;
/* LFO1 TVF DEPTH */
v = atoi(argv[6]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[5] = v;
/* LFO1 TVA DEPTH */
v = atoi(argv[7]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[6] = v;
/* LFO2 RATE */
v = atoi(argv[8]);
if ( v < -64 || v > 63 )
goto _PARA_ERR;
dat[7] = v + 0x40;
/* LFO2 PITCH DEPTH */
v = atoi(argv[9]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[8] = v;
/* LFO2 TVF DEPTH */
v = atoi(argv[10]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[9] = v;
/* LFO2 TVA DEPTH */
v = atoi(argv[11]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[10] = v;
return gs_genMML( sqr, bufSiz, buf, GS_PARTADR(part,0x402040), 11, dat );
}
/*************************************************************************
* CC2 control
*-------------------------------------------------------------------------
* (<part>,
* <PITCH>, <TVF CUTOFF>, <AMPLITUDE>,
* <LFO1 RATE>, <LFO1 PITCH DEPTH>, <LFO1 TVF DEPTH>, <LFO1 TVA DEPTH>
* <LFO2 RATE>, <LFO2 PITCH DEPTH>, <LFO2 TVF DEPTH>, <LFO2 TVA DEPTH>
*************************************************************************/
int exGs_cc2control( char *sqr, size_t 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(ERR);
}
if ( (part = gs_getpart_n(atoi(argv[0]))) < 0 )
goto _PARA_ERR;
/* PITCH */
v = atoi(argv[1]);
if ( v < -24 || v > 24 )
goto _PARA_ERR;
dat[0] = v + 0x40;
/* TVF CUTOFF */
v = atoi(argv[2]);
if ( v < -64 || v > 63 )
goto _PARA_ERR;
dat[1] = v + 0x40;
/* AMPLITUDE */
v = atoi(argv[3]);
if ( v < -64 || v > 63 )
goto _PARA_ERR;
dat[2] = v + 0x40;
/* LFO1 RATE */
v = atoi(argv[4]);
if ( v < -64 || v > 63 )
goto _PARA_ERR;
dat[3] = v + 0x40;
/* LFO1 PITCH DEPTH */
v = atoi(argv[5]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[4] = v;
/* LFO1 TVF DEPTH */
v = atoi(argv[6]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[5] = v;
/* LFO1 TVA DEPTH */
v = atoi(argv[7]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[6] = v;
/* LFO2 RATE */
v = atoi(argv[8]);
if ( v < -64 || v > 63 )
goto _PARA_ERR;
dat[7] = v + 0x40;
/* LFO2 PITCH DEPTH */
v = atoi(argv[9]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[8] = v;
/* LFO2 TVF DEPTH */
v = atoi(argv[10]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[9] = v;
/* LFO2 TVA DEPTH */
v = atoi(argv[11]);
if ( v < 0 || v > 127 )
goto _PARA_ERR;
dat[10] = v;
return gs_genMML( sqr, bufSiz, buf, GS_PARTADR(part,0x402050), 11, dat );
}