Last week, I posted here about some network API improvements I’d started but after some planning over the weekend I’ve set that aside, changed tack and decided to focus on a few things more useful to the broader user base, and this the first of them…
Cantabile build 4179 introduces support for media player loop ranges and live loop control.
These are not to be confused with play ranges and play ranges loops that have been supported for a long time:
Play Ranges - (existing functionality ) these are for limiting the playback of a media file to a particular range. You can have multiple ranges but only one can be active at a time. A play range can be looped and this is primarily for practice sessions where you want to play a certain section over a number of times.
Loop Ranges - (new) these are specifically for looping sections of a file during performance. You can have multiple active at any one time, they’re independent of the active play range and there are controls that let you decide at performance time whether to loop again, or break out of the loop.
Here’s how to use the new functionality:
Load a media player and using the play range handles select a region you’d like to loop.
From the Range drop down choose “(All)” to clear the play range or if you just want to experiment, extend the play range so the loop range is entirely within it:
Play the file and notice that the range loops and then continues. That the first big different between play ranges and loop ranges - play ranges stop once the loop has counted down where-as loop ranges loop a number of times and then continue on.
Create more loop ranges if you want.
That’s the basics of loop ranges, but there’s one more important part - the loop mode. Notice the new button in the time line panel:
The loop mode lets you control the behaviour on the fly and has 3 modes:
“Automatic” - looping is controlled by the loop count setting
“Break” - breaks out of the current loop when the end is reached, regardless of the current loop count
“Loop” - loop at the end of the current loop range, regardless of the current loop count.
So the idea is you can setup loops and then decide on the fly whether to loop again or break out early.
Notes:
There a bindings to control the loop mode of a media player, or the master transport (if the master transport is a media player).
Loop Ranges can’t overlap although they can touch end to end.
If a play range is also set, loop ranges are only effective if they’re entirely within the play range.
When a loop range is set inside a play range and the play range has a loop count the play range will play through N times and each loop range will loop each time through.
When a loop range is exited the loop mode is reset to auto. ie: you can break out of a loop early, but when the next loop range is reached, it’ll be back in auto mode so the loop count takes effect.
It’s perfectly valid to create a loop range with a loop count of 1 and then use the loop mode to decide whether to loop or not.
There’s still some work to be done in this area, but I wanted to get this out so I can get some feedback. Still to be done:
Update the StreamDeck plugin to support the loop mode actions
Update the Web UI to support loop mode actions
Add a “Loop Once” mode which makes the current loop repeat, but then revert to auto mode.
@brad thanks. Sounds like a great feature. I tend not to do much music this time of year when the weather means I can be outside, so not sure when I will get to try this, but I am definitely interested in this feature and will be seeing if for new songs I can use this feature as it would simplify things.
Good question! The problem was I’d bundled this in with a bunch of other transport related improvements which as a group turned into quite a big task - causing it to be constantly put it off.
Last weekend after some reflection and planning I decided to break down all those bigger tasks into smaller areas of work, and loop mode was the first thing that fell out of that… and now it’s done. I’m taking a similar approach to other long-standing ideas so hopefully some other interesting stuff should come from this new attitude.
I’ve just put up build 4180 that makes some improvements:
There’s a new loop mode “Loop Once” which does exactly what it sounds like - causes the current loop range to loop once (and then switches automatically to Break mode)
The controller bar now supports a loop mode button that also shows the current loop count and loop iteration number (you might need to right click and elect to show this button).
That makes sense and I understand. I worked in SW development for many years and totally get the importance of planning how and when to “open the hood”.
Binding points on both Transport and Media Player for “Loop Count” and “Loop Iteration”. These can be used to reflect current loop info to external gear.
Stream Deck support for loop mode control (see here for how to update the plugin).
Thanks for reporting… I had to adjust the height calculations on that row and I bet there’s a rounding issue causing it to be too narrow and the text rendering thinks that text doesn’t fit vertically.
What scaling settings are you using for Windows and Cantabile?