void render(float[][] dest, int nsamples) {

		float[] inbuf = inst.aux1buf;

		for (int i = 0; i < nsamples; i++) {
			float in = inbuf[i] * gainin + fcdcoffset;

			for (int ch = 0; ch < 2; ch++) {
				float cur = 0.0f;
				for (int j = 0; j < 4; j++) {
					/*float dv = combd[ch][j].fetch();
					float nv = gainc[j] * dv + (((j & 1) != 0) ? -in : in);
					combl[ch][j] += damp * (nv - combl[ch][j]);
					combd[ch][j].feed(combl[ch][j]);
					cur += combl[ch][j];*/
			        float dv = gainc[j] * combd[ch][j].fetch();
			        float nv = ((j & 1) != 0) ? (dv - in) : (dv + in); // alternate phase on combs
			        float lp = combl[ch][j] + damp * (nv - combl[ch][j]);
			        combd[ch][j].feed(lp);
			        cur += lp;
				}

				for (int j = 0; j < 2; j++) {
					float dv = alld[ch][j].fetch();
					float dz = cur + gaina[j] * dv;
					alld[ch][j].feed(dz);
					cur = dv - gaina[j] * dz;
				}

				hpf[ch] += lowcut * (cur - hpf[ch]);
				//dest[i].ch[ch] += cur - hpf[ch];
				dest[i][ch] += cur - hpf[ch];
			}
		}
	}