public void start() {
		new Thread() {
			public void run() {
				while (true) {
					double add = 0;
						for (Iterator<ReadableSound> it = readables.keySet()
								.iterator(); it.hasNext();) {
							ReadableSound r = it.next();
							double a = r.read();
							add += a / 10;
							if (quietSamplingCount++ >= quietSampling) {
								quietSamplingCount = 0;
								if (Math.abs(a) < threshold)
									readables.put(r, readables.get(r) + 1);
								else
									readables.put(r, 0);
								if (readables.get(r) > quietDuration) {
									it.remove();
								}
							}
						}
						add = (add > 1) ? 1 : (add < -1) ? -1 : add;
						out.writeM(add);
						if (vis.isVisible())
							vis.write(add);
						if (fdVis.isVisible())
							fdVis.write(add);
					}
				}
			
		}.start();
	}