-
-
Notifications
You must be signed in to change notification settings - Fork 1k
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
Chord delay #2380
Comments
Sounds like a "harp" feature, simulate the strumming of strings with a short gap between. |
Exactly! |
Arent we really talking 'general humanizing' -eg ways to make both Quantization and or volume with just a few percent jitter or randomness? |
Duplicate of what issue? |
He's referring to #1165
Although they both have their roots in adjusting timing (or in the case of #1165, pitch too), this isn't the same exact request. @DeRobyJ is requesting that a chord has a delay between attacks of the same chord. For example a chord like this: may actually be played like this But he's requesting it on the |
Ok, that's right. (even though I think just one knob could do it) |
Would this be for all chords, or just "stacked chords" -- i.e. created through the stacking function. |
Stacked function only. |
Two dials add a circle around a centre, and honestly would not be far more complex than one knob. Flourish and Strum? For random pink crossing trigger and linear up or down sweeps. Or a Poisson distribution mean and variance for triggering based n a seed of absolute song time. It would however make copying bars to a different time have a differing sequencing. |
@DeRobyJ I am making this now. |
Should this be marked 'in progress' i cant do that |
I think you should set the distance with a knob and then interpolate as accurately as possible in between. A sweep with 1/192 offset between notes is definitely distinguishable from all of them hitting at once. Another possibility would be to use both a q knob and a distance knob, I suppose. |
Nice!
I think the ideal would be to have a knob with milliseconds that can sync to tempo, just like the Arpeggio Time knob.
I'm not sure what you mean here. I think we can just have a menu similar to the Arpeggio one. But I feel like there's not enough space, so I'm not really sure about the UI. I'm also not really sure of what the Q knob does, is it like some random time variation to make it more or less human? In that case, we do need to have both. Randomness should be an option, not the only way to do it! |
@Spekular & @DeRobyJ |
I think I've missed something. Are you making a button for the Pianoroll editor? I think that's another feature, just like the Chord list in PianoRoll is a different feature from the Chord/Stacking Function in the Plugin window. It's neat for the piano-roll, but it's not related to this issue I believe. |
Yes it is for piano-roll. All staked notes, reacts and become strumming-notes, so also those you insert as chords from the chord-table, i know that is a but different from one more feature on the 'Stacked-chords', but as you said 'a button could also work' |
I see Well, it can do too, might actually be more useful |
it would be for all stacks instead of only those chosen in chord-table. It also 'works' for a collection of chords. |
I could try and have a look at the code, which of your branches is it? |
It not on github yet, i only have it locally, but i can update :)
|
Ok it appears that you copied the quantizeNotes() function for reference. ::shiftPos() has three more updating methods:
These are methods of the Pattern class, the last one is probably used to update the length, in bars, of the pattern, to deal with the possibility that the position shift has put a note outside of the current bars. I'm not sure what is happening with the actual new position tho, I didn't really like the behavior in the video, we'll check that later. |
Ahaa.. I will see what they do! Thanks! |
Yeah it's pretty much try and find some comments about the methods! |
Reply to #1165 (comment) sorry @spechtstatt for tossing you around like this
Strumming and restoring a single chord is fairly easy, but the problem is if you want to strum multiple chords and then restore them. |
You are welcome :-) I am interpreting this as a kind of continuous strumming operation on two chords and we are now talking about the last state of this operation - I hope this is correct? I think I had something like this in mind when I was talking about a grouping algorithm which does not only take the overlapping into account but allows also for a slight gap between the notes - as I was trying to describe with a kind of "beam" - and all the starts (because we are going to the right) inside the beam would be added to group. Additionally it would require that the starts are sequential. Otherwise it would include the first note of the second chord. Also already grouped notes need to be excluded from being candidates for the next group. We also need to decide if the stacks are shifting to the right or if they are instead stacks with two notes shifting to the left. But I think this would be determined by the first note and the subsequent inclusion of the additional "group" notes. |
Correct, think of the image above like a video with a smooth motion. Thing to consider when making that grouping algorithm: The left is preferred when creating a strum. But eventually when notes start to overlap it will mess up bad. Even if you could reverse it, the result would probably be unpredictable. |
For now I would argue for a destructive and dumb strum (disable journaling, change note start positions as necessary, re-enable journaling and journal the new position). I say this because I think the logical conclusion for a "smarter" strum (taken to the extreme) might be non-destructive note filters/transforms/adjustments* and I don't think anyone wants to go there right now. *Something like effects but for note data, adjusting the notes parameters to generate swing, humanization, transposition and so on. |
@allejok96: I completely agree that users need predictable operations but I think we have to differ between two different types of predictability:
So we could add a small visual feedback which just shows the identified groups somehow like this (the single red one would e.g. not be included because it would be a "group" with just a single note): This way the user would be able to deselect notes which should not be included or even decide to do it more step-by-step for each chord separately if it is a very special or complex situation - which would then be more or less similar how @Spekular suggested. I think we can improve the algorithm a little bit to include an overlapping (or distance if the group does not overlap) treshold between the notes in a group because it does not really make sense to include notes which have a completely different overlapping or distance value. But of course it would also be possible to go just the brute force way as @Spekular suggested (if I understood it correctly) by just moving everything what is selected and just hold e.g. the bottom note fixed (and maybe the top note if shifting to the left). It would be really easy to understand and a small but helpful addition. |
How would a slider work, one end for equal time and the other direction for progressively more obvious linear skew? Controllable parameter |
If we reach the conclusion that more controls are needed - e.g. also for the group selection parameters - we may go into the direction of a separate strum control panel. Also a possible approach (more like the FL Studio solution which has more parameters). |
Atm afair the finest graining that is possible for notes in pianoroll, is 1/196. |
First part of this is awaiting review |
In Func menu, Chord section.
Let's add a new knob for "delay", that is a delay between notes.
When I try to play some octaves or fifths manually and I like them, I often activate the Chord function, but they sound different, because all the note start at the same time.
Instead, having a 1ms delay before each note of the chord could be really fun!
It's something like the Tempo knob for Arpeggios, but instead of releasing notes and playing them over and over, it keeps each note until the chord is complete.
Of course it would be nice to select a tempo sync just like in the Tempo knob.
(this knob can be then randomized with an LFO controller, giving a more "human" or natural effect to chords)
If I didn't explain it well enough:
Select Fifths and a range of 2
You play C3:
current behaviour: it plays C3, G3, C4 and G4 simoultaneously.
With the Delay knob, put at 10ms: it plays C3, after 10 ms G3, after another 10 ms C4, and 10ms after G4.
The text was updated successfully, but these errors were encountered: