Looking for a way to filter out CC temporarily after receiving a Stop message

Hi there,

One of my machine has the unfortunate behavior of sending out CC values when the when clock is stopped (or rather, when double pressing the stop button on that machine).

Here is what the midi messages look like:
image

That’s an expected behavior that can have the inconvenience of messing with the synth patch of another machine. Being that they share -on purpose- the same midi channel and CCs.

  • I’m looking for a way using Midihub modules to temporarily filter out the messages that are being sent after the Stop message, for a duration of 200 ms for instance

  • Another possible solution would be to toggle a Filter module using the CC 123 of value 0 that we can see is sent just before all annoying CC’s; but I couldn’t figure out how

Is that possible ?

Regards,
David

Hey, David

I guess the first question is do these CC#s have a valid meaning from the source synth in other contexts? (I’ve got one where I can just filter them all the time)


I’m guessing you need to go beyond this simple solution so try this:

  • have a Stop → CC transform create a mapping which does two things
  • first it enables a CC Range Filter
  • second it triggers either a One Shot LFO or † creates a Note On with a fixed length
  • the LFO last value/ the Note Off then creates a mapping which disables the above CC Range Filter

† the choice depends on what else is going through the pipeline.
If you decide to use an LFO, go for a 180°phase Saw Up/Down to give a countdown:

Screen Shot 2024-03-31 at 00.05.56

(test the output @ 128Hz with your chosen period to ascertain the last value.)



So, essentially both work this way:

  1. Stop enables a filter which blocks those CCs, and…
  2. …sets a timer, after which the filter is disabled and we carry on as normal

Indeed ^^

Ah using an LFO for that is smart !

It’s not clear to me how the Note On solution would allow to disable the filter after a defined duration → It’s the length of the note that sets the duration ?

In my previous attemps was not able to have a “toggle” behavior on the filter though: I was only able to either only disable it, or only enable it. What exactly does “bypass” mapping expect to be turned on and off ?

Thanks for your help @resonotter !

No, Using the Note_On (rather than the One-Shot LFO) is just a way to be able to set a pause by using the Length pipe. You then use the Note_Off to Transform to an “Un-Bypass” mapping. I don’t often use it as a technique cos you have to take extra filter measures if the pipeline has notes flowing through it.

Actually, as you only need an On|Off, try playing with One-Shot Square or PCM

I tend to think of toggle as 2 separate external actions.
(described here in Virtual Mappings Techniques topic)

Here we’re talking On → pause → Off from 1 external action by using the techniques hinted at.

Happy to sketch it for you or to give screenshot hint but don’t want to steal the fun of creating it yourself! Lemme know…

Ah yes I see what you mean, that’s actually the case here

In LFO settings you mean ?

Precisely !

Trying to piece that together right now, I’ll let you know in few minutes how that goes !

1 Like

Yeah, SQ/PCM are nice cos you just get On/Off.
play with phase to get it right.

I default to Saw cos I often want a ramp of values but that’s not needed here
(no big deal tho’ cos once value dips below 64 it’ll turn your Bypass off – doesn’t matter if you send Off more than once!)

Yes I see

So not much success on my end: Toggle CC filter with LFO.mhp (2.0 KB)

  • CC filter starts with Bypass=True
  • CC filter Bypass setting is mapped to CC 123 (Ch. 11)
  • LFO seems to correctly send CC 123 127 then CC 123 0 one second later

Observed:

  • Pressing double stop correctly un-bypass CC filter → I’m not sure it’s caused by LFO of just the CC getting sent by machine
  • But the LFO does not re-bypass CC filter again after 1 sec

I’ve also tried inverting phase but no luck

Any idea what’s wrong @resonotter ?

I’ll take a look and edit this when done…

OK, this adapts yours to just show toggling by LFO (it uses a virtual OUT in order to “register” the virtual mapping.
Toggled CC filter by LFO(reso).mhp

I was thinking of the LFO on a separate line.
while you’re testing the above that I’ll sketch that out

Thanks @resonotter !

Ps: message above updated for clarity

OK, here’s the approach I’d take
Screen Shot 2024-03-31 at 18.47.07

The incoming CC123 val=0 is Transformed to CC123 val=127
This enacts the CC RF
The separate LFO disables it

PS. I reverted to Saw up cos it felt cleaner

PPS. the pause before Disable CC Range Filter (ie. Re-enable CCs being allowed through again) is 1/8 sec:

Screen Shot 2024-03-31 at 18.52.07

EDIT: see post#14 for solution preset

Gotta love virtual mappings, this would be a pain with loopbacks

Got it, good point. I used a Rescale module to change value O to 127
Got that far but then the LFO seem to not work as expected ^^

First issue I see - although it does not seem critical - is that the LFO will send out CCs when clock starts

Second issue is that the LFO seem to block any CC from going through it, so at this point, the CC123 127 (from pressing Stop button) is not received anymore by the CC Filter module, and so it is not activated anymore

image

3rd issue I see is that, when LFO does it’s thing, CC 123 value 0 does not re-enable bypass of CC Filter module:

By the way, is virtual mapping really necessary in this case ?

Absolutely yes. Any time you want to use a message either created or modified within MH as a mapping you are in virtual mapping world.
Without virtual mappings what you’re trying to do would need a physical loopback.
That’s why 1.15 is a big leap forward

PS. Note that my “reset” LFO goes to Virtual D which is not in the message flow


I used a Rescale

One can use Rescale, I avoided it simply because I don’t know how else CC123 is used by OT


This should not be the case. The “Timed” thing in Monitor is just to show that it’s MH’s timing system that is triggering these event rather than any incoming


That’s cos it’s done it job and enabled the CC RF and so no subsequent CCs (inc 123!) get through.
That’s one reason why mine has a sep line for LFO

Not all of this makes sense to me ^^

Can you please share your project file so that I can try to reproduce it ?

Sorry, Chris: tired, probably rambling
here tis: CC filter reset by LFO(reso).mhp
…incoming CC123 enables CC RF for 1/8s before LFO disables it again. That’s it basically

Well you may be tired but you aced it :spades:
This is working perfectly, thanks a lot mate !

I dived into it and it’s much clearer what was missing in my attempts:

  • a second mapping on bypass of CC filter
  • another mapping on retrigger of LFO

That and the virtual channelling of course ^^

1 Like

Good,
As a postscript, Chris, if you always want to Filter out all the CCs you could replace the CC RF by a plain Filter and have your mappings toggle the Control Change parameter.
More economical if your main pipeline is multi-purpose and you’re filtering other messages

Ah that’s a good idea indeed !

Thanks a lot

1 Like