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).