LMMS / lmms

Cross-platform music production software
https://lmms.io
GNU General Public License v2.0
7.98k stars 995 forks source link

LMMS shows odd behaviors with non-default denominator #4045

Open PhysSong opened 6 years ago

PhysSong commented 6 years ago

LMMS supports variable time signature since bf077dd. There have been so many bugs and most of them have been fixed. Now LMMS seems to work correctly with any numerator. However, there are still some bugs with meter denominator. Here's the list of bugs that I found:

Supporting exotic denominator may need large rework on whole codebase, but some issues may be fixed easily. If there are any duplicates or related issues, please let me know!

Reflexe commented 6 years ago

About the metronomes, see the last commit on the sample track recording PR. I think it may fix this problem.

https://github.com/LMMS/lmms/pull/3947/commits/205ec07bf61b43ae609e690fb9b5d7c5d4094e54

softrabbit commented 4 years ago

LMMS treats BPM as quarter notes per minute, not as beat for minute When the denominator changes, the length of quarter notes(and other notes) should be changed according to that. For example, a quarter note has two-beat length with time signature 4/8, but LMMS treats it as if it is one beat long.

Even nicer would probably be separating the BPM unit from the denominator, i.e. the time signature might be 12/8 and the tempo in dotted quarter notes per minute, like this: https://music.stackexchange.com/questions/66738/meaning-of-a-dotted-quarter-note-next-to-bpm-in-sheet-music

musikBear commented 4 years ago

Like to add that Beat&bassline also has strange options Here 6/8 a setup with 12 positions are available. image In a way, that is 12/16, but its not obvious that 6/8 is 'doable' if every second is invoked

allejok96 commented 3 years ago

You may be overthinking it, @PhysSong.

Piano-roll and automation editor displays weird grid

If we fixed this in a musically correct way, beat lines in 4/28 would be painted in-between quantization ticks. That means there is actually no way to place notes exactly on the beats of a 4/28 meter. To fix that we'd have to introduce some form of tuplet feature in the editor, ~which feels awfully complex~ see #1842.

Pattern length become wrong

This not not a bug at all. LMMS is completely right. A whole note in 4/5 is the same length as a whole note in 4/4 - it's always four quarter notes long. The time signature only changes where the bar line is drawn. A whole note in 2/4 spans two bars.

Metronomes are out of sync

Same thing here as the grid issue. It comes down to division and rounding. Even if we fixed the metronome, the notes could never play in sync with it, because we are limited to 192 ticks when placing notes.

Besides, it would be better if the metronome had it's own time signature setting, like #6119.

LMMS treats BPM as quarter notes per minute

I like @softrabbit's suggestion here, though this is not directly an issue of non-default denominators.

Solution

Only allow denominators 1, 2, 4, 8, 16 and 32.

Would that be a problem? I don't think so. The denominator of a time signature is always power of 2. Well, 99,999% of the time... If you wanted to write something in 3/3 you'd have to use triplets and that makes the notation a lot more complex. You could write it in 3/4 instead and it would sound exactly the same.

So why on earth would anyone use an irrational meter like 4/3? Wikipedia: "These signatures are of utility only when juxtaposed with other signatures with varying denominators". So it can make sense when putting two pieces of music, with different time signatures, side by side. Not possible in LMMS. And as I understand it, the usefulness is only for musical notation.

zonkmachine commented 12 months ago

Only allow denominators 1, 2, 4, 8, 16 and 32.

This sounds like a good idea.

ifndefJOSH commented 10 months ago

Only allow denominators 1, 2, 4, 8, 16 and 32.

I have a PR (#6981 ) which does this.

mirk0dex commented 4 months ago

Only allow denominators 1, 2, 4, 8, 16 and 32.

Please don't. This would break compatibilities with projects using irrational meters, MIDIs, etc. Many famous songs use these time signatures.

So why on earth would anyone use an irrational meter?

Sometimes, especially when dealing with classical music, movie soundtracks, or exotic compositions, it's just more convenient to not think too much and just write the melodies down as they are, making no changes to the time signature.

I think the flaws you described are bearable and we should not remove a feature that, in this niche, could make LMMS more appealing than other DAWs: most of them, to my knowledge, don't support it. LMMS could be perfect for composers looking for this. Ableton appears to not allow custom denominators other than 1, 2, 4, 8 or 16, for instance.

Let me know if I said anything stupid. I'm a noob when it comes to special time signatures, and they can be really confusing. Still, this is what I think.

ifndefJOSH commented 4 months ago

@mirk0dex I disagree because irrational meters imply a nearby rational meter with a "prevailing" tempo. LMMS currently does not handle mid-song meter changes well; yeah, you can technically automate it but...good luck. Same goes for tempo changes but I think you'll see more success with those since the only thing that really gets weird is the sample tracks. Why have a song in $\frac{4}{3}$ (four third beats per measure) at X BPM when you could just have a song in $\frac{4}{4}$ at $\frac{3X}{4}$ BPM?

As LMMS is currently, I don't think it makes sense to allow irrational meters. Maybe in the future if there's better automation for meter changes, then it could work.