separating what comes in from what stays

When I recorded into a loop, the new signal and the old contents were too closely tied together. I wanted to be able to record a lot of the input while keeping only a little of the previous pass, or keep the old loop intact while adding just a small amount of something new. Version 1.4.0 splits those jobs into Record Level and Buffer Keep.

I also put a filter in the write path. This means the part you keep can become darker or thinner every time it goes around. Underneath the controls, the transport now mixes the write signal one sample at a time and keeps state for a stereo filter. Those values then had to travel through the voice, engine, plugin processor, editor, parameter display, and saved session.

fixing the things around the new feature

While working on recording I kept looking at the expanded waveform, so I made it easier to read. The recording state and the audio in the buffer are clearer now, which is useful when four loops are moving and one of them is about to be changed. I also reordered the control overlay to follow the way I use it instead of the order the parameters happened to have inside the code.

There was also a session bug where some input and output values could overwrite one another while loading. I fixed that too. It was not part of the original plan for the release, but neither was losing a routing setting after reopening a project.