Can MIDIHub use CC messages to inform Velocity/Volume?

Hi MidiHub heroes-
Question: How might I use CC’s to continuously inform the overall volume / velocity of MIDI Notes?

I have a MIDI device outputting a steady stream of CC 80 values + an occasional stream of Note On / Note Off. The MIDI Notes are always the same velocity (100). I would like to use the CC 80’s to act like a sort of volume knob, but I can’t wrap my head around how to do this. Can you get me started in the right direction…it feels like it should be possible.

So far all I have come up with is it might have something to do with a Transform and Velocity Modifier Pipe.


I figured it out (by accident, just clicking around)!

  1. I used a filter pipe to remove Note on/off.
  2. I added a velocity pipe and clicked the ‘map’ button.
  3. The velocity pipe picked up CC 80 as the trigger.
  4. I went back to the filter pipe and unchecked Note on/off so the notes could pass through.
  5. I observed that the result was always exceeding 100% (e.g. all Note On’s came through as 127)
  6. I added a preliminary velocity pipe, with less than 100%, adjusting until the range of output I was seeking had the desired result.

Why am I doing this?
I have a MIDI Sprout, that turns plant energy changes into MIDI Notes. Smaller variations of change are sent as a continuous stream of CC 80 messages. I wasn’t sure what to do with these CC 80s. I had considered applying a filter or modulation with the CCs to the instrument playing the plant notes. But then I remembered something ‘artificial’ about the output. Everything is velocity 100. That is kind of boring. So I set out to see if I can use the CC 80 as a variable volume control, for a more ‘organic’ experience of the plant music.



That’s a great solution! :slight_smile:

Btw, did you mean you keep the Note On / off events there? :slight_smile:

Thank you - I updated my steps - I had to filter out the Note messages, so that when I then added a velocity amplification pipe and hit map it would only see the CCs. Since Notes weren’t coming through - the Midihub map immediately picked up the CC coming through. The step I missed, added above, was to uncheck the Note filter after I had the velocity amplification pipe mapped.

Since I already knew it was CC 80, I probably did not need to even mess with the ‘map’ button. But by good UX design and my clicking around, I still got the result I wanted :).

1 Like

So if I understand this, the Sprout is sending sthg analogous to a NRPN where the MIDI note is the MSB and the CC80 is the LSB?
Intriguing: does it send at regular intervals or is that variable too?

Nice solution, btw, the temporary filter.

:slight_smile: I had to look up all your acronyms, but the gist of the plant interface, (now called a Plantwave but out of my budget):
The plant electrical changes come out as two things: MIDI notes = less frequent, with variation depending on the plant or cactus, and CC 80’s, highly frequent. There are probably 15-20 CC 80s per note that a plant generates. I think those CC 80s come out almost all the time, so there must be some threshhold on the device that is reached to trigger sending a note. I think of the MIDI notes as ‘course grain’ data, and the CC 80s as ‘fine grain’ data.

I like that in the MIDIHub I can observe the mapped volume amplification responding in real time, so I can adjust the ‘pre’ volume amplification pipe to get it in a useful range. I tried mapping that CC 80 (NRPN as you suggested) to a cutoff filter on a synth, but it moved so much, it was not pleasant to experience. The volume changes are more subtle. Similar to the volume adjustments though, I could probably damper the variability of a cutoff filter outcome with MIDIHub so it is not so wobbly.

1 Like

sorry about the acronyms & thanks for the reply!