With **v6.12 build 498** most of the core work of this post has been completed. Things still left to do: - To add a visual indicator about an On parameter's current state when modulated - And items posted under ther reply with the title: "Some related ideas, listing them here for now" I may mark this post complete once Mela 6.12 is out just to keep things organised, but I will still keep track the small items left. At least internally.
v6.11 made further progress: MIDI Processor Modules - The On parameter of MIDI Processors is now more performance-oriented, meaning that even when turned off, they continue to monitor input and update their internal state as needed. - This prevents them from sending unnecessary note-off messages when turned off. - For example, turning off Euclid, Chord, or Transposer releases the held notes and retriggers the input note-on events. - Turning them back on sends the corresponding note-off events for the inputs and retriggers the output. - The new behaviour makes them more robust and user-friendly while helping prevent stuck notes. - Updated modules so far: Euclid, Chord, Control Change, Groove, MIDI Channel, MIDI Delay, Note Chance, Note Length, Note Pulse, Overlap Remover, and Velocity. - Modules to be updated in future versions: Arpeggiator, Note Range, Note Stack, Quantiser, Scale, and Strummer. - Transposer: Adjusting the Semitones parameter now releases held notes and triggers the new transposed notes. - Note Event: Removed the redundant On parameter. - Note Hold: Removed the redundant On parameter. Chord Module - The Note On and Pitch parameters now retrigger note-on and note-off events when their values change. - This allows adjusting the parameters and hearing changes instantly without needing to feed the module a new note-on event. - Modulating these parameters can lead to interesting algorithmic compositions. - It's recommended to place an Overlap Remover module after the Chord module to prevent earlier note-off events from interrupting the latest notes.
v6.10 made decent progress: - A module no longer dims when it or one of its ancestors is turned off. - The On parameter has changed from a binary type to a continuous one. - It is always a Mono modulation target, even if the module is in Poly mode. - For Group and Stack modules, a submodule's effective On value is the minimum of its own On parameter and its parent's. - Modulators: The On parameter acts as the amplitude of the modulation signal. - Pitch Processors: The On parameter crossfades between the input and the generated Pitch signal. - Audio Processors: The On parameter crossfades between the input and the generated Audio signal. - These changes mean the On parameter no longer causes clicks in audio when changing state. - Since the On parameter no longer disables a module's processing or switches its output between Mono and Poly, it has been removed from modules where it added little value or could cause confusion. - The following modules no longer provide the On parameter: Correlation, Meter, MIDI Capture, MIDI-to-Poly, Oscilloscope, Pitch Oscilloscope, Poly-to-Mono, and Voice Activity.
Since the On parameter will no longer disable module's process code and have any effect whether its downstream signal is Mono or Poly, it makes sense to remove the On parameters from certain modules to reduce any confusion. Here's the list so far: - Correlation - MIDI-to-Poly - Poly-to-Mono - MIDI Capture - Meter - Voice Activity - Pitch Oscilloscope - Oscilloscope
While working on implementing the crossfading functionality for Pitch/Audio Processors I realised Groups' and Stacks' On parameters need to have special behaviour. Crossfading doesn't make sense. For example, if a lane (aka a root-level Group module) is turned off, what does crossfading even mean? **Solution:** If a Group or Stack is turned off, it means all its submodules are turned off. And since the On parameter has become a continuous value, the effective value of a submodule's On parameter will be the minimum value of the parent and self. For example, if a Group's On is at 75% and a submodule's at 90%, the submodule will behave like it's at 75%. For other modules with sublanes, like Effect, the crossfade approach will work great.
The suggested solutions will be implemented over several updates.
**Some related ideas, listing them here for now** - All Toggle and PopUpList parameters should have modulation indicators. - Enable a mode on a parameter, including Dials and Sliders, where it displays the modulated value. This is especially useful for cases where the value changes slowly and the user is controlling modulation in real-time with an external controller. (e.g. Note Range parameters). - Drag-and-Drop target modulation Edit Modulation features should work on Toggles and PopUpLists. - **Arpeggiator’s Mode** (maybe it should be called a Pattern) should offer an Off value. Where it will simply stop generating patterns. - This was discussed with Jon in other threads, but I’m considering adding the Macro Button, where it will only be in the On state while the button is being touched. - **Euclid** should offer the Retrig toggle like Arpeggiator, i.e. when it's on, the pattern will be retriggered following the first note-on rather than the host grid.
Shipped with Mela 6.12