|
Post by portlandmike on Apr 11, 2016 12:42:00 GMT
First of all, this is an amazing product. Going to allow me to bring much less gear to gigs (using iphone instead of computer to use my Korg Nanokontrol 2 as an organ drawbar controller, and route/ merge midi signals, use internal P255 sounds for bass instead of computer plugin/ audio interface, using velocity converter on iphone instead of hardware velocity converter), and use my equipment in ways I couldn't before.
I am looking to use my expression pedal to modify the velocity of notes. I have a Yamaha P255 digital piano and a MIDI organ pedalboard (Keyb Pedals 25). I am using the organ pedalboard to play notes from an upright bass sound on the P255. Using this program, I have added a note-off delay and made it monophonic, which is great for foot-played basslines.
I want to use my expression pedal (hooked up to my iphone with Audiofront's MIDI Expression) to control the velocity going out of the organ pedalboard (which essentially allows me to control the upright bass volume in real time). I am fairly sure I can't get the P255 to interpret MIDI CC's for one channel/ voice and not for the other, so I can't use the expression pedal as normal.
My two questions: 1. Can I use the expression pedal to control velocity? 2. Can I scale the expression pedal values, or velocity values once they've been converted by the expression pedal? I don't want the full range of 0-127. Probably something more like an output of 50-90.
For anyone else who wants to try something similar with organ pedals, this is what I put in my stream byter (thanks to Nic):
# delay all note off events by 120ms 8X = XX +D120 9X XX 00 = XX +D120
# NOTE: (I may or may not use this, because the notes barely overlap if the note off delay is short enough): # mono mode/simple 9X = BX 7B 00 +C # all notes off NX = XX +C # clone note on/off
Thanks in advance, Mike
|
|
nic
Soapbox Supremo
Troublemaker
Press any key to continue
Posts: 2,011
|
Post by nic on Apr 11, 2016 13:15:37 GMT
Hi portlandmike, The velocity value is specific to each note as it passes through, so you could apply a fixed velocity curve module to the events. It would be tricky (not impossible, just loads of rules) to map the expression pedal events to your own custom curve using the Stream Byter that only operated on a specific channel, but I wonder whether you just want to control channel volume with your expression pedal rather than velocity of each note? Sounds to me like a combination of the above might work best. Assuming that your pedalboard (let's call this PB) and expression pedal (EP) are both connected into MidiBridge via separate MIDI interfaces (are they?) then you could: - apply your velocity curve on the PB events using the Velocity Curve module to adjust the note velocities - change channel volume of the upright bass volume using events from expression pedal Am I on the right track? If so, then we just need a Stream Byter rule that remaps the EP events to channel volume events. If you can hook up the EP to a MidiMonitor type app and determine what the events it sends are (most likely a CC number on a specific channel) I can give you the Stream Byter magic to rework to channel volume. Regards, Nic.
|
|
|
Post by portlandmike on Apr 11, 2016 13:48:25 GMT
Nic,
Thanks so much. That solution seems to make sense. The PB sends a fixed velocity, so I can probably just find an appropriate fixed level on the Velocity Curve.
The EP sends CC 11 on channel 1. According to the P255 manual, midi CC 7 is "Main Volume." I'm not sure if that applies to all keyboard sounds or just a specific channel? I don't know enough about midi. Ideally, I'd like the expression pedal to only affect the bass, and not the piano volume (both sounds being from the same keyboard).
|
|
|
Post by portlandmike on Apr 11, 2016 13:49:47 GMT
One last thing. If this works, is there a way to scale the range of the Channel Volume (I'm assuming CC)?
Thanks, Mike
|
|
nic
Soapbox Supremo
Troublemaker
Press any key to continue
Posts: 2,011
|
Post by nic on Apr 11, 2016 14:00:31 GMT
Hi portlandmike, Yes, CC is channel volume which is indeed channelised, so to convert your EP events coming in one CH1 to control volume of channel 2 you use a rule like: B0 0B = X1 07 You can then add a velocity curve to that port to limit/control the volume range of the EP Note all the above assume the EP and PB are on separate MIDI interfaces in MidiBridge. If they are on the same MIDI interface then there are other complications we have to take into account, but we'll only worry about that if they are! :-) Regards, Nic.
|
|
|
Post by portlandmike on Apr 11, 2016 14:31:59 GMT
Great! It works. Yes, the EP and PB are on different MIDI interfaces. I can't figure out how to get the velocity curve to work. I tried it on both the expression pedal input and the MidiBridge output. Is the velocity curve normally just for Note-on?
|
|
nic
Soapbox Supremo
Troublemaker
Press any key to continue
Posts: 2,011
|
Post by nic on Apr 11, 2016 15:33:40 GMT
portlandmikeD'oh! Yes, velocity curve is just for note ons (I must have been dreaming) You can either construct an agricultural curve with some Stream Byter rules covering CC ranges or you could convert the CC11 to a note on at input, pass through velocity curve (also at input) and then rewrite note in to CC7 at the output. Let me know if you need rules for either approach. Regards, Nic.
|
|
|
Post by portlandmike on Apr 11, 2016 16:12:41 GMT
Nic, thanks again for all your help! I think the latter solution makes sense to me, as I could easily modify the velocity curve. Would the agricultural curve (first solution) consist of writing a rule for each individual velocity? That sounds harder to change on the fly.
|
|
nic
Soapbox Supremo
Troublemaker
Press any key to continue
Posts: 2,011
|
Post by nic on Apr 11, 2016 16:52:23 GMT
portlandmike, Yes, the rewrite is less work for sure: 1. on EP source (left) enable Stream Byter with this rule: # rewrite CC11 to temp note in BX 0B = 9X 7F2. on EP source (left) enable Velocity Curve which will operate on the notes 3. on P255 destination (right) enable Stream Byter with this rule: # rewrite temp note in to CC7 9X 7F = BX 07
Note that I have hijacked note 127 for the temp rewrite. I'm figuring you don't send this note very often to the P255's bass sound. Regards, Nic.
|
|
|
Post by portlandmike on Apr 12, 2016 2:22:00 GMT
Everything is working well overall! The only thing I couldn't figure out was how to get the EP "in" to respond to the velocity curve. Maybe I'm not implementing it right, or there's another workaround. Nic, if you could briefly outline the agricultural method, I would really appreciate it.
It is wonderful to be able to get the most out of this keyboard, and to leave my computer/ laptop stand/ cooling fan/ audio interface and assorted cables at home. I found I have to change the midi out to the pedalboard channel on the 255 function settings to pick the sound for my pedalboard, and then switch back to channel one, no big deal. Easily recalling scenes is great, less of a pain than loading 3 or 4 computer programs and fiddling with settings.
Thanks, Mike.
|
|
nic
Soapbox Supremo
Troublemaker
Press any key to continue
Posts: 2,011
|
Post by nic on Apr 12, 2016 9:36:28 GMT
Hi portlandmike, I just tried my instructions for applying a velocity curve to a CC and it did work for me. There's essentially 3 things going on: 1. we convert the CC11 to note on 127 at source 2. the velocity curve is applied to the note events in the source 3. we convert note 127 to CC7 for channel volume at dest Step by step, this is what I did using a keyboard controller (launchkey, 1st knob (CC21)): - enabled Stream Byter on Launchkey port on left - add rule BX 0B = 9X 7F - enable velocity curve on same port (launchkey left) - selected preset 'fixed velocity 64' as a test - connect launchkey left to midi monitor app on right - enable Stream Byter on above port (right) and enter rule 9X 7F = BC 07 Now, when I turn the knob on my kbd the MIDI monitoring program shows CC7 with volume of 64 no matter how I turn the knob. I guess check your steps against the above. It will hopefully be something simple. If still no luck, hook up a midi monitoring app and see what is being sent. Regards, Nic.
|
|
|
Post by portlandmike on Apr 12, 2016 23:42:16 GMT
Great, thanks for the clarification! I must have made some mistake before,it's working now. One last question...
Could I combine these two rules into one function? The mono mode doesn't seem to work when I simply put them both on the same source:
# delay all note off events by 120ms 8X = XX +D120 9X XX 00 = XX +D120
# mono mode/ simple 9X = BX 7B 00 +C # all notes off NX = XX +C # clone note on/off
Thanks again, this app is amazing!
Mike
|
|
nic
Soapbox Supremo
Troublemaker
Press any key to continue
Posts: 2,011
|
Post by nic on Apr 13, 2016 9:06:57 GMT
Hi portlandmike, I suspect those rules you have might have been constructed where that second set was on an output (where clone behaves differently) and I would have expected a block rule at the end also. Here's an alternative way to do mono mode on an input port, but your controller *must* be transmitting only on MIDI channel 1 for this to work # mono mode (input port) 90 01-7F = BX 7B 00 +C 90 01-7F = XF +C 90 01-7F = XX +B 9F 01-7F = X0Here's how it works: A - when a note on, channel 1 is seen: - clone an all notes off - clone the note on to channel 16 - block the original note in B - when a note on, channel 16 is seen: - remap back to channel 1 This remapping to channel 16 is to ensure that the all notes off is sent just before the note on (and not the reverse) I think that will work; haven't tried it - you can test out the theory! Regards, Nic.
|
|
|
Post by portlandmike on Apr 21, 2016 3:24:24 GMT
Thanks so much!
|
|