LMMS / lmms

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

Arpeggios in piano roll #7580

Open SpomJ opened 2 days ago

SpomJ commented 2 days ago

Enhancement Summary

Unlike converting #3880 proposes, this is designed to be born from piano roll, and live in piano roll.

Why

Unlike arpeggiator, these are bound to rhythm, and as such are better suited for piano roll; they are also easier to edit than automation over chords. Particularly useful for repetitive patterns like pads and/or bass

Implementation Details / Mockup

Here's where the fun starts.

Main

The main mockup I can come up with is the "loop" tool. How it works is: select a note pattern, activate the tool (it would better off being a hotkey, but can also be a toggle), and extend the notes. What happens then is the pattern is copied from start to end repeatidly (looping), then cut if it isn't a perfect multiple. It also works backwards just by cropping & deleting the notes.

There are two problems with this:

Alt resizing

There's also a different way. We can automagically shrink the selection like it already can currently, then concat it until it fits current length. it's essentially the same thing but backwards and I don't see any upsides over the previous method.

Alt: arpeggio generation

This is how it works in arpeggiator. We specify a chord, a note duration, and place the notes. There are several issues with this, for example we still need to slice the notes, and thus lose the ability to easily shrink the arpeggios. We also limit people to the pre-generated chords, which isn't a big deal but may break the workflow for some people. We also need more buttons.

Please search the issue tracker for existing feature requests before submitting your own.

I may try to make a PR myself after the mockup gets settled, but I can't guarantee that.

regulus79 commented 2 days ago

I have been thinking of a similar feature, where users can duplicate the current selection of notes/clips. I believe it would essentially be the same as your feature, except that it would only allow integer repetitions. However, I ran into the same issue that lmms does not allow users to select empty space after the notes, so if a gap were wanted in between, it would not be easy to do with the current ui.

I agree a text field would be absolutely not be ideal. I suppose the way selection works in lmms could be modified to allow users to select empty space, though I'm not sure exactly how it should operate.

You probably need to make the notes much shorter than everything else, which is painful but I don't think there would be any better way to do that.

What do you mean by this?

musikBear commented 2 days ago

This confuses me. It is possible to make any size of note-pattern in piano-roll, that be melodi, or arpeggio-notes, and then just copy the segment to any bar-size wanted in song-editor- And this method for elongating is pr design, and is one of the most smart things in LMMS, because these copied segments does not need to be identical! We can go into any of the small segments and make subtle interesting changes! If it was a loop that loop would be uniform in pattern, and boring! About the

lmms does not allow users to select empty space after the notes,

A segment is the size of one bar, true -But that does not prevent you from placing notes in other ways over the beats inside that segment. It is perfectly possible to have the first note in segment in 2. beat 3. tick, or the end a segment in 3. beat 2 tick. Again this is the power of segments! They are like LEGO, and be combined in any way you can imagine, this is not possible in loops. A loop like those known from FLs always contain the same notes, and LMMS has the pattern-designer for that, because percussion often is 'loop'ish', witch never should stop you from inserting rolls or rifs one-hits in song-editor to spice-up the otherwise uniform percussion. So imo any loop tools for notes is limiting creativity, so even though it is making it 'easier' it is also resulting in less interesting music.

regulus79 commented 2 days ago

We can go into any of the small segments and make subtle interesting changes! If it was a loop that loop would be uniform in pattern, and boring!

I agree. However, I think the author's original idea may still allow this. Perhaps if after the user selects the notes and drags them out into a loop, once the notes are unselected, they become normal notes and you can change any of them however you want. That way you can take a 1-bar riff and loop it out to 4-bars, then make a few changes to some of the bars to add some interestingness to it. (I'm not sure if that was their original idea, but I think it could work)

qnebra commented 2 days ago

Arpeggios are technically broken up chords, so arpeggio notes, with arpeggiator controls in pianoroll is quite interesting idea. Of course arp notes edited in the same way as normal notes. But then, you can just made arp with regular notes, then copy & paste pattern.

SpomJ commented 2 days ago

And this method for elongating is pr design, and is one of the most smart things in LMMS, because these copied segments does not need to be identical! We can go into any of the small segments and make subtle interesting changes! If it was a loop that loop would be uniform in pattern, and boring!

But then, you can just made arp with regular notes, then copy & paste pattern.

I think the author's original idea may still allow this. Perhaps if after the user selects the notes and drags them out into a loop, once the notes are unselected

Let me clarify. The way I intend the tool to work is to simply do automatic copy/paste work. It's effectively a more elegant way to do select-copy-paste-paste-paste-... The notes left after that are separate notes that aren't nound to anything and still can be altered.

SpomJ commented 2 days ago

You probably need to make the notes much shorter than everything else, which is painful but I don't think there would be any better way to do that.

What do you mean by this?

The fact you still place the shortest notes and then just expand it. As opposed to just placing a long note and the chord being played in arpeggiator. However, I don't think there would ever be a more elegant and/or configurable way to do this.