FYI, if you want a snake out of tabread4~ but are assigning the source arrays dynamically, do yourself a favor and at least provide dummy table arguments in your declaration. If you don't, tabread4~'s output will always be a single channel, no matter how many tables you try to set afterward.
There! If you are as slow as I am, I just saved you 2 days of head scratching. I would not be surprised if this was also true for tabread~ and tabplay~ but I didn't test. Oh, and I'm running Pd 0.55, although I started this patch a version ago where I probably had the same issue but couldn't hear it due to other even worse issues