Example #1
0
upload(unsigned char tonebyte[NPATCH][NCODPARAM])		/* send sets of patch data to synth */
{
	int n, i;

	clearsc();
	puts("        Upload - Send 64 patches in memory to synth.\n\n");
	puts("Make sure your synth has MIDI EXCL turned on.\n");
	puts("Also set the protect switch in back to the OFF position.\n");
	puts("   (Hitting the ESC key will terminate transmission)\n");

	putcmd(UART);		/* tell MPU401 to go into simple UART mode */

	for (i = 0; i < 10; i++){	/* make ten attempts to send data */
		puts("Hold DATA TRANSFER key down and press BULK LOAD key on synth.");

		n = getexcl();
		if (n == MIDRQF){
			clearsc();
			puts("Received request for data message, proceeding with load.");
			break;
		} else if (n == -2){	/* user hit ESC */
			putcmd(SYSRESET);
			return(1);
		} else {
			puts("*** Did not get request for data, try again. ****");
		}
	}
	if ( n != MIDRQF){
		writerr("Failed ten attempts to send. Aborting transmission.");
		putcmd(SYSRESET);
		return(1);
	}

	sendexcl(MIDWSF);
	n = getexcl();
	if (n != MIDACK)
		puts("Did not get ACK message after sending WSF.");

	n = sendtones(tonebyte);				/* send all patches */
	putcmd(SYSRESET);				/* put MPU401 back into normal mode */


	if (n == MIDACK)
		puts("Synth acknowledged data receipt was ok.");
	else if (n == -1){			/* user hit ESC key */
		writerr("Upload terminated. ");
		return(-1);
	} else {
		puts("Synth did not acknowledge final data receipt.");
		puts("Check data before saving, or resend.");
	}

	writerr(" ");
	return(1);
}
Example #2
0
void joyinput(int press,SDL_JoyButtonEvent jbutton)
{
  if( i_watch && press )
    SJC_Write("jbutton #%d",jbutton.button);

  if( kwik && press )
    kwikbind( INP_JBUT, jbutton.button );
  else
    putcmd( INP_JBUT,jbutton.button,press );
}
Example #3
0
void mouseinput(int press,SDL_MouseButtonEvent mbutton)
{
  if( i_watch && press )
    SJC_Write("mbutton #%d, x %d, y %d",mbutton.button,i_mousex,i_mousey);

  i_mousex = mbutton.x;
  i_mousey = mbutton.y;
  if( kwik )
    kwikbind(INP_MBUT,mbutton.button);
  else
    putcmd( INP_MBUT,mbutton.button,press );
}
Example #4
0
void kbinput(int press,SDL_keysym keysym)
{
  SDLKey sym = keysym.sym;
  SDLMod mod = keysym.mod;
  Uint16 unicode = keysym.unicode;

  if( i_watch && press )
    SJC_Write("key #%d, mod #%d, unicode #%d",sym,mod,unicode);

  if( (sym==SDLK_q && mod&(KMOD_CTRL|KMOD_META)) || (sym==SDLK_F4 && mod&KMOD_ALT) )
    command("exit");
  else if( press && (sym==SDLK_F11 || (sym==SDLK_f && mod&KMOD_META)) ) {
    if( !v_fullscreen )
      command("fullscreen");
    else
      command("window");
  } else if(press && sym==SDLK_BACKQUOTE)
    toggleconsole();
  else if(press && kwik)
    kwikbind( INP_KEYB, sym );
  else if(console_open) {
    if(!press)
      ; //nothing on key up
    else if(unicode>31 && unicode<127)
      SJC_Put((char)unicode);
    else if(sym==SDLK_RETURN) {
      if( SJC_Submit() )
        command(SJC.buf[1]);
    }
    else if(sym==SDLK_BACKSPACE || sym==SDLK_DELETE)
      SJC_Rub();
    else if(sym==SDLK_ESCAPE && console_open)
      toggleconsole();
  } else
    putcmd( INP_KEYB,sym,press );
}
Example #5
0
download(int param[], char name[],
		unsigned char tonebyte[NPATCH][NCODPARAM])		/* put patch data from synth->tonebyte */
{
	int n, m, i;

	clearsc();
	puts("      Download - Send all patches in ynths memory to computer.");
	puts(" ");
	puts(" ");
	puts("Make sure your synth has MIDI EXCL turned on.");
	puts("   (ESC to exit)");
	puts(" ");

	putcmd(UART);		/* tell MPU401 to go into simple UART mode */

	for (i = 0; i < 10; i++){	/* make ten attempts to get data */
		puts("Hold data transfer key down and press bulk dump key on synth.");

		sendexcl(MIDRQF);
		m = getexcl();
		if (m == MIDWSF){
			clearsc();
			puts("Sending acknowledge, proceding with load.");
			sendexcl(MIDACK);
			break;
		} else if (m == -2){	/* user hit ESC */
			putcmd(SYSRESET);
			return(-1);
		} else {
			puts("*** Failed load attemp, try again. ****");
		}
	}
	if (m != MIDWSF){
		writerr("Failed ten attempts to load. Aborting load procedure.");
		putcmd(SYSRESET);
		return(-1);
	}

	n = gettones(tonebyte);				/* get all patches */
	putcmd(SYSRESET);				/* put MPU401 back into normal mode */

	if (n == 0)
		puts("Data integrity check ok");
	else if (n == -2)				/* user hit ESC key */
		return(-1);
	else {
		puts("Checksum did not match, may be data error.");
		puts("Check data before saving, or resend");
	}

	puts(" ");
	puts("Patches received:");
	for (n = 0; n < 16; n++){
		m = n * 4;
		decode(m, param, name, tonebyte);
		fputs(name,stdout); fputs("   ",stdout);
		decode(m+1, param, name, tonebyte);
		fputs(name,stdout); fputs("   ",stdout);
		decode(m+2, param, name, tonebyte);
		fputs(name,stdout); fputs("   ",stdout);
		decode(m+3, param, name, tonebyte);
		fputs(name,stdout); fputc('\n',stdout);
	}
	writerr("Download complete.   ");
	return(1);
}
Example #6
0
int mod_command(char *q, char *args)
{
        if( q==NULL )
        {
                ;
        }
        else if( strcmp(q, "edit")==0 )
        {
                editmode = editmode ? 0 : 1;
                v_center = editmode ? 0 : 1;
                return 0;
        }
        else if( strcmp(q, "model")==0 )
        {
                setmodel = safe_atoi(tok(args, " ")); // FIXME: lame hack
                return 0;
        }
        else if( strcmp(q, "bounds")==0 || strcmp(q, "blocksize")==0 )
        {
                size_t n = 0;
                int x = safe_atoi(tok(args, " "));
                int y = safe_atoi(tok(args, " "));
                int z = safe_atoi(tok(args, " "));
                char chr = strcmp(q, "bounds")==0 ? 'b' : 'z';

                if( !x || !y || !z )
                {
                        context *co = fr[hotfr%maxframes].objs[mycontext].data; // FIXME is mycontext always set here?
                        if( chr == 'b' )
                                echo("The current bounds are (X,Y,Z): %d %d %d", co->x, co->y, co->z);
                        else
                                echo("The current blocksize is (X,Y,Z): %d %d %d", co->bsx, co->bsy, co->bsz);
                        return 0;
                }

                memset(&magic_c, 0, sizeof magic_c);
                packbytes(magic_c.data, chr, &n, 1);
                packbytes(magic_c.data,   x, &n, 4);
                packbytes(magic_c.data,   y, &n, 4);
                packbytes(magic_c.data,   z, &n, 4);
                magic_c.datasz = n;
                magic_c.flags |= CMDF_DATA;
                magic_c.cmd = CMDT_0CON; // console command
                putcmd(-1, -1, -1);
                return 0;
        }
        else if( strcmp(q, "tilespacing")==0 )
        {
                size_t n = 0;
                int tileuw = safe_atoi(tok(args, " "));
                int tileuh = safe_atoi(tok(args, " "));

                if( !tileuw || !tileuh )
                {
                        context *co = fr[hotfr%maxframes].objs[mycontext].data;
                        echo("The current tilespacing is (W,H): %d %d", co->tileuw, co->tileuh);
                        return 0;
                }

                memset(&magic_c, 0, sizeof magic_c);
                packbytes(magic_c.data,    't', &n, 1);
                packbytes(magic_c.data, tileuw, &n, 4);
                packbytes(magic_c.data, tileuh, &n, 4);
                magic_c.datasz = n;
                magic_c.flags |= CMDF_DATA;
                magic_c.cmd = CMDT_0CON;
                putcmd(-1, -1, -1);
                return 0;
        }
        else if( strcmp(q, "orthographic")==0 || strcmp(q, "dimetric")==0 )
        {
                size_t n = 0;
                memset(&magic_c, 0, sizeof magic_c);
                packbytes(magic_c.data, q[0], &n, 1);
                magic_c.datasz = n;
                magic_c.flags |= CMDF_DATA;
                magic_c.cmd = CMDT_0CON;
                putcmd(-1, -1, -1);
                return 0;
        }
        else if( strcmp(q, "resprite")==0 )
        {
                reload_sprites();
                renumber_sprites();
                echo("Was %d sprites, now %d sprites.", old_spr_count, spr_count);
                unload_sprites(old_sprites, old_spr_count);
                return 0;
        }

        return 1;
}
Example #7
0
void axisinput(SDL_JoyAxisEvent jaxis)
{
  static char **axdats = NULL;
  static int size = 0;
  static const char POS_ON  = 1;
  static const char NEG_ON  = 2;

  if( size<=jaxis.which ) //haven't seen a joystick this high before?
  {
    axdats = realloc(axdats,sizeof(*axdats)*(jaxis.which+1));
    memset(axdats+size,0,sizeof(*axdats)*(jaxis.which+1-size));
    size = jaxis.which+1;
  }
  if( !axdats[jaxis.which] ) //haven't seen this exact joystick before?
    axdats[jaxis.which] = calloc(256,sizeof(**axdats));
  char *stat = axdats[jaxis.which]+jaxis.axis;
  int val = jaxis.value;
  int ax = jaxis.axis;

  if( i_watch )
    SJC_Write("joystick #%d, axis #%d, stat %d, value %d",jaxis.which,ax,*stat,val);

  if( val> 3400 && !(*stat&POS_ON) ) { *stat|= POS_ON; kwik ? kwikbind(INP_JAXP,ax) : putcmd( INP_JAXP,ax,1 ); }
  if( val< 3000 &&  (*stat&POS_ON) ) { *stat&=~POS_ON;                                putcmd( INP_JAXP,ax,0 ); }
  if( val<-3400 && !(*stat&NEG_ON) ) { *stat|= NEG_ON; kwik ? kwikbind(INP_JAXN,ax) : putcmd( INP_JAXN,ax,1 ); }
  if( val>-3000 &&  (*stat&NEG_ON) ) { *stat&=~NEG_ON;                                putcmd( INP_JAXN,ax,0 ); }
}