Device Details

Device Overview

Name/Version: MIDIfx-mr 0.05
Author: synthesizerwriter  
Description: Several inter-linked experimental MIDI processing functions in one! Filtering, Note transpose, Velocity shift, Note Invert, Velocity invert, and a deterministic pitch mapping utility that is based on pitch multiplication and modulo arithmetic.

Use at your own risk. (Putting 'Scale' or one of those other 'MIDI scale'-adjusting M4L devices after this one is recommended for those people who don't like too many accidentals infesting their music...) And have fun! (Oh, and if you get 'stuck' notes, then click on the '!' button to flush things clean again.)

The MIDI Filtering allows rapid removal of notes, continuous controllers (CC), after-touch (channel pressure) or pitch bend, and I almost always have it set so that it just lets notes through and filters everything else out.

Note transpose just transposes the incoming MIDI, and is included here because it is useful to have in a multi-purpose utility, but also because it was very useful during the development process! The rotary control is labelled "Offset' because that's what it is doing: adding an offset to the MIDI note numbers.

Velocity shift is useful to compensate for keyboards the require playing hard to get decent amounts of velocity, or for sound modules that require high velocity inputs to produce a sound at a decent volume. The rotary control is labelled 'Offset' because it is adding an offset to the MIDI velocity value for Note On messages.

Note Invert is one of those 'fun' utilities that is usable once with someone who has never seen a reversed keyboard, where the high notes are on the left, and the low notes are on the right. Actually, it can also be used to create interesting bass notes that don't just predictably track the root. The 'Offset' rotary control can be used to set the keyboard so that any key you choose is the same on the inverted keyboard. I tend to use middle C (=60 sometimes) as my reference, but you may find it interesting to choose other values and see what happens.

Velocity invert is another 'fun' function that upsets people who expect sounds to be louder when you play harder. But it is also very useful for creating 'velocity layering' in layered sounds - use inverted velocity on one of the layers and you can control the two sounds just by playing harder or softer. Once again, the 'Offset' control is merely adding to the MIDI velocity value, and this time can be used to compensate for the bias of your keyboard's velocity calibration, or any bias in your sound generation modules.

And finally, there's that weird-sounding deterministic pitch mapping utility that you were going to ignore... As it happens, not exploring it would be a pity because there's lots of scope for exploration here. You get two stages of 'pitch scaling, followed by wrapping round of the notes', which is achieved by multiplying the incoming pitch, and then applying modulo arithmetic to the result - and then doing it all again. Some people will tell you that multiplying MIDI note numbers does not produce useful results, whilst other people will tell you that you need to constrain the resulting interval madness with processing that wraps the result into manageable lumps. I'm with the 'others'.

So the 'Range' control lets you adjust from the usual '1 octave in = 1 octave out' scaling, to 1 octave in = 3.55 octaves out' super broad scaling where the two stages let you do this twice, resulting in a single octave spanning 7 octaves (and also meaning that a lot of notes are missing!).

The 'Limit' control can be used to bring that huge span under some sort of control. If you set the limit to 1, then you only get a single note out. if you set it to 12, the you get 12 notes out, and any input you put in just wraps round and round those 12, so the same 12 notes repeat themselves all across the keyboard range. If you set it to 128, then it is the same as if it was not there at all, of course!

The best way to learn how to use it is not to set the Range of one section to 1.10, leave the other Range at 1.00, and set both Limits to 128 - this gives a keyboard which is almost right (emphasis on 'almost'). Much better is to create an 8th note looped sequence (a rising scale is fine), and then to explore just one of the two processing sections. The 1.1 Range with a Limit of 12 is a good stating point - you will need to adjust the Offset control to get the output into a sensible range (watch the left and right numbers to either side of the 'MIDIf(x)_mr' title - I use middle C (=60 sometimes) and tweak the Offset to get 60 at the output). Listen to what happens with the looped sequence, and then try adjusting the Range or the Limit. Just hopping back and forth between a few range settings is pretty cool for starters...

As usual, this is experimental stuff that I'm more than happy for you to play about with, and it may or may not do what you want, or even what I intended it to do. Let me know if you have any problems, and I may be able to find the time to fix it or even improve it...

Additional information, explanation and help about what MIDIf(x)_mr is actually doing when it processes MIDI notes is available in a follow-up article in my blog:

Version 0v04 makes it easier to see the MIDI note input and output values to the Warp processing section, and corrects a pitch offset used for testing that got left in the previous version.

Version 0v05 makes it more obvious that the Note Offset rotary control is usable in Warp mode as the Input offset, and clarifies the other offset rotary control as the 'Output' offset. It also indicates internal clipping conditions, and disables clicking on the value boxes.

Device Details

Downloads: 1349
Tags utility, other, beta
Live Version Used: 9.7
Max Version Used: 7.3.1
Date Added: Nov 20 2016 11:39:11
Date Last Updated: Nov 27 2016 15:15:38
Average Rating -n/a-
Rate this device: (must be logged in to rate devices login)
Device Type: midi_device
URL (optional):
License (more info): None

Device Files

Device File: MIDIf(x)_mr_0v05.amxd



Suppose we have drum midi track with:
kick on C1
snare on E1
hihat on F#1

How to setup the filter so that only kick comes through?

Login to comment on this device.

[ browse device library ]