init_reverb(play_mode->rate); 
init_reverb(); 
static int midi_play_end(void){    int i, rc = RC_TUNE_END;    check_eot_flag = 0;    if(opt_realtime_playing && current_sample == 0)    {	reset_voices();	return RC_TUNE_END;    }    if(upper_voices > 0)    {	int fadeout_cnt;	rc = compute_data(play_mode->rate);	if(RC_IS_SKIP_FILE(rc))	    goto midi_end;	for(i = 0; i < upper_voices; i++)	    if(voice[i].status & (VOICE_ON | VOICE_SUSTAINED))		finish_note(i);	if(opt_realtime_playing)	    fadeout_cnt = 3;	else	    fadeout_cnt = 6;	for(i = 0; i < fadeout_cnt && upper_voices > 0; i++)	{	    rc = compute_data(play_mode->rate / 2);	    if(RC_IS_SKIP_FILE(rc))		goto midi_end;	}	/* kill voices */	kill_all_voices();	rc = compute_data(MAX_DIE_TIME);	if(RC_IS_SKIP_FILE(rc))	    goto midi_end;	upper_voices = 0;    }    /* clear reverb echo sound */    init_reverb(play_mode->rate);    for(i = 0; i < MAX_CHANNELS; i++)    {	channel[i].reverb_level = -1;	channel[i].reverb_id = -1;	make_rvid_flag = 1;    }    /* output null sound */    if(opt_realtime_playing)	rc = compute_data((int32)(play_mode->rate * PLAY_INTERLEAVE_SEC/2));    else	rc = compute_data((int32)(play_mode->rate * PLAY_INTERLEAVE_SEC));    if(RC_IS_SKIP_FILE(rc))	goto midi_end;    compute_data(0); /* flush buffer to device */    if(ctl->trace_playing)    {	rc = aq_flush(0); /* Wait until play out */	if(RC_IS_SKIP_FILE(rc))	    goto midi_end;    }    else    {	trace_flush();	rc = aq_soft_flush();	if(RC_IS_SKIP_FILE(rc))	    goto midi_end;    }  midi_end:    if(RC_IS_SKIP_FILE(rc))	aq_flush(1);    ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "Playing time: ~%d seconds",	      current_sample/play_mode->rate+2);    ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "Notes cut: %d",	      cut_notes);    ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "Notes lost totally: %d",	      lost_notes);    if(RC_IS_SKIP_FILE(rc))	return rc;    return RC_TUNE_END;}
4357	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4357/86bd0879e19961cd1dd8c93a2921f51fab9671e7/playmidi.c/clean/timidity/playmidi.c