helgoboss / helgobox

Helgobox: ReaLearn & Playtime
https://www.helgoboss.org/projects/helgobox
GNU General Public License v3.0
204 stars 20 forks source link

Quantized and MIDI Note ON based automation control #275

Open alfonso73 opened 3 years ago

alfonso73 commented 3 years ago

Hi, in my personal workflow i find useful to have automation quantized by Reaper's grid or based on the MIDI notes in a MIDI track. For an interesting way of using automation from a controller would be great to have an option to generate a "steppish" automation based on a given grid (1/16, 1/16D, 1/16T, etc, etc, and a user given value as for example 1/20 for quintuplets and the likes) and/or based on the MIDI notes on a choosen MIDI track. So instead of having a contnous, curved automation a steppish automation is obtained. best.

helgoboss commented 3 years ago

This would need quite some effort to implement accurately (with the automation changes being really on the grid lines). Marked this as bounty-only.

alfonso73 commented 3 years ago

Thanks for considering it! What does the "$$$ (bounty only)" means?

vonglan commented 3 years ago

Could this be solved with a separate Quantization JSFX in the chain?

@alfonso73 : "Bounty" is a form of crowdfunding for software development, see here: https://en.wikipedia.org/wiki/Bountysource. I also just learned today. Makes sense, also to make transparent to the developer, how important the feature is to how many users.

alfonso73 commented 3 years ago

@vonglan thanks for the info! i'll definitely try to contribute to the project. BTW i don't know yet how to use a JSF between a ReaLearn source and target. i'll check the manual to see if it's possible and how to do it.

helgoboss commented 3 years ago

Yes, I think it could be done using a quantization JSFX and using ReaLearn controller input <FX input>. But it wouldn't result in accurate automation envelopes. The automation changes would end up slightly off grid. For this to work, I think it would be necessary to quantize the automation envelope after writing it ...

... @alfonso73 which makes me wonder: Are you interested in the "steppish" effect

  1. as a live effect primarily?
    • Then a JSFX could really be the solution because for live usage, sample-accurate parameter adjustments are AFAIK not possible anyway and probably it wouldn't matter.
  2. or in the resulting automation envelope?
    • Then maybe you could invoke a ReaScript or REAPER action that quantizes the automation after recording (but it almost sounds you have a solution for this already).
alfonso73 commented 3 years ago

@helgoboss

Primarilly is aimed at my studio work. Sometimes i need to automate some parameter giving it a fixed value for the whole duration of a MIDI note. One thing could be using a Note to CC value converter so i.e. in a two octave range you get a full range of 0-127 for say CC1. But since i think tha using a MIDi slider is more ergonomic paradigm i would like to get a sort of quantizing mechanism based on the MIDI notes actually present in the MIDI item/track and/or a given grid. I must confess that my live performance are still based on Ableton Live and there i have plenty of option building some Max4Live devices that deal with this things. Do you know of some JSFX device that quantize MIDI CC input?

vonglan commented 3 years ago

@alfonso73 : there is some discussion of this in this thread: https://forum.cockos.com/showthread.php?t=173638

However, when quantization is used live (not for a recording), any program (no matter Ableton Live or Reaper) can only delay a signal, never transport it back into the past. Are you sure that is what you want? Or just quantization of an already recorded automation track?

Anyway, I am sure there already is a working JSFX (simple, scripted MIDI effect) that does this (live quantization).

vonglan commented 3 years ago

However, when quantization is used live (not for a recording), any program (no matter Ableton Live or Reaper) can only delay a signal, never transport it back into the past. Are you sure that is what you want? Or just quantization of an already recorded automation track?

Thinking about it again, I have to correct myself: If you want to quantize the automation (not actual notes), then delaying (without transporting into the past) isn't a problem.

Still, I think you should be able to find a JSFX that does that. Also, quantization via notes on a different track should be possible. One could program quite a simple JSFX that "listens" to the notes on that track, stores the timing in shared memory, and then another JSFX on a different track that reads the timing information and controls the incoming MIDI CCs accordingly.