Hi Peter, I tried my best to do a faithful implementation of the Karplus Strong algorithm (with the probability function and all) as described in that paper. I have it in my didactic material that I use to teach my students - one thing though, I'm from Brazil and the thing is being developed in portuguese. You find the latest version in here:
https://sites.google.com/site/porres/pd
more specifically
Even more specifically, the karplus strong is the last folder, in "Parte 6 - Filtros e Reverb", there you finder folder "32.Karplus-Strong". Even even more specifically, the algorithm is 2.Algoritmo.Karplus-Strong.pd
This is an ever ongoing project of mine that I doubt I'll ever finish btw, and I keep rewriting it. Karplus Strong was one of the latest additions, and I'm sure I'll rewrite it. I'm actually sending another patch attached, as I think the way the output is connected now makes more sense, what do you think?
I think that using vline~ is more accurate and elegant than [del] as in kriedler's implementation. I also didn't like the way there was a delay/latency of one period because the envelope goes first to the delay line before going to the output. So I had done it differently in the current version in my didactic work, but I'm now considering this new idea.
I use fexpr~ for the mean filter, but I had also used sometimes biquad~ in the same way as you suggested. I think biquad~ should work with a block of 1, if not it is buggy! You can easily test it though.
Note you can use other filters instead of the mean average filter. That was chosen back in the day for convenience, we have more options now, lop~ would be a nice one by the way.
cheers