I received interesting feedback from a Mela user who created a complex and very interesting MIDI preset, and it got me thinking about some of the required changes that can address some shortcomings that have also been bothering me. At the moment, the On parameter is very utilitarian, but it can be optimised to be more performance-oriented.
Below are some proposed changes.
Add a visual indicator about an On parameter's current state when modulated
  • Currently, an On parameter might look like it’s in an off state, but a modulation might have the state flipped.
  • There’s no way to know this, and the UI will look disabled in that scenario.
  • Solution
    : add a visual indicator showing the modulated state and don’t dim/disable the module UI.
Turning off a module should no longer completely bypass its engine
  • At the moment, when a lane or a module is turned off, the UI is dimmed, the parameters can no longer be changed via UI, and modulations no longer update.
  • Solution
    : No longer bypass the engine (specific details below) and don’t dim/disable the module UI.
  • Small downside is the module will continue to use some CPU because even when bypassed, it still updates UI and runs some DSP. But that's ok because most likely the user has the module around, so they can unbypass it as needed.
MIDI Processors should no longer auto-release notes
  • Currently, if an Arpeggiator or Euclid module receives a C3 note-on, and then the user bypasses the module before receiving the corresponding note-off message, the module will automatically send out a C3 note-off message to prevent stuck notes.
  • Now, the issue with this is, the user might still be holding down the C3 key.
  • Solution:
    On bypass, Arpeggiator and Euclid simply finish playing their last note(s) and don’t start another note, and they will send out note-on messages for the currently held notes. i.e. in the example above, on bypass C3, note-on will be sent out. That way, when the user finally releases C3, that’s when C3 will stop playing.
MIDI Processors update output on parameter change without changing input
  • Currently, some MIDI Processor modules don’t change output if parameters are updated and the input hasn’t changed.
  • For example, if the Chord module settings are adjusted, the output won’t change for the currently held notes. The change will happen only after the input is changed.
  • Solution Part 1:
    The Chord module should update its output as soon as the note On parameters change. This will allow chord building in real time.
  • Solution Part 2 (unlikely a good idea):
    The Chord module should update its output as soon as the Pitch value changes. I’m less sure about this.
  • (Vel parameter changes causing the output to the Chord module output to change don’t seem useful at all. Retriggering notes in this case seems like a bad idea.)
  • Continuing on the Solution Part 2, if we go ahead with that, maybe it means things like Note Range and Transposer should also update their outputs as the range or transposition amount changes. Again, I'm not certain this is a good idea.
Audio/Pitch Processors crossfade their outputs when the On parameter is toggled
  • Currently, when turning an Audio Processor on or off, there’s an audible click, e.g. VA Filter, this is because audio switches instantly.
  • It’s not a big deal if it’s just trying things out and isn’t automating or modulating the On parameter as part of a song or performance.
  • But if you do want to automate and modulate or even tap on the On toggle during performance would be great if it didn’t click.
  • Also, there’s another issue related to the DSP being turned off for oscillator and LFO modules. The phasor no longer updates. This means if you turn the oscillator off, next time you turn it on, its relative phase would have changed against other modules. The resync will happen on the next note-on event.
  • Solution:
    Turn the On parameter from a simple on/off 2-state list into a continuous one with [0%, 100%] range and make it crossfade like a wet/dry mix.
  • This means the parameter can be modulated and automated, and will change its value between on and off continuously.
  • It will also be clickless when tapping on it, as there will be a quick 20ms crossfade.
  • For simplicity, it will continue to be a Mono target, meaning it won’t support Poly modulation.