Beware, long post ahead!

I just want to throw this idea out there, raise some discussion maybe:
Is the current implementation of time signature really purposeful?

It doesn't allow the use of different time signatures in a song very
conveniently: you basically have to find a time signature that
"matches", ie. is divisible with, all the time signatures you want to
use - this is mostly because changing time signatures mid-song is very
awkward. And if you want to do fancy rhythmic things where you use
overlapping different time signatures - well, things just get ugly.
Also, automating tempo is already a cause of headache, automating the
global time sig just increases that headache by several orders of
magnitude...

I think we should rather move to a model, where instead of one global
time signature we could just allow setting a time signature for each
pattern individually - you could mix in 5/8 patterns at the same time
with 3/9 patterns, at the same time. This would be implemented for both
melodic and beat patterns. This would also pave the way for adding other
neat timing-based effects such as shuffle.

Basically, we'd keep measuring the length of pattern in tacts, but
additionally, each pattern would have a new "time sig" property, and the
"real" length in ticks (to those who don't know: ticks are the internal
"smallest unit of time" when it comes to notes, one tick is equivalent
to a 192th note) would be acquired by multiplying the number of tacts
with the pattern's own time sig.

Backwards compatibility would be kept by converting all old patterns
into new signatured patterns by applying the old global sig to them. And
since the underlying tick system would remain unchanged, the required
changes wouldn't have to go all that deep even.

This would allow cleaner implementations in many cases, I seem to notice
that the current time sig system causes many issues in many parts of the
software... even now there are multiple open issues all related to time
sig in one way or another. I believe my proposal would allow for cleaner
implementations. Basically, when you open a piano roll, it would display
the pattern in the time signature of the pattern. There'd be a time
signature widget in the piano roll, another in automation editor and
another in bb-editor.

The song editor's global time grid could be entirely beat-based, or it
could be adjustable as a function of time signature - so there could
still be a "global time sig" widget, but the difference would be that
adjusting it wouldn't change any patterns, it would only change the
"grid" while keeping the position & length of patterns intact. Also the
global time sig could be used as a hint for newly created patterns, they
could take their time sig from the global widget.

I think all in all this could be a big improvement in the way LMMS
handles time signatures. What do you think?

------------------------------------------------------------------------------
Subversion Kills Productivity. Get off Subversion & Make the Move to Perforce.
With Perforce, you get hassle-free workflows. Merge that actually works. 
Faster operations. Version large binaries.  Built-in WAN optimization and the
freedom to use Git, Perforce or both. Make the move to Perforce.
http://pubads.g.doubleclick.net/gampad/clk?id=122218951&iu=/4140/ostg.clktrk
_______________________________________________
LMMS-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/lmms-devel

Reply via email to