[delay~] vs [tapin~] + [tapout~]

Ploki's icon

I checked the threads, they're old, some of the things were marked as bugs, and most of the patchers that demonstrate the differences don't really work as their authors described they would work, and I'm kind-of lost.

Max Patch
Copy patch and select New From Clipboard in Max.

So, can someone explain a few things;
sampling rate 44100
[delay~] driven with signal (- 1), vs driven with message
- message delay 441 samples vs signalrate delay 440 samples == silence
- message delay 882 samples vs signalrate delay 881 samples =! silence
Isn't the one sample difference constant?
-----
Why do neither of [delay~] cancel out with [tapin~] [tapout~] pair? What's with this "vector size" delay?

Basically, how do you get exact delay times in max, that won't change when your vector size and or sampling rate changes?

ak's icon
Max Patch
Copy patch and select New From Clipboard in Max.

In the case of [delay~] vs [delay~]: if you set longer maximum delay time they zero out correctly. IIRC it allocates only 512 samples by default.
[delay~] vs [tap{in,out}~]: From below experiment it seems that [tapout~] interprets delay time set by signal a little differently. I think it's due to some clever inter-sample delay interpolation algorithm. And it seems more interesting if we set delay time to fractional sample values...
Also [tap..] objects cannot go below delay of one signal vector (what is understandable, as they enable creating feedback loops).