"Discarder" pipeline Demo

So here’s a little thing that 1.15 Virtual Mappings makes easy.

Last year @dannytaurus suggested a new pipe which he called Change after a similar MaxMSP object.

The idea was to strip out identical notes from the message flow.

Danny’s motivation was primarily creative, but it’s cropped up in more mundane ways for me,
for example…


…when using LFOs to produce several “variably-Rescaled” CCs which then sometimes just output the same numbers, potentially clogging the MIDI stream.

Ideally I’d like a dedicated pipe which would have all sorts of flexibility but…

…in the meantime, here’s a simple one liner:

What it does
In the top line (the only one that needs to be kept)

  • a Transform creates a copy of the In Range CC#s.
    This is used as a mapping on an unused channel.

  • for each CC# you want to whittle down/discard, there’s a Drop Transform which is restricted to just one CC#.
    It’s value range is mapped to it’s CC copy…

  • …so when, say, value=73 comes through, after that every other 73 value will be dropped until a new value comes in


The other lines are just to help demonstrate the idea in action:

Here we see Ch1 CC97 being rescaled to give lots of duplicate values:

And here we have the Ch15 “mapping” CC being filtered out showing that we only have one Ch1 CC97 of each value getting through

Obviously adaptable for Notes, I might post a fuller version on patchstorage.

Just did this...

…because when I looked at it, I realised changing the CC version to the Note version wasn’t quite so straightforward.

An experimental patch:
In the category of “Virtual Mappings Now Let Us Do This”

Each of the 3 demo lines ensure only “new CCs” or “new Notes” get through.

The lines in the other sections are just to generate the duplicate messages to see each of the key lines in action

When Monitoring, the Display will show all the (Ch15) mapping messages created by the now-removed original Notes/CCs

hey, thanks @jsilence, for drawing my attention back to this

I ended up doing two versions of the Note Discard:

  • one removes both Note On and Note Off as separate tasks.
    I think this is probably monophonic and will fail with overlapping notes

  • the other just Replaces any “duplicate” Note On by a Note Off.
    This should be more reliable unless you have a synth which gets nasty when offered stray Note Offs

This is a simplistic starting point in terms of functionality, IMO; I think it would be much more interesting to have a version which discarded notes within a mappable ±n semitones.
That, put through a Scale Remap or MicroScale, could be fun in a generative context.