void set(syVDist para) {
		float x;

		mode = (int) para.mode;
		gain1 = (float) Math.pow(2.0f, (para.ingain - 32.0f) / 16.0f);
		
		//System.out.printf("%d mode %d gain1 %f\n", d_cntr++, mode, gain1);
		switch (mode) {
			case OFF:
				break;
			case OVERDRIVE:
				gain2 = (para.param1 / 128.0f) / ((float) Math.atan(gain1));
				offs = gain1 * 2.0f * ((para.param2 / 128.0f) - 0.5f);
				break;
			case CLIP:
				gain2 = para.param1 / 128.0f;
				offs = gain1 * 2.0f * ((para.param2 / 128.0f) - 0.5f);
				break;
			case BITCRUSHER:
				x = para.param1 * 256.0f + 1.0f;
				crush2 = (int) x;
				crush1 = gain1 * (32768.0f / x);
				crxor = ((int) para.param2) << 9;
				break;
			case DECIMATOR:
				dfreq = Utils.ftou32((long) Utils.calcfreq(para.param1 / 128.0f) & 0xffffffffl);
				break;
			default: {
				syVFlt setup = new syVFlt();
				setup.cutoff = para.param1;
				setup.reso = para.param2;
				setup.mode = (float)(mode - FLT_BASE);
				fltl.set(setup);
				fltr.set(setup);
			}
				break;
		}
	}