turning four loops into a small network

I wanted to record the output of one circle into another. This lets a short phrase become the source for a slower loop, lets a filtered loop be recorded again, and (with some care) makes feedback paths where the same sound keeps changing each time around.

I put the routing matrix in the processor so the audio paths stay explicit and the JUCE interface does not need access to the engine's internal Voice objects. Then I added the routes to the controls, labels, runtime updates, plugin state, and session files. A useful routing patch should still be there when I reopen it.

making loop lengths easier to find

I also changed how the loop length moves when the project has a tempo and quantization. Larger steps now land on musically useful lengths instead of arbitrary decimals, while fine adjustment is still available when the source is not metered.

This required the displayed length, processor bounds, and engine bounds to agree while the value changes. That became especially noticeable after routing, because recording one loop into another is much easier when their lengths are intentional.