MIDI Delexandra -- MIDI to CV modules -- Beta

Today I’m announcing the beta release of my first plugin: MIDI Delexandra. It consists of two forks I’ve been fiddling with for my own use which expand upon the existing modules MIDI-CV from the Rack Core and MIDIpolyMPE from moDllz.

The former is Duo MIDI-CV. This take on Rack’s MIDI-CV brings the following changes:

  • MIDI pitch bend range is configurable via context menu
  • A new Bent Pitch output carries the sum of pitch bend and note pitch data
  • Allows for Rotate, Reuse, and Reset modes to be used with MPE
  • Secondary outputs are added for all note-related MIDI data, allowing for polyphony up to 32
  • The number of channels is individually configurable for the primary and secondary outputs
  • When all channels of the primary output become occupied, the module assigns subsequent notes to the secondary output
  • A new polyphonic “Note Off” trigger input, which forcibly resets the modulation data associated with a note on the corresponding VCV channel
  • Using MPE Rotate, MPE Reuse, or MPE Reset modes with a non-MPE MIDI controller allows for modulating only the last-played note using channel modulation data (pitch wheel, mod wheel, channel aftertouch)

Then there is Super MIDI 64. This take on MIDIpolyMPE brings the following changes:

  • All polyphonic outputs have been quadrupled, allowing for polyphony up to 64
  • Allows for setting the number of active outputs and number of voices per output
  • Adds an Output Rotation mode where incoming notes are rotated first across the module’s outputs and then across each output’s channels (A1 → B1 → C1 → A2…)
  • Expanded from 8 assignable monophonic CC outputs up to 20
  • Allows for note and velocity range exclusion by setting minimum note/velocity higher than maximum note/velocity. The range in between is then excluded, and all other values are allowed.

I plan to eventually bring together the individually unique features of both into a single module.

Some notes on usage:

  • When using polyphony >16 in either module, they pair well with @stoermelder’s Mirror module. This allows you to tie together the knobs of 2-4 oscillators/envelopes/filters in order to best treat them as a single module with polyphony >16.

  • Duo MIDI-CV’s pitch bend range setting works by scaling the voltage of the Pitch Bend output, from a minimum of +/- 0.16V (+/- 2 semitones as sent by the external MIDI device) to a maximum of +/- 8 volts (96 semitones). The default is the same as Rack’s MIDI-CV: +/- 5V (60 semitones).

  • Duo MIDI-CV’s MPE Rotation is helpful when controlling sounds with a long release, such as Resonator and Modal Synthesizer with little damping. This way you can let each note ring as long as possible until the rotation loops back around, while retaining MPE’s note-per-channel control over pitch bend etc.

  • Duo MIDI-CV’s “Note Off” input is useful for resetting the pitch bend and mod wheel data associated with a particular channel in MPE mode. Normally these settings hang around, resulting in an audible portamento-like slew of the pitch or modulation data when the next MIDI note lands on that channel and snaps the data back to zero.

  • One way to solve that issue: take the output of the envelope generator associated with your sound’s amplitude, split the polyphonic channels, and connect each one to a few instances of the module Zero CV 2 Trigger from the AS plugin. Then merge the resultant trigger outputs and connect the merged polyphonic cable to the Note Off input of Duo MIDI-CV. Now channels will reset in the background as soon as each one’s associated voice is finished singing.

  • I enjoy using 9 channels per output on either module in conjunction with Plogue’s chipsynth PortaFM in the Host module. This VST emulates a Yamaha OPLL FM chip which maxes out at 9 polyphony. With Duo MIDI-CV it is possible to poly-chain two instances of PortaFM for polyphony of 18, or up to 4 instances with Super MIDI 64.

  • moDllz has a nice manual for MIDIpolyMPE which remains applicable to Super MIDI 64.

  • Super MIDI 64 currently uses a rather large amount of CPU when running at high polyphony count.

Linux, Mac, and Windows builds are available on GitHub (thanks to @baconpaul’s instructions and scripts, and Microsoft’s Azure pipelines).

10 Likes

Pitch bend in Duo MIDI-CV was broken in the initial release, but now it should be fixed.

I’ve also added the ability to set separate ranges for positive and negative pitch bending. This allows for setting the positive range to 7 and the negative range to 5 in order to have maximum bend in either direction land on G when starting from C, for example.

3 Likes

Beau travail :slightly_smiling_face:

1 Like

Today I had a thought: wouldn’t it be cool if one of these MIDI modules could send non-MPE modulation data only on the VCV polyphony channel corresponding to the last note pressed? This way you could sort-of get MPE-style per-note expression while using a non-MPE MIDI controller, just limited to the last note that was played.

For example, you could hold the sustain pedal, roll a chord, and then use a pitch wheel to bend only the last note played rather than bending the entire chord. Similarly you could use the mod wheel or even channel aftertouch to modulate only the last played note (no polyphonic aftertouch keybed necessary).

I started looking through the code for Duo MIDI-CV to see about implementing this, when I had a funny realization. I had already inadvertently created this feature before: in my implementation of the MPE Rotate, MPE Reuse, and MPE Reset modes!

If you enable any of these three MPE modes in Duo MIDI-CV, pitch wheel, mod wheel, and channel aftertouch modulation being sent by a regular non-MPE MIDI controller will only apply to the last note played.

Only one thing remained to be fixed for this use-case. If you bend the last note, keep holding the pitch wheel off-center, then press another note, you would expect the new note to also be bent. However, because the bend is only set when a MIDI message arrives instructing it to do so, and because that MIDI message is only sent when the pitch wheel moves, this would not normally happen.

To remedy this, I added an option to copy the last received mod wheel and pitch bend information to a newly pressed note. This can now be found in the submenu which contains the MPE modes.

2 Likes