recompute_bank_parameter(ch, note);
static void note_on_prescan(MidiEvent *ev){	int i, ch = ev->channel, note = MIDI_EVENT_NOTE(ev);	if(ISDRUMCHANNEL(ch) &&	   channel[ch].drums[note] != NULL &&	   !get_rx_drum(channel[ch].drums[note], RX_NOTE_ON)) {	/* Rx. Note On */		return;	}	if(channel[ch].note_limit_low > note ||		channel[ch].note_limit_high < note ||		channel[ch].vel_limit_low > ev->b ||		channel[ch].vel_limit_high < ev->b) {		return;	}    if((channel[ch].portamento_time_msb |		channel[ch].portamento_time_lsb) == 0 ||	    channel[ch].portamento == 0)	{		int nv;		int vlist[32];		Voice *vp;		nv = find_samples(ev, vlist);		for(i = 0; i < nv; i++)		{		    vp = voice + vlist[i];		    start_note(ev, vlist[i], 0, nv - i - 1);		    resamp_cache_refer_on(vp, ev->time);		    vp->status = VOICE_FREE;		    vp->temper_instant = 0;		}	}}