Midi-Leveller (English)

Deutsche Version

I built the MIDI leveler because I couldn’t find a midi plugin that gave me the functionality I was looking for.

MIDI-Leveller pursues the following ideas:
I have a midi sequence and need a variation of it.
The rhythm should be adopted unchanged, only the pitches of the individual notes are changed.

The pitches should not be changed randomly so that a good sounding variation can be “picked up”. The result should serve as inspiration for further variations.
I used Native Instruments Reaktor 6 for the realization.

You can download the PlugIn here.

A MIDI signals goe through six different processing stages:

  1. Mirror – Mirrors the pitch at a fixed value
  2. Spread – Spreads (or decreases) the spacing of tones
  3. Trans – Transposes the pitch
  4. Chord Mapper – shifts the notes into a chord grid
  5. Scale Mapper – shifts the tones into a scale
  6. Output – shifts the tones into a range

All processing stages can be switched on or off individually.
Apart from „Output“, central parameters can be modulated in all stages by three different modulators:

  1. Scale Generator
  2. Sequencer 1
  3. Sequencer 2


Mirror mirrors the tones around the specified value „Axis“.
If Axis is C # 4, C4 becomes D4, D4 becomes C4.
Axis can be modulated. The result of the modulation is displayed under the controller.

To set Axis, the auto switch is pressed. When released, Axis is set to the average of all tones that have occurred while holding.



Spread can be used to change the harmonic connection by spreading the notes around the “axis” with the “factor”.

A large factor removes the notes from the axis.
A factor less than 1 moves all notes closer to the axis.
A factor of 1 does not change anything.
The axis can be modulated. The result of the modulation is displayed under the controller.

To set Axis, the auto switch is pressed. When released, Axis is set to the average of all tones that have occurred while holding.



Trans addiert den Wert „trans“ zur Tonhöhe.
Es können positive und negative Werte eingestellt werden.

Trans adds the value “trans” to the pitch.
Positive and negative values can be set.
The value for trans can be modulated. The result of the modulation is displayed under the controller.


Chord Mapper

The chord mapper puts all notes in a meaningful musical context.

All notes are corrected so that they match the set chord on the selected root.

The table below shows how the individual notes are corrected. The root note and chord can be modulated from different sources.

In the above example, the basic tone C is set, which was shifted to E by modulation. All notes are therefore corrected to an I – III – V – VII chord on the root note E.


Both the root note and the chord can be modulated by different modulators.

Scale Mapper

The Scale Mapper puts all notes on a musical scale.

All notes are corrected so that they match the set scale on the selected fundamental. The graphic below the parameters shows how the individual notes are corrected. The root note and scale can be modulated from different sources.

In the example above, the fundamental tone C is set with a major scale. All notes are corrected on a C major scale:


Both the basic tone and the scale can be modulated by different modulators.


Output combines two functions:

  1. Graphical representation of the notes in the input, the change by MidiLeveller and the notes in the output.
  2. All grades are limited to an adjustable range.

The notes are shown in the dark blue stripes as small squares. In the top strip the notes that are sent to the plugin. In the lower strip, the notes that leave the plug-in. In between, white lines indicate which notes at the entrance are converted into which notes at the exit:

The highest or lowest allowed note can be set with the controls that overlay the light blue stripe. Notes outside of this range are transposed by octaves until they are within the permitted range. The note values of the two sliders are displayed as text in the upper part.

The Modulators

The modulators have some things in common:

  • They work in the same way as a Sequnzer that runs synchronously with the host sequencer.
  • The length of the sequence is determined by the number of steps (PatternLength).
  • The playback speed of the sequence is determined by the length of the individual step.
  • The total length of the sequence results from the length of the individual steps multiplied by the number of steps. The total length is displayed as „Total Bars“.

For each parameter that can be modulated, the modulators are selected by selecting the appropriate switch.

The value of the modulator is then added to the parameter. The result of this addition is either displayed directly below the modulators or next to the parameter controller as text.

Scale Generator

The Scale Generator offers some useful presets that can only be adjusted in length and speed.

The presets can be selected on the left. These are suitable as modulators for the pitches, especially of the chord mapper.

Selecting a preset also sets a suitable number of steps (PatternLength). The length cannot be selected to be greater than the preset length of the preset.


There are two identical sequencers. These can be set in detail using many parameters.

The parameters from left to right in detail:

  • Left:
    • Max value: this allows the largest value of the modulation to be set.
    • CLR: Resets all steps to zero
    • RND: Selects a random value for all steps
    • Min value: this allows the smallest modulation value to be set.
  • Middle
    • The position display is located below the graphic representation of the steps.
  • Right
    • The level meter for the output signal of the sequencer.
    • The number (PatternLen) and the duration of the individual steps can be set in the upper part of the right control panel.
    • The delay can be delayed or brought forward (negative values) with delay. In addition, the resolution of delay can be selected.


Presets can be called up and saved under Snapshot.Unter Snapshot können Presets aufgerufen und gespeichert werden.

Saved snapshots are loaded in the left list by clicking on the switches.
To save, the storage location is selected in the list on the right and saved with „Store“.

With „Rnd“ random values are set for all parameters. „Amount“ can be used to specify how much the random values change the original values.


In order to process the notes created with Midi-Leveller further, it has proven useful to record them with another plug-in. In Logic Pro X, the Midi Fx Freeze proven its worth.
Reactor is selected in the upper slot and Midi-Leveller is loaded in it. In the slot below Midi Fx Freeze.

After the parameters have been set in Midi-Leveller, Midi Fx Freeze is switched to recording. You can then drag and drop the recording onto a free track in the sequencer.

Tips for setting

When setting the parameters, I developed the following procedure for myself:

  • Switch on all modules except mirror, modulation everywhere off (corresponds to preset 1).
  • In the Scale Mapper, set the keynote and the scale according to the other tracks of the piece.
  • In order to obtain a slight variation, values for Trans can be set between -7 and +7 by ear.
  • Mirror can be activated for major changes. „Auto“ is held there for a few seconds in order to obtain a meaningful value for „Axis“. With the “Auto” button at Spread, the same procedure is followed and then “Factor by ear” is set.
  • To make the result sound less chaotic, a chord is selected in the Chord Mapper. Variation is obtained by modulating the root of the chord by the scale generator.
  • During the setting, you regularly check the graphical representation in output. You can control outliers up and down with the two controls there.
Deutsche Version