I’m new at midihub, and trying to create a set of pipes where I can use a Cobalt8 to control all of the parameters of a Moog Sirin
To do this, I need to remap all the CCs of the knobs and joystick of the Cobalt to match those of the Sirin and I’ve run into a couple of obstacles I can’t figure out
TRANSFORM CC INTO PITCHBEND
remapping CCs to different CC’s seems pretty straightforward, but I can’t figure out how to remap a CC to pitchbend
It seems that I need to use the Transform pipe to do this, but I don’t understand what all of the pipe parameters mean
The Joystick X+ CC is 116 and I want to turn that into pitch bend
So I have it set to:
MODE: replace
WHAT: Control Change
Into: Pitchbend
but then after that I have no idea what’s going on - there seems to be no parameter to let me define which CC# I want transformed into pitchbend.
What am I misunderstanding?
I have a transform pipe to turn aftertouch into filter cutoff CC and that let me input a CC value, but if I want CC to pitchbend the available setting are different.
REVERSE CC VALUES
I want to make the Joystick down (Y-) behaviour go from the current filter setting at the center position, down to zero at the downward extreme. To do this I need to reverse the CC values
If I do a rescale from input low-high 0-127 to 127-0 - will that accomplish what i’m trying to do?
IN/OUT
I have about 45 parameters to remap - is the correct way to do this to have 45 rows each starting with MIDI A in and ending in MIDI A out?
This is correct.
You want just CC#116 to be picked up so set Work with CC Number in Range Low|High to 116
Pitchbend, like Song Position Pointer has “high resolution” values (128x128=16,384 values instead of 128) so it strictly needs two numbers to get full resolution.
Yes(as long as you’re talking straight CC input to CC output, not some mapping)
Make sure you unset Any Id to do the Rescale only for the joystick CC
PS. you may also want to Rescale your CC116 before it gets to the PB Transform to get the right PB range…
IN/OUT
I have about 45 parameters to remap - is the correct way to do this to have 45 rows each starting with MIDI A in and ending in MIDI A out?
Not if you’re remapping with Transform; you can set each to only respond to just what you want and thus keep them in the same line
As an extra thought, if you’ve got ranges of CCs in and CCs out you might be able to get clever with CC Remaps to save some time and effort†. You can get nice results with using Scale Remap too, if you’ve got a batch of CCs which are evenly spaced and you want change the order (12 remaps with abt 4 pipes).
Lemme know if you want to go there and need more detail.
(Always worth sketching out your full remap list and looking for sub-patterns)
† can always pluck out anomalies with Transform too
just had a glance at Sirin_Manual_2_1.
Quite a few Hi-res/14-bit/NRPN/MSB&LSB controls there. Are you trying to map to any of them?
thank you for getting into the weeds of this with me!
ah i see, the fact that it was a range of CC’s confused me - when are people working with ranges of CCs? that also initially confused me about the CC remap pipe…
i tested my joystick for pitchbend and it does give 16384 values - but what are the LSB and MSB for pitchbend? i don’t just put zero and 16384?
And i don’t understand what Arg 1 and Arg 1 are or MSB to value … the transform pipe is largely gibberish to me!
Rescale it to what? you mean from 0-127 to 0-16384?
no, i’m remapping them all with the CCremap pipe
so that means the correct way is in fact for 45 pipes that start with MIDI IN and end with MIDI out?
from what i understand midihub pipes don’t yet MSB/LSB so i’ve just been using the low res CC’s. is it possible to do high res remaps? how?
when are people working with ranges of CCs? that also initially confused me about the CC remap pipe
Lots of uses but maybe not obvious. Will try ping a couple over later.
All part of Transform Power!
i tested my joystick for pitchbend and it does give 16384 values - but what are the LSB and MSB for pitchbend?
check out my pic in above link: PB takes 128 tiny steps (LSB) for every big (MSB) one.
But as you’re going CC → PB you’re gonna lose your fine steps.
don’t understand what Arg 1 and Arg 1 are or MSB to value … the transform pipe is largely gibberish to me!
Transform can set your new message’s properties to aspects of the Incoming (say CC# of CC value) OR whatever numbers are in the Arg1/2 fields.
Super powerful & flexible (means eg you can have just note G8 Transformed to Prog Chg 5 )
but takes a time for most of us to click just how much all this flexibiliy can do.
(That’s why I’m trying to write a guide on it!)
Stick with it; it will Transform your Midihub usage!
Rescale it to what? you mean from 0-127
If your CC → PB is like in my snap above (CC val → PB MSB) you might not want the full range of the CC val → full range of PB MSB. to get a smaller range you might Rescale CC say [0;127] → [32;95] to get less extreme bending
is it possible to do high res remaps? how?
Short answer, don’t try!
Easiest way is to use a controller with endless encoders that churns out NRPNs.
PS. I thought you were going CC → PB (ie. losing res).
Let me know if you’ve got 16384 vals coming out of Cobalt, cos you can do stuff with that!
i’m not sure i understand - right now i have the pitchbend range on the cobalt and sirin to 2 steps up and down, but i can change it to up to 24 in either direction.
and yes it turns out that the joystick X+ (cc 116) on the cobalt has a full 0-16384 range for PB and so does the X- (cc 117) has 0-16384 in the other direction.
so for Cobalt’s X+ / cc116 to be mapped to Sirin’s pitchbend - if i want the joystick to give me whatever range i choose on the cobalt and sirin - what exactly do i put in the transform pipe for all the values?
but then it can’t be just CC116. to send out 128 x 128 values it must be sending two (‘Coarse’/‘Fine’) CCs.
If instead X± are sending PB on difft channels, then you’re in business.
post up a MIDI monitor snap or two (Filter out any chaff like Clock/Active Sense etc (Incoming Filters) and I’ll take a look after I’ve eaten!
hmm - well maybe the midi implementation chart is misleading - when i bend the joystick on the x axis this is what it reads as - no CC just pitchbend - even though it’s not routed to anything in the patch i was using
Let’s say…
… you had a bunch of CCs 60-70…
…and you want to send out CCs 30-40 but their order is completely different.
…so a CC Remap’s no use and CC has no pipe than can do that
…but Note on does!
So you Transform just that range to Notes…
…use Scale Remap to reshuffle 60-70
…Transpose them down to 30-40
…and Transform them back.
Doubtless many other uses which other readers might chip in with - that one’s in my head right now cos just been using a variation of it.
the MIDI monitor isn’t working on the midihub app for some reason and i don’t have time to figure out why, but here’s what it looks like when i gave the joystick the tiniest bump in the X+ direction - and yes CH1 for both directions. The earlier screenshot i posted has be switching directions at the end - same result if I route the joystick to a low res parameter.
Aah, this is interesting! Work with CC Number in Range Low|High means “which CCs is this pipe going to respond to?”
So in my example, when you turn CC#60 or #64 or #67 etc, they will be Transformed into notes
but CC#59 or #72 or #93 will be ignored
No matter how you set your Ranges, either one event is Transformed or the incoming message is ignored and just passes through.
ie. Transform never creates more than one message!
PS. There are creative scenarios where you might want 1 CC → Many , just as Harmonizer gives you one Note → Many
but if it’s actually just transmitting pitch bend messages already, then i don’t need to transform it into anything, because the sirin will understand it as pitchbend.
But again, just assuming that the X+ joystick is in fact CC116 like it says in the manual, I still don’t understand what to put in the transform pipe for
Set Pitch Bend LSB to:
Set Pitch Bend MSB to:
Argument 1:
Argument 2:
Pitch Bend Out: Enables / disables the joystick X axes from transmitting MIDI Pitch Bend messages to MIDI-out. You may want to disable this behaviour if the COBALT8 is connected to other synthesisers that responds to MIDI Pitch Bend messages. Please note that if this is disabled the joystick X axes will instead transmit CC messages for MODALapp communication.
oooh ok i see - it’s funny i was looking for something like that in the manual but couldn’t find it - i must have been searching for “pitchbend” which is how they spell it a bunch of the time…
I remember trying the same experiment with a MIDI Event Processor Plus and I think the pitchbend worked correctly - i’ll see what happens when I try it with the midihub
and to be clear - the CC implementation chart lists the X axis joystick as CC 117 - so what I was trying to do was transform CC 117 into pitchbend - which is what I wanted to use the transform pipe for
but then i discovered via the midi monitor that the X axis joystick actually transmits pitchbend, not CC
so now eveything makes sense - it’s only CC 117 if you disable pitchbend out
except for one thing still doesn’t click in my mind
What is argument 1? and why is it 3?
And why is MSB linked to value?
With some Transforms (eg. Note_on → always CC#76 value=63) you’d use both Arguments
With others (eg. Note_on → always CC#=NoteNumber value=Note Velocity) you’d use neither of the Arguments
In this case, I could’ve set LSB to Arg2, point is we’re setting LSB to a “fixed” number…
And why is MSB linked to value?
…cos MSB is the “Coarse” setting…
… so sweeping the CC 0 → 127 will also sweep your PB from min to max
(set Sirin to give the tonal range you want)
if you set LSB to value instead, you’d barely hear a difference
(like comparing a distance of “99 metres” (MSB) vs “99 centimetres” (LSB))