I'm planning out the work to introduce MIDI CC Automation to Midicake ARP and I'd love your input.
Essentially, ARP will be outputting MIDI CC sequences and LFOs, alongside or instead of note data.
Here is a first draft on what I'd like to achieve. Please read through and let me know your thoughts. Have I missed something? Would this achieve what you are looking for? Would you use this feature at all? All feedback is greatly received. Thank you!
Introduction
ARP can output automated MIDI CC messages, either as a continuous modulation (LFO) or as a stepped pattern.
This is controlled by three parameters under the MIDI OUT button:-
CC Output - (Off, CC Value, Pitch as CC, Velocity as CC)
CC Number - (0 to 127)
CC Value - (0 to 127)
If CC Output is set to CC Value, the value of the CC Value patameter will be sent:-
on play
on unmute arp
up to 50 times per second (every 20ms, 50Hz)
a) if set as a modulation target and the value changes
or b) if assigned to a macro and the value changes
If CC Output is set to Pitch as CC, the pitch value of each sequence step will be sent alongside every NOTE ON message generated by the arp sequence.
If CC Output is set to Velocity as CC, the velocity value of each sequence step will be sent alongside every NOTE ON message generated by the arp sequence.
How to Configure
In Set Mode, press the MIDI OUT button until CC Control is shown, then select the desired control number, using the UP/DOWN buttons or the TEMPO knob.
To set CC as a macro target
Press and hold a Macro knob and press the MIDI OUT button, until CC Value is selected.
Note that unlike the current CC Macro assignment, you'll be able to select the CC number.
For a CC LFO
Use the MIDI OUT button to select CC Value and set the value to use as the base value for the lfo.
Then, press either FX, MOD A or MOD B and set the Modulation Target to MIDI CC Value.
Note. If CC Value is the target of multiple modulators, the output value will be the sum of the modulation.
For a stepped pattern sequence
Set CC Output to Pitch as CC.
CC messages will be sent on every step of the sequence with the note pitch being used for the CC value.
Tips:
Note, Scale and Octave Lock will prevent unwanted shifts when changing note or chord.
Note Offset and Octave modulation can be used to great effect.
Use Jump for larger value changes.
For a stepped pattern that can be used alongside a note sequence
Set MIDI CC Output to Velocity as CC.
CC messages will be sent on every step of the sequence with the note velocity being used for the CC value.
Tips.
Use Rhythm Patterns, FX or Modulation to adjust the velocity over time.
When this mode is engaged, the velocity of the MIDI Notes is fixed to the Velocity parameter value, to prevent wild and unwanted velocity changes to the sound.
Assigning CC to your device
Try assigning the CC output to a filter cutoff.
To assign the CC to your synthesizer, you may need to select the desired CC number as defined in your synthesiser's documentation.
If using a DAW or device that has a CC Learn function, you'll need a way to isolate the CC Output to only the control number you wish to assign. An easy way to do this is to assign MIDI CC Value to one of ARP's Macro controls. Then turn the knob to output messages on the control number set on the MIDI CC Control parameter.
Disabling note output
If you don't want ARP to output note data (sent alongside CC) just set Velocity to zero. Note that this will not work with Velocity as CC
Notes
Assigning Macros to CC using CC Learn will continue to function as is.
Is it one cc per channel, i think a 16 cc matrix per arp channel would be good. Keep 4 arps with note data and add a cc matrix to sequence for 16 ccs per arp.
Then lfo, velocity and pitch are nice, but LFOs/envelopes need a variety of shapes and control parameters to create interesting non basic shapes. Temporal Warp, amplitude, reverse, invert, duration, loop rate synced and unsynced, phase, fold, Sustain point (reaches a point in shape and holds until the next trigger), loop loops within when sustain point reached if enabled.
Encoders would be useful to draw our own shapes with the ability to stretch the shape over a time division, then have a looping, single one shot, retriggered or unlinked state.
Attenuation, offset and inversion per cc envelope/lfo shape is needed to keep the shape but still be able to attenuate/increase/invert/ positive or negative shift its values.
Ability to assign these ccs LFO shapes internally to midicake arp parameters or externally to devices.
Copy paste as I imagine if you do the above there are a lot of parameters to tweak that may be repetitive.
Hm, I'd almost rather have a channel type to go along with this, something like:
Channel Type: [Arp (only)] / [Arp + CC] / [CC (only)]
Then if it's Arp + CC or CC only, you'd have options like:
CC source: [pitch] / [velocity] / [value]
CC number: 0-127
CC range: (two positions min & max value) [x]:[y]
CC start value (available if cc source is [value] above)
Regardless of the channel type, the note and pitch arpeggiators will run, they just might not get sent.
To me, this is much more clear than the sort of side-effect-based "what is this arp channel sending" based on velocity and cc source which is far less explicit (and less intuitive) about what should be expected.