Transform help and question

Hello there, new to the forum and working my way though figuring out the Midihub! I’m having some trouble using Transform to convert an incoming midi note on/off messages to either CC or program change commands. I was hoping that someone might be kind enough to send me a preset example that I can open in the editor to look at the settings in the transform? Do I also need to put a filter after the transform to filter out the incoming midi notes from the Mandala from passing through?

I’m using a Mandala drum pad (Support — Mandala V3)) to send the midi note on/off commands and need to transform in CC and program change commands to control an Electro Harmonix 45000 looper (https://www.ehx.com/wp-content/uploads/2021/01/45000-manual.pdf).

Another strange thing to mention is that when I have the Mandala connected to the Midi A port on the Midihub and the editor open to view the midi monitor, it appears that when I hit a pad on the Mandala it is changing the certain parameters in the Transform object! Thank you!

Hey, @bc3, welcome to Midihub forums!

Would you upload your preset .mhp file here so users can see how your Transform is set up

(Save your preset to file, then drag to .mhp file into your reply window – or click the upload button in the toolbar )

In meantime I’ll knock out a quick Transform example…

Note → PC/CC Transform examples

OK, @bc3 ,here is a preset showing 3 different Transform examples:
bc3_Transform_examples.mhp

(Quick example, slightly longer tutorial)


In all my examples, I am

  • using a Filter to ensure only the message type I want enters the

  • restricting a pipeline to one task only

  • using Transforms in Replace mode

None of this is strictly necessary, it’s just to keep the examples simple :smiley:

Example 1: Note On → PC (base PC# on Note#)

One of the key aspects of Transform is its flexibility.
This example shows taking a range of Notes and using the Note# to decide which Program Change will be created:

first we map the notes we want (here 8 ~ 13) to the PC#s we require (here 20 ~ 25)…

these remapped notes are used by Transform to set the Program Change:

Some key properties here are
Set Program Number to = Note Number

and Set Channel to = Ch. Arg
(where Channel Argument = 7)

See how Ch 15 Notes become Ch 7 Program Changes.
See also how Velocity here has no effect.
(we could have equally used the Note Off instead :wink: )

Example 2: Note On → CC

In this example, Velocity is used to give the CC value:

see how the Note On’s

  • Note Number → CC Number/Id, and
  • the Velocity → CC Value

Hint: We can add CC Remap and Rescale/Equalizer pipes to modify these values downstream

Example 3: Note Off → CC

In this example we ignore Velocity again, because we use the incoming Notes to produce just one CC Number/Id…
…but use the Note Number to dictate what the CC Value will be

Her, I’m restricting the notes I’ll allow through and using them to create my value range…

..then the Transform fixes the CC Number to 57 (Argument 1)…

…and sets its value to the incoming velocity.




Hopefully, these examples will get you started @bc3 but bear in mind
❖ what you do with Transform will depend a lot on your design needs and your playing style/skill…

…it is perfectly possible to have a set up that:

  1. sends PCs from certain parts of the playing surface but only at very high velocities, while

  2. setting say two CC numbers from two areas at mid-velocities and

  3. toggling a bunch of CC “switches” at low velocities :exploding_head: :rocket:

With Midihub + Transform (+CC Table) + a little help here, the MIDI world is your oyster :smiley:

EDIT: replaced preset with commented version

Thank you! Preset file attached. I will dig into what you have sent and continue to get it sorted. Thanks again!
Midihub 2025.09.23 19.41.28.mhp (325 Bytes)

Also, the Mandala and the EHX 45000 will both be set to send/receive on midi ch. 5.

OK, you’re seeing params changes because you’ve mapped What to Note 47:

this means when you hit that note the message type will change according to the velocity of the hit:


so a low velocity will select Note On, while max gives you Reset



You might not need mappings for your Transforms, but you would if you used CC Table

Thank you, I understand now why the incoming midi from the Mandala was making the changes in the Transform “What” parameter.

Thank you also for sending the Transform example presets, but I was hoping you could send me another preset example using the exact note number to CC and note number to PC I am using? I can work out the others I need if I can get a clear understanding of how to setup Transform to work with the two examples below. Thank you again!

Mandala->Midi Ch.05->Note C0-> TRANSFORM-> EHX4500->Midi Ch.5->PC126

Mandala->Midi Ch.05->Note A0-> TRANSFORM-> EHX4500->Midi Ch.5->CC109 VEL127

bc3_Transform_request.mhp

You may need to correct/edit:
  1. there are three “Note Value Display” types
  • Middle C (60) = C3
  • Middle C (60) = C4
  • Middle C (60) = C5

    I’ve assumed “Middle C (60) = C4”
    (btw often best to give the Note Number: that’s unambiguous)
  1. “Midi Ch.5 → CC109 VEL127”

    I’ve assumed you mean
    “any Note On ‘A0’ message (ie any velocity) → Midi Ch.5 → CC109 value 127”?

  2. I’ve assumed you want these Note On events to be Replaced by the new messages.

  3. this written without access to MH, so I may have made a mistake!

Thank you for the quick reply!

  1. Understood, I will have to confirm the exact note number coming from the Mandala when I am connected to it later. I will then make any note number adjustments in the “Range Filter” and then also adjust to match in the “work with note number range parameter” in Transform.

  2. “Midi Ch.5 → CC109 VEL127”
    The velocity value sent has to be 127 to trigger the CC command on the 45000.

  3. Yes, the Note On events are the be Replaced by the new messages.

1 Like

Yes, these should be the only changes you need to make (barring my untested errors of course).

Watch the MIDI monitor whilst the pipes in question are selected





PS. only Notes have velocity, CCs have values. Hence my lack of certainty!

OK, almost there! Everything thing is working correctly I think with the exception of the last 4 pipes in this preset file that are transforming the midi note values in CC numbers. Is there a way that the CC range can always be output at 127 maximum? The EHX 45000 needs to see 127 for the CC command to work. Thx!

P.S. How did you get the comment lines above the pipes?? Super helpful!
bc3_Mandala_45000_transform.mhp (817 Bytes)

I think you’re misunderstanding Work with Velocity in Range Low|High.
they refer to what values Transform will work with (not output):

(from this part of the tutorial)

The CC Transform is set to always give CC 109 at value =127.





.

comment lines above the pipes??

Control click on any pipe

I am referring to the CC “Data Range” as described on the attached EHX 45000 midi implementation chart.

In the midi monitor window it shows the correct CC number being sent out, but it appears the number after is matching the incoming note velocity? Sorry I do not have the Mandala connected at the moment to give you a screen shot on the midi monitor window.

When you do…

with bc3_Transform_request.mhp

…you should see that

Work through the properties of this Transform; every one of them –except Prioritize Real-Time– is relevant to giving the “right answer”!

your CC Transforms in bc3_Mandala_45000_transform.mhp are different…

Yep, I see the mistake now in Argument 2. Thank you!!! :grinning_face:

1 Like