Open bradrn opened 4 years ago
yeah, this one isn't ideal, but there also isn't really a "right answer" to this problem. As you note, the 4-beat-long-pattern is a synchronisation "default". The problem of course is that you can have patterns of different lengths - and how you might want to synchronize those will be different under different conditions. We have thought about adding a global pattern-sync variable that would at least give the composer a little more control than the default 4 at the moment. Still thinking about this one.
Currently, the pattern language is hardcoded to start patterns every four beats:
https://github.com/digego/extempore/blob/f86098457f013813ca1f9236982fef4ae09a9de7/libs/core/pattern-language.xtm#L141
This is fine for patterns which are multiples of four beats long (which I expect is most of them). But for patterns which aren’t, it’s nearly impossible to get any sort of synchronisation between patterns. It would be nice to fix this; I’m thinking that the best solution would be to add another parameter to
:>
and:|
to specify on which beat it should be synchronised, although as a breaking change I’m wary of sending this in as a PR without any prior discussion.For a concrete example:
The first pair of patterns will always start on the same beat, even when run at different times, while the second pair of patterns will almost never start on the same beat (although they will be synchronised with any other 4-beat-long pattern which is being played).