First off - you are NOW called 'Saint Russ' - the PATIENT saint. Thank you for putting up with my thickness... i.e. You put the data in at position 0, and you have a read pointer at 5. After one cycle, that data is at position 1. After two cycles, that data is at position 2. After three cycles, that data is at position 3. After four cycles, that data is at position 4. After five cycles, that data is at position 5, where you read pointer is, so what you are reading is a sample from 5 cycles ago, thus it is delayed 5 cycles. If you fed a sample into position 0, every cycle, then you will get those same samples back out 5 cycles later, so they are all delayed by 5 samples. Now the samples are not removed from the delay line, they keep moving until they reach the end, so if you had another read pointer further down the line, then you would get the same samples again but a more delayed version of it.[/QUOTE] The above makes perfect sense to me - (note: questions are numbered for your answering convenience) 1) Additional read pointers would give us more 'taps' also - correct? OK - What hapens when 'anything above 50% will result in a values beyond the size of the delay line.' - these samples are lost because they would be re-written to/over - correct? Ok - this is how we can get stereo and multiple taps ie. 2) for stereo we'd need at least; 2 inputs, 2 outputs, 2 write pointers and 2 read pointers - correct? 3) for multiple taps we simply add more read pointers at various addresses with in the maxtramsize range - correct? 4) to have feed back - we need to mix final output with a read points contents and re-write that result to some (maybe same as said read point) tram location - correct? 5) and NO need to CHANGE pointers (at run time) UNTIL we want to adjust the delay time (via a slider for instance) or have some dynamic tap points - correct? Thanks again Russ. - Er, Saint Russ.