ntr_init(&ntr, gfmt, readmidi_set_track(trackno, 1), 64); 
ntr.tempo = current_tempo = 60000000 / init_tempo; ntr_init(&ntr, gfmt, readmidi_set_track(trackno, 1)); 
static int read_rcp_track(struct timidity_file *tf, int trackno, int gfmt){    int32 current_tempo;    int size;    int ch;    long last_point, cmdlen;    int key_offset;    struct RCPNoteTracer ntr;    struct    {	long start_at;		/* loop start time */	long loop_start;	/* loop start seek point */	int  count;		/* loop count */    } stack[MAX_STACK_DEPTH];    int sp;    int i, len;    uint8 sysex[MAX_EXCLUSIVE_LENGTH];    int roland_base_init = 0;    int roland_dev_init = 0;    int roland_base_addr0 = 0;    int roland_base_addr1 = 0;    int roland_device_id = 0x10;    int roland_model_id = 0x16;    int yamaha_base_init = 0;    int yamaha_dev_init = 0;    int yamaha_base_addr0 = 0;    int yamaha_base_addr1 = 0;    int yamaha_device_id = 0x10;	/* ??? */    int yamaha_model_id = 0x16;		/* ??? */    unsigned char cs;		/* check sum */    long same_measure = -1;	/* Meassure to stack pointer */    long track_top, data_top;    int time_offset;    char buff[64], *p;    int ret = 0;    /*     * Read Track Header     */    track_top = tf_tell(tf);    ctl->cmsg(CMSG_INFO, VERB_DEBUG_SILLY, "Track top: %d", track_top);    size = tf_getc(tf);    size |= (tf_getc(tf) << 8);    ctl->cmsg(CMSG_INFO, VERB_DEBUG, "Track size %d", size);    last_point = size + tf_tell(tf) - 2;    if(gfmt)    {	skip(tf, 2);	cmdlen = 6;    }    else	cmdlen = 4;    i = tf_getc(tf);		/* Track Number */    ctl->cmsg(CMSG_INFO, VERB_DEBUG, "Track number %d", i);    skip(tf, 1);		/* Rhythm */    if((ch = tf_getc(tf)) == 0xff) /* No playing */    {	tf_seek(tf, last_point, SEEK_SET);	return 0;    }    ctl->cmsg(CMSG_INFO, VERB_DEBUG, "Track channel %d", ch);    if(ch >= RCP_MAXCHANNELS)	ctl->cmsg(CMSG_WARNING, VERB_VERBOSE,		  "RCP: Invalid channel: %d", ch);    /* Key offset */    key_offset = tf_getc(tf);    ctl->cmsg(CMSG_INFO, VERB_DEBUG, "Key offset %d", key_offset);    if(key_offset > 64)	key_offset -= 128;    key_offset += play_bias;    /* Time offset */    time_offset = (int)(signed char)tf_getc(tf);    ctl->cmsg(CMSG_INFO, VERB_DEBUG, "Time offset %d", time_offset);    if(time_offset < -99 || 99 < time_offset)    {	ctl->cmsg(CMSG_WARNING, VERB_VERBOSE,		  "RCP: Invalid time offset: %d", time_offset);	if(time_offset < -99)	    time_offset = -99;	else	    time_offset = 99;    }    i = tf_getc(tf);		/* mode */    if(i == 1)    {	/* Mute */	tf_seek(tf, last_point, SEEK_SET);	return 0;    }    /* Comment */    tf_read(buff, 1, 36, tf);    buff[36] = '\0';    for(len = 35; len >= 0; len--)    {	if(buff[len] == ' ')	    buff[len] = '\0';	else if(buff[len] != '\0')	    break;    }    len = SAFE_CONVERT_LENGTH(len+1);    p = (char *)new_segment(&tmpbuffer, len);    code_convert(buff, p, len, NULL, NULL);    if(*p)	ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "RCP Track name: %s", p);    reuse_mblock(&tmpbuffer);    /*     * End of Track Header     */    sp = 0;    ntr_init(&ntr, gfmt, readmidi_set_track(trackno, 1), 64);    if(trackno == 0 && init_tempo != 120)	current_tempo = rcp_tempo_change(&ntr, 64, 0);    else	ntr->tempo = current_tempo = 60000000 / init_tempo;	if (trackno == 0) {		rcp_timesig_change(ntr_at(ntr));		rcp_keysig_change(ntr_at(ntr), init_keysig);	}    ntr_incr(&ntr, time_offset);    data_top = tf_tell(tf);    while(last_point >= tf_tell(tf) + cmdlen)    {	int cmd, a, b, step, gate;	int st1, gt1, st2, gt2;	if(readmidi_error_flag)	{	    ret = -1;	    break;	}	if(!gfmt)	{	    cmd = tf_getc(tf);	    step = tf_getc(tf);	    gate = a = tf_getc(tf);	    if((b = tf_getc(tf)) == EOF)	    {		ret = -1;		break;	    }	    st1 = gt1 = st2 = gt2 = 0;	    if(ctl->verbosity >= VERB_DEBUG_SILLY)	    {		ctl->cmsg(CMSG_INFO, VERB_DEBUG_SILLY,			  "[%d] %d %s: ch=%d step=%d a=%d b=%d sp=%d",			  tf_tell(tf) - 4 - track_top,			  ntr_at(ntr), rcp_cmd_name(cmd), ch, step, a, b, sp);	    }	}	else	{	    cmd = tf_getc(tf);	    b = tf_getc(tf);	    st1 = tf_getc(tf);	    st2 = tf_getc(tf);	    a = gt1 = tf_getc(tf);	    if((gt2 = tf_getc(tf)) == EOF)	    {		ret = -1;		break;	    }	    step = st1 + (st2 << 8);	    gate = gt1 + (gt2 << 8);	    if(ctl->verbosity >= VERB_DEBUG_SILLY)	    {		ctl->cmsg(CMSG_INFO, VERB_DEBUG_SILLY,			  "[%d] %d %s: ch=%d step=%d gate=%d a=%d b=%d sp=%d",			  tf_tell(tf) - 6 - track_top,			  ntr_at(ntr), rcp_cmd_name(cmd), ch,			  step, gate, a, b, sp);	    }	}	if(cmd < 0x80)		/* Note event */	{	    if(gate > 0)	    {		int note = cmd + key_offset;		ntr_note_on(&ntr, ch, note & 0x7f, b, gate);	    }	    ntr_incr(&ntr, step);	    continue;	}	/* command */	switch(cmd)	{	  case 0x90:	/* User Exclusive 1 */	  case 0x91:	/* User Exclusive 2 */	  case 0x92:	/* User Exclusive 3 */	  case 0x93:	/* User Exclusive 4 */	  case 0x94:	/* User Exclusive 5 */	  case 0x95:	/* User Exclusive 6 */	  case 0x96:	/* User Exclusive 7 */	  case 0x97:	/* User Exclusive 8 */	    memcpy(sysex, user_exclusive_data[cmd - 0x90],		   USER_EXCLUSIVE_LENGTH);	    sysex[USER_EXCLUSIVE_LENGTH] = 0xf7;	    len = preprocess_sysex(sysex, ch, a, b);	    rcp_parse_sysex_event(ntr_at(ntr), sysex, len);	    ntr_incr(&ntr, step);	    break;	  case 0x98:	/* Channel Exclusive */	    len = 0;	    while(tf_getc(tf) == 0xf7 && len + 6 < sizeof(sysex))	    {		if(gfmt)		{		    if(tf_read(sysex + len, 1, 5, tf) != 5)		    {			ret = -1;			goto end_of_track;		    }		    len += 5;		}		else		{		    tf_getc(tf); /* 0x00 */		    if(tf_read(sysex + len, 1, 2, tf) != 2)		    {			ret = -1;			goto end_of_track;		    }		    len += 2;		}	    }	    tf_seek(tf, -1, SEEK_CUR);	    sysex[len] = 0xf7;	    len = preprocess_sysex(sysex, ch, a, b);	    rcp_parse_sysex_event(ntr_at(ntr), sysex, len);	    ntr_incr(&ntr, step);	    break;	  case 0xd0:	/* Yamaha base */	    a &= 0x7f;	    b &= 0x7f;	    yamaha_base_addr0 = a;	    yamaha_base_addr1 = b;	    yamaha_base_init = 1;	    ntr_incr(&ntr, step);	    break;	  case 0xd1:	/* Yamaha para */	    a &= 0x7f;	    b &= 0x7f;	    if(!yamaha_base_init)		ctl->cmsg(CMSG_WARNING, VERB_VERBOSE,			  "YamPara used before initializing YamBase");	    if(!yamaha_dev_init)		ctl->cmsg(CMSG_WARNING, VERB_VERBOSE,			  "YamPara used before initializing YamDev#");	    yamaha_base_init = yamaha_dev_init = 1;	    sysex[0] = 0x43;	    sysex[1] = yamaha_device_id;	    sysex[2] = yamaha_model_id;	    sysex[3] = 0x12;	    cs = 0;	    cs += sysex[4] = yamaha_base_addr0;	    cs += sysex[5] = yamaha_base_addr1;	    cs += sysex[6] = a;	    cs += sysex[7] = b;	    sysex[8] = 128 - (cs & 0x7f);	    sysex[9] = 0xf7;		rcp_parse_sysex_event(ntr_at(ntr), sysex, 10);	    ntr_incr(&ntr, step);	    break;	  case 0xd2:	/* Yamaha device */	    a &= 0x7f;	    b &= 0x7f;	    yamaha_device_id = a;	    yamaha_model_id = b;	    yamaha_dev_init = 1;	    ntr_incr(&ntr, step);	    break;	  case 0xd3:	/* XG para */	    /* ?? */	    a &= 0x7f;	    b &= 0x7f;	    sysex[0] = 0x43;	    sysex[1] = yamaha_device_id;	    sysex[2] = yamaha_model_id;	    sysex[3] = 0x12;	    cs = 0;	    cs += sysex[4] = yamaha_base_addr0;	    cs += sysex[5] = yamaha_base_addr1;	    cs += sysex[6] = a;	    cs += sysex[7] = b;	    sysex[8] = 128 - (cs & 0x7f);	    sysex[9] = 0xf7;		rcp_parse_sysex_event(ntr_at(ntr), sysex, 10);	    ntr_incr(&ntr, step);	    break;	  case 0xdd:	/* Roland base */	    a &= 0x7f;	    b &= 0x7f;	    roland_base_addr0 = a;	    roland_base_addr1 = b;	    roland_base_init = 1;	    ntr_incr(&ntr, step);	    break;	  case 0xde:	/* Roland para */	    a &= 0x7f;	    b &= 0x7f;	    if(!roland_base_init)		ctl->cmsg(CMSG_WARNING, VERB_VERBOSE,			  "RolPara used before initializing RolBase");	    if(!roland_dev_init)		ctl->cmsg(CMSG_WARNING, VERB_VERBOSE,			  "RolPara used before initializing RolDev#");	    roland_base_init = roland_dev_init = 1;	    sysex[0] = 0x41;	    sysex[1] = roland_device_id;	    sysex[2] = roland_model_id;	    sysex[3] = 0x12;	    cs = 0;	    cs += sysex[4] = roland_base_addr0;	    cs += sysex[5] = roland_base_addr1;	    cs += sysex[6] = a;	    cs += sysex[7] = b;	    sysex[8] = 128 - (cs & 0x7f);	    sysex[9] = 0xf7;		rcp_parse_sysex_event(ntr_at(ntr), sysex, 10);	    ntr_incr(&ntr, step);	    break;	  case 0xdf:	/* Roland device */	    a &= 0x7f;	    b &= 0x7f;	    roland_device_id = a;	    roland_model_id = b;	    roland_dev_init = 1;	    ntr_incr(&ntr, step);	    break;	  case 0xe1:	/* BnkLPrg */	    ctl->cmsg(CMSG_WARNING, VERB_VERBOSE,		      "BnkLPrg is not supported: 0x%02x 0x%02x", a, b);	    ntr_incr(&ntr, step);	    break;	  case 0xe2:	/* bank & program change */	    readmidi_add_ctl_event(ntr_at(ntr), ch, 0, b); /*Change MSB Bank*/	    MIDIEVENT(ntr_at(ntr), ME_PROGRAM, ch, a & 0x7f, 0);	    ntr_incr(&ntr, step);	    break;	  case 0xe5:	/* key scan */#if 0	    switch(a)	    {	      case 12: /* suspend playing */	      case 18: /* increase play bias */	      case 23: /* stop playing */	      case 32: /* show main screen */	      case 33: /* show 11th track */	      case 34: /* show 12th track */	      case 35: /* show 13th track */	      case 36: /* show 14th track */	      case 37: /* show 15th track */	      case 38: /* show 16th track */	      case 39: /* show 17th track */	      case 40: /* show 18th track */	      case 48: /* show 10th track */	      case 49: /* show 1st track */	      case 50: /* show 2nd track */	      case 51: /* show 3rd track */	      case 52: /* show 4th track */	      case 53: /* show 5th track */	      case 54: /* show 6th track */	      case 55: /* show 7th track */	      case 56: /* show 8th track */	      case 57: /* show 9th track */	      case 61: /* mute 1st track */		break;	    }#endif	    ctl->cmsg(CMSG_WARNING, VERB_VERBOSE,		      "Key scan 0x%02x 0x%02x is not supported", a, b);	    ntr_incr(&ntr, step);	    break;	  case 0xe6:	/* MIDI channel change */	    ch = a - 1;	    if(ch == 0) /* ##?? */		ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "MIDI channel off");	    else if(ch >= RCP_MAXCHANNELS)		ctl->cmsg(CMSG_WARNING, VERB_VERBOSE,			  "RCP: Invalid channel: %d", ch);	    ntr_incr(&ntr, step);	    break;	  case 0xe7:	/* tempo change */	    if(a == 0)	    {		ctl->cmsg(CMSG_WARNING, VERB_VERBOSE,			  "Invalid tempo change\n");		a = 64;	    }	    current_tempo = rcp_tempo_change(&ntr, a, b);	    ntr_incr(&ntr, step);	    break;	  case 0xea:	/* channel after touch (channel pressure) */	    a &= 0x7f;	    MIDIEVENT(ntr_at(ntr), ME_CHANNEL_PRESSURE, ch, a, 0);	    ntr_incr(&ntr, step);	    break;	  case 0xeb:	/* control change */	    readmidi_add_ctl_event(ntr_at(ntr), ch, a, b);	    ntr_incr(&ntr, step);	    break;	  case 0xec:	/* program change */	    a &= 0x7f;	    MIDIEVENT(ntr_at(ntr), ME_PROGRAM, ch, a, 0);	    ntr_incr(&ntr, step);	    break;	  case 0xed:	/* after touch polyphonic (polyphonic key pressure) */	    a &= 0x7f;	    b &= 0x7f;	    MIDIEVENT(ntr_at(ntr), ME_KEYPRESSURE, ch, a, b);	    ntr_incr(&ntr, step);	    break;	  case 0xee:	/* pitch bend */	    a &= 0x7f;	    b &= 0x7f;	    MIDIEVENT(ntr_at(ntr), ME_PITCHWHEEL, ch, a, b);	    ntr_incr(&ntr, step);	    break;	case 0xf5:	/* key change */		if (step < 0 || step >= 32) {			ctl->cmsg(CMSG_WARNING, VERB_VERBOSE, "Invalid key change\n");			step = 0;		}		rcp_keysig_change(ntr_at(ntr), step);		break;	  case 0xf6:	/* comment */	    len = 0;	    if(!gfmt)	    {		buff[len++] = a;		buff[len++] = b;	    }	    else	    {		buff[len++] = b;		buff[len++] = st1;		buff[len++] = st2;		buff[len++] = gt1;		buff[len++] = gt2;	    }	    while(tf_getc(tf) == 0xf7 && len + 6 < sizeof(buff))	    {		if(gfmt)		{		    if(tf_read(buff + len, 1, 5, tf) != 5)		    {			ret = -1;			goto end_of_track;		    }		    len += 5;		}		else		{		    tf_getc(tf); /* 0x00 */		    if(tf_read(buff + len, 1, 2, tf) != 2)		    {			ret = -1;			goto end_of_track;		    }		    len += 2;		}	    }	    tf_seek(tf, -1, SEEK_CUR);	    if(ctl->verbosity >= VERB_VERBOSE || opt_trace_text_meta_event)	    {		buff[len] = '\0';		for(len--; len >= 0; len--)		{		    if(buff[len] == ' ')			buff[len] = '\0';		    else if(buff[len] != '\0')			break;		}		if(opt_trace_text_meta_event)		{		    MidiEvent ev;		    if(readmidi_make_string_event(ME_TEXT, buff, &ev, 1)		       != NULL)		    {			ev.time = ntr_at(ntr);			readmidi_add_event(&ev);		    }		}		else if(ctl->verbosity >= VERB_VERBOSE)		{		    len = SAFE_CONVERT_LENGTH(len+1);		    p = (char *)new_segment(&tmpbuffer, len);		    code_convert(buff, p, len, NULL, NULL);		    ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "Comment: %s", p);		    reuse_mblock(&tmpbuffer);		}	    }	    break;	  case 0xf7:	/* 2nd Event */	    ctl->cmsg(CMSG_WARNING, VERB_VERBOSE,		      "Something's wrong: 2nd Event is appeared");	    break;	  case 0xf8:	/* loop end */	    if(ctl->verbosity >= VERB_DEBUG_SILLY)		ctl->cmsg(CMSG_INFO, VERB_DEBUG_SILLY,			  "Loop end at %d",			  tf_tell(tf) - track_top - cmdlen);	    if(sp == 0)		ctl->cmsg(CMSG_WARNING, VERB_VERBOSE,			  "Misplaced loop end (ch=%d)", ch);	    else if(sp > MAX_STACK_DEPTH)		sp--;		/* through deeply loop */	    else	    {		int top;		top = sp - 1;		if(same_measure == top)		{		    sp = same_measure;		    tf_seek(tf, stack[sp].loop_start, SEEK_SET);		    same_measure = -1;		    goto break_loop_end;		}		if((!gfmt && step == 0xff) || (gfmt && step == 0xffff))		{		    sp = top;		    goto break_loop_end;		}		if(stack[top].count >= step)		    sp = top;#ifdef RCP_LOOP_CONT_LIMIT		else if(stack[top].count >= RCP_LOOP_CONT_LIMIT)		{		    ctl->cmsg(CMSG_WARNING, VERB_VERBOSE,			      "Loop limit exceeded (ch=%d)", ch);		    sp = top;		}#endif /* RCP_LOOP_CONT_LIMIT */#ifdef RCP_LOOP_TIME_LIMIT		else if((current_tempo / 1000000.0) *			(ntr_at(ntr) - stack[top].start_at)			/ current_file_info->divisions			> RCP_LOOP_TIME_LIMIT)		{		    ctl->cmsg(CMSG_WARNING, VERB_VERBOSE,			      "Loop time exceeded (ch=%d)", ch);		    sp = top;		}#endif /* RCP_LOOP_TIME_LIMIT */		else		{		    stack[top].count++;		    ctl->cmsg(CMSG_INFO, VERB_DEBUG_SILLY,			      "Jump to %d (cnt=%d)",			      stack[top].loop_start - track_top,			      stack[top].count);		    tf_seek(tf, stack[top].loop_start, SEEK_SET);		}	    }	  break_loop_end:	    break;	  case 0xf9:	/* loop start */#if 1	    if(!gfmt && step == 0xff) /* ##?? */		continue;#endif	    if(ctl->verbosity >= VERB_DEBUG_SILLY)		ctl->cmsg(CMSG_INFO, VERB_DEBUG_SILLY,			  "Loop start at %d",			  tf_tell(tf) - track_top - cmdlen);	    if(sp >= MAX_STACK_DEPTH)		ctl->cmsg(CMSG_WARNING, VERB_VERBOSE,			  "Too deeply nested %d (ch=%d, Ignored this loop)",			  ch, sp);	    else	    {		stack[sp].start_at = ntr_at(ntr);		stack[sp].loop_start = tf_tell(tf);		stack[sp].count = 1;	    }	    sp++;	    break;	  case 0xfc:	/* same measure */	    if(ctl->verbosity >= VERB_DEBUG_SILLY)		ctl->cmsg(CMSG_INFO, VERB_DEBUG_SILLY,			  "Same measure at %d",			  tf_tell(tf) - track_top - cmdlen);	    if(sp >= MAX_STACK_DEPTH)		ctl->cmsg(CMSG_WARNING, VERB_VERBOSE,			  "Too deeply nested %d (ch=%d)", sp, ch);	    else	    {		long jmp, nextflag;		if(same_measure >= 0)		{		    sp = same_measure;		    tf_seek(tf, stack[sp].loop_start, SEEK_SET);		    same_measure = -1;		    goto break_same_measure;		}		nextflag = 0;	      next_same_measure:		if(!gfmt)		{		    jmp = (long)a | ((long)b << 8);		    if(jmp & 0x03) /* ##?? */		    {			/* What do these two bits mean? */			/* Clear them here. */			ctl->cmsg(CMSG_WARNING, VERB_DEBUG,				  "Jump %d is changed to %d",				  jmp, jmp & ~3);			jmp &= ~3;		/* jmp=(jmp/4)*4 */		    }		}		else		{#if 0		    if(b != 0)		    {			/* ##?? */		    }#endif		    jmp = gate;		    if(current_file_info->file_type == IS_G36_FILE)			jmp = jmp * 6 - 242;		    else			jmp -= (jmp + 2) % 6; /* (jmp+2)%6==0 */		}		if(jmp < data_top - track_top ||		   jmp >= last_point - track_top)		{		    ctl->cmsg(CMSG_WARNING, VERB_NOISY,			      "RCP Invalid same measure: %d (ch=%d)", jmp, ch);		    break;		}		if(nextflag == 0)		{		    stack[sp].start_at = ntr_at(ntr);		    stack[sp].loop_start = tf_tell(tf);		    same_measure = sp;		    sp++;		}		ctl->cmsg(CMSG_INFO, VERB_DEBUG_SILLY, "Jump to %d", jmp);		tf_seek(tf, track_top + jmp, SEEK_SET);		if(tf_getc(tf) == 0xfc)		{		    nextflag = 1;		    if(!gfmt)		    {			tf_getc(tf); /* step */			a = tf_getc(tf);			b = tf_getc(tf);		    }		    else		    {			b = tf_getc(tf);			tf_getc(tf); /* st1 */			tf_getc(tf); /* st2 */			a = gt1 = tf_getc(tf);			gate = gt1 + (gt2 << 8);		    }		    goto next_same_measure;		}		tf_seek(tf, -1, SEEK_CUR);	    }	  break_same_measure:	    break;	  case 0xfd:	/* measure end */	    if(same_measure >= 0)	    {		sp = same_measure;		tf_seek(tf, stack[sp].loop_start, SEEK_SET);		same_measure = -1;	    }	    break;	  case 0xfe:	/* end of track */	    goto end_of_track;	  case 0xc0:	/* DX7 function */	  case 0xc1:	/* DX parameter */	  case 0xc2:	/* DX RERF */	  case 0xc3:	/* TX function */	  case 0xc5:	/* FB-01 P parameter */	  case 0xc6:	/* FB-01 S System */	  case 0xc7:	/* TX81Z V VCED */	  case 0xc8:	/* TX81Z A ACED */	  case 0xc9:	/* TX81Z P PCED */	  case 0xca:	/* TX81Z S System */	  case 0xcb:	/* TX81Z E EFFECT */	  case 0xcc:	/* DX7-2 R REMOTE SW */	  case 0xcd:	/* DX7-2 A ACED */	  case 0xce:	/* DX7-2 P PCED */	  case 0xcf:	/* TX802 P PCED */	  case 0xdc:	/* MKS-7 */	    if(!gfmt)		ctl->cmsg(CMSG_WARNING, VERB_VERBOSE,			  "RCP %s is not unsupported: "			  "0x%02x 0x%02x 0x%02x 0x%02x (ch=%d)",			  rcp_cmd_name(cmd), cmd, step, a, b, ch);	    else		ctl->cmsg(CMSG_WARNING, VERB_VERBOSE,			  "RCP %s is not unsupported: "			  "0x%02x 0x%02x 0x%02x 0x%02x 0x%02x (ch=%d)",			  rcp_cmd_name(cmd), cmd, b, st1, st2, gt1, gt2, ch);	    ntr_incr(&ntr, step);	    break;	  default:	    if(!gfmt)	    {		ctl->cmsg(CMSG_WARNING, VERB_VERBOSE,			  "RCP Unknown Command: 0x%02x 0x%02x 0x%02x 0x%02x "			  "(ch=%d)",			  cmd, step, a, b, ch);		/* ##?? */		if(cmd == 0xe9 && step == 0xf0 && a == 0xe0 && b == 0x80)		{		    ctl->cmsg(CMSG_ERROR, VERB_VERBOSE,			      "RCP e9 f0 e0 80 is end of track ??");		    goto end_of_track;		}	    }	    else		ctl->cmsg(CMSG_WARNING, VERB_VERBOSE,			  "RCP Unknown Command: "			  "0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x (ch=%d)",			  cmd, b, st1, st2, gt1, gt2, ch);#if 0	    ntr_incr(&ntr, step);#endif	    break;	}    }  end_of_track:    /* All note off */    ntr_wait_all_off(&ntr);    ntr_end(&ntr);    tf_seek(tf, last_point, SEEK_SET);    return ret;}
4357	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4357/12eeb8799d6de6ddf9e1c5b0cee9fd91567df8ea/rcp.c/buggy/timidity/rcp.c