Unfortunately, one of the previous pieces of software in this area followed the poster's "self documenting code" style (very nice, clean, well written code with no comments), and even I find it difficult to piece together what's going on in places --- not because all of the code is crypto-specific, but because the author has thrown so much effort into writing "clean, pretty" code that it's actually hard to know where the crucial pieces are. I can't quite explain why I find this so irritating, but perhaps some of you will know what I mean.
I can kind of understand this, often in the quest to make things more understandable things are refactered into methods/functions that arent modular operations in themselves which can lead to more confusion since they masquerade as pieces of modularly reusable code when they in fact rely on assumptions which happen to be satisfied by their caller.
Its also worth noting that you do get a performance and memory usage penalty for pushing additional frames onto the stack. In certain cases that can be a factor. (As an aside why is it in Uni that recursive code is held in such high regard as being elegant whereas in day to day like its almost always a bad idea. I made that mistake a few times early on in my professional life).
You apparently have failed to discover the master bus in most audio software.
2 pints = 1 Cavort