Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Arpeggiator overhaul #3880

Open
4 of 10 tasks
zonkmachine opened this issue Oct 14, 2017 · 15 comments
Open
4 of 10 tasks

Arpeggiator overhaul #3880

zonkmachine opened this issue Oct 14, 2017 · 15 comments

Comments

@zonkmachine
Copy link
Member

zonkmachine commented Oct 14, 2017

Some issues with the arpeggiator and the note sorting algorithms.

If you play an arpeggio over one note only, things generally work fine. There is the issue with occasionally dropped notes but if you use the function to skip notes and only arpeggiate over one note at a time, there is a chance that you will experience not a single glitch. If however you choose to arpeggiate over a chord, then you will most likely bump into a couple of the following issues.


Bug fixes/Basic functionality

  • Skipped notes. Sometimes notes are skipped. (see picture below)
    Possibly related issue: Race condition in arpeggio processing #2606

  • Extra notes. Sometimes an extra note is played at the end. Such an extra note can be the same as the actual note intended, increasing its volume. (see picture below)
    Fixed in: c39690d

Picture showing notes disappeared and extra notes added (as duplicates under the ordinary ones making them look bigger in this picture).
arpagain-01.mmp.zip
arpagain

  • The notes are only sorted after position and not after key. This is apparent in the arpeggiator when you're trying to arpeggiate over more than one key in Sort Mode. It's difficult to get the notes to follow a defined route. The common way is to start from the lowest note and then play the notes in order.
    Fixed in: 81966fa

  • Sort mode. All notes are playing at the beginning of the notes. This is a regression from 1.1 and was introduced in 6650dd3.
    Fixed in 2d583db

  • Sort mode. If the envelopes are off, the notes that should be silent are playing as ordinary notes while waiting for their turn. Solving this by using the same hack as the 'skip' algorithm as it had the same issue. Set as master note.
    Fixed in 6da8737


Internal changes

  • Sorting notes is made both in Pattern::addNote(...) and in Pattern::rearrangeAllNotes(). The former is triggered on key 'on' and the latter on key 'off' but also works more generally on actions in the PianoRoll. The sort in Pattern::addNote(...) may thus be unnecessary. I've tested to drop this code and it seem to work just fine. Notes recorded through Midi keyboard are sorted only through Pattern::addNote so some rework seem to be needed to use Pattern::rearrangeAllNotes().
    Suggest: Wontfix.

  • Pressing an existing note in the Piano Roll plays it back. When you release the key this triggers a note sort via Pattern::rearrangeAllNotes(): the same way as a drag/shift action. This even though nothing really has changed to the pattern. It may be a non issue as the extra cpu cycles involved doesn't appear to be screaming high.


Proposed functions

  • Strict sync. Follow the quantized positions and don't play notes on key 'on'.
  • Templates. Building templates in the Piano Roll and/or import Groove Templates.
  • Convert a pattern played by the arpeggiator to notes in piano roll.
@Spekular
Copy link
Member

Spekular commented Oct 14, 2017

Feature Request: Ability to convert a pattern played by the arpeggiator to notes in piano roll.

@zonkmachine
Copy link
Member Author

Ability to convert a pattern played by the arpeggiator to notes in piano roll.

Added.

@musikBear
Copy link

Feature Request:
Allow notes to have different delay effects in the arpeggio. This is known from f.i. Oatmeal and Synth1 and is awesome

@musikBear
Copy link

Ability to convert a pattern played by the arpeggiator to notes in piano roll.

How about the other way around -Eg building a pattern in piano-roll, including different note-length, pos, and velosity, and have that pattern exported to midi/ xml, and have arpeggiator able to import these arp-templates (partly known from FLs, but there is no edit-tool i know of)

@zonkmachine
Copy link
Member Author

zonkmachine commented Oct 15, 2017

Allow notes to have different delay effects in the arpeggio

As in delaying the note, like shuffle or varying the amount of signal to a delay unit?

building a pattern in piano-roll, including different note-length, pos, and velosity, and have that pattern exported to midi/ xml, and have arpeggiator able to import these arp-templates (partly known from FLs, but there is no edit-tool i know of)

There is something called groove templates which are midi snippets that you can use to force the timing on a track. Ps. Did you see this PR #3117 ? Check out the last video at the bottom post.

@musikBear
Copy link

Did you see this PR #3117 ?

@zonkmachine wooo that vid is impressive
It is not what i talk about though. I mean delay like in echo, but infact it is the velosity that changes.
I made a tut on how to build these 'velosity'-baselines, manually -Because that is possible!
https://www.youtube.com/watch?v=i_SQdvCzhhU
In Oatmeal he has an array of notes that can go into a sequenser (amazing VST btw, but very confusing)
In Synth1, there are different velosity templates, for the arpeggio, and it is awesome, but everything depends on the same velosity changes, that i makes in the vid.
The FLs feature i thought of are patterns that can be imported on a simple arpeggio with the option 'file' - I believe the groove-patterns are much later addition to FLs ..i think my trial version is 6 so it is ancient :p

@zonkmachine
Copy link
Member Author

Got it! Trying it out now and it grooves. Actually, I'm pretty sure #3117 can produce this already.

@musikBear
Copy link

musikBear commented Oct 17, 2017

@zonkmachine

I'm pretty sure #3117 can produce this already.

Wooo!
yesterday in bed, i realized that the groove-thing/ filed-aprSeq actually already is next to possible with the components lmms got now
If you got an interesting arp-pattern and want to 'bank' it, all that is needed is to * mute everything

  • move it to a empty area in the project
  • unmute wanted
  • inclose it in a loop

Only thing missing is:

  • export as midi inside loop

If that is added in 1.2x(+) then grooves ao arp seq can be saved and imported!
(i often do my best work in bed..)

@zonkmachine
Copy link
Member Author

zonkmachine commented Oct 20, 2017

If that is added in 1.2x(+) then grooves ao arp seq can be saved and imported!
(i often do my best work in bed..)

I don't think any more functionality like this is going to be in 1.2 . The first 1.3 RC should be out not long after 1.2 though., as I've understood it. As to your other ideas I've added 'templates' to the list for now. I'll look into the rest later.

@zonkmachine
Copy link
Member Author

zonkmachine commented Oct 20, 2017

I think pretty much all regressions since 1.0 should be fixed. The last long standing issue now is the skipped/double notes which is currently held back by #2606. It's probably the same issue though.

@zonkmachine
Copy link
Member Author

I've split the duplicate/skipped notes into two separate tickets. The duplicate notes come from note lengths being calculated wrong causing extra space at the end for a new note to be generated.

@zonkmachine
Copy link
Member Author

Proposed fix for the 'extra notes' here: #5523

@pkillnine
Copy link

Ideally there would be a way to be able to change the arpeggio chord for each note inside the piano roll. Currently you can only set one chord per instrument.

@musikBear
Copy link

@pkillnine

Currently you can only set one chord per instrument

No you can play chords with arp, if you do it like this:
https://www.youtube.com/watch?v=qBN6Hjom6S0

@pkillnine
Copy link

@pkillnine

Currently you can only set one chord per instrument

No you can play chords with arp, if you do it like this:
https://www.youtube.com/watch?v=qBN6Hjom6S0

That's helpful thanks, but still quite clunky. If you could set a single note to play a particular chord pattern as an arpeggio, then it would be easier to experiment with different chords in the piano roll interface.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants