@Override
	public synchronized void advance(double smpSecondsElapsed,double seqSecondsElapsed){
		int chan=output.length;
		for(int i=0;i<chan;i++) output[i]=0;
		boolean stop=terminate;
		Node n=head.next;
		while(n.next!=null){
			double[] signal=n.sound.getSignal(smpSecondsElapsed,seqSecondsElapsed);
			if(signal==null){
				n.next.prev=n.prev;
				n=n.prev.next=n.next;
				childCount--;
			}else{
				stop=false;
				int j=0;
				for(int i=0;i<chan;i++){
					output[i]+=signal[j];
					if(++j==signal.length) j=0;
				}
				n=n.next;
			}
		}
		if(stop) stop();
	}