|
Post by pjefferson on Apr 1, 2014 11:08:35 GMT
Hello-
I am very new to this so I am hoping this is possible. I am using midibridge to control midi from the keith mcmillen 12 step on channel 13. Channel 13 is set to a B3 organ and channel 14 is a horn section. The sent notes that should be the organ are A2 through A3 while the horns are B3 up. Normally just a keyboard split. However, what I am looking to do is take any notes from B3 up and remap them to channel 14 and transpose them down an octave. This way I can get the horns to sound in the same octave as the organ.
Can I do this?
Thanks,
Paul
|
|
nic
Soapbox Supremo  
Troublemaker
Press any key to continue
Posts: 2,011
|
Post by nic on Apr 1, 2014 11:28:58 GMT
Hi Paul, Yes, you can use the Stream Byter for this. There are two conventions for numbering notes in use in MIDI. I am going to use my midi note table as a reference. If your note numbers (eg A3 to A3, B3 etc) match that convention the rules I give you will work out of the box, otherwise you will need to replace the hex codes in the rules with the correct ones. I wrote a 2 line script to generate the rules, so if the notes are an octave off I can adjust and post a different set for you. First, to enable the Stream Byter on the KMI: - Touch the beaker icon on the KMI port on left in MidiBridge - Touch the accessory arrow on the Stream Byter module - Press the 'On' button - Paste the rules below into the text box - Press 'Install Rules' button - Press Done and Done to return to MidiBridge Interfaces page The rules: # Paul's KMI horns remap/transpose NC 47 = XD 3B NC 48 = XD 3C NC 49 = XD 3D NC 4A = XD 3E NC 4B = XD 3F NC 4C = XD 40 NC 4D = XD 41 NC 4E = XD 42 NC 4F = XD 43 NC 50 = XD 44 NC 51 = XD 45 NC 52 = XD 46 NC 53 = XD 47 NC 54 = XD 48 NC 55 = XD 49 NC 56 = XD 4A NC 57 = XD 4B NC 58 = XD 4C NC 59 = XD 4D NC 5A = XD 4E NC 5B = XD 4F NC 5C = XD 50 NC 5D = XD 51 NC 5E = XD 52 NC 5F = XD 53 NC 60 = XD 54 NC 61 = XD 55 NC 62 = XD 56 NC 63 = XD 57 NC 64 = XD 58 NC 65 = XD 59 NC 66 = XD 5A NC 67 = XD 5B NC 68 = XD 5C NC 69 = XD 5D NC 6A = XD 5E NC 6B = XD 5F NC 6C = XD 60 NC 6D = XD 61 NC 6E = XD 62 NC 6F = XD 63 NC 70 = XD 64 NC 71 = XD 65 NC 72 = XD 66 NC 73 = XD 67 NC 74 = XD 68 NC 75 = XD 69 NC 76 = XD 6A NC 77 = XD 6B NC 78 = XD 6C NC 79 = XD 6D NC 7A = XD 6E NC 7B = XD 6F NC 7C = XD 70 NC 7D = XD 71 NC 7E = XD 72 NC 7F = XD 73
There are a lot of rules there so copy/paste will be essential. Don't sweat about the number of rules - The Stream Byter works through them quickly. Hopefully that should do it for you. Please let me know how you get on. Regards, Nic.
|
|
|
Post by pjefferson on Apr 1, 2014 15:41:02 GMT
Thanks Nic.
I kind of get it now. I'm trying to import the following and for some reason I cannot figure out why. Is there an easier way to do the second part? I just need it to take notes 47-54 on channel 14 and play them down an octave on the same channel.
# Rewrite C2 - C3 Channel 14 up an octave and on Channel 13
ND 30 = XC 3C ND 31 = XC 3D ND 32 = XC 3E ND 33 = XC 3F ND 34 = XC 40 ND 35 = XC 41 ND 36 = XC 42 ND 37 = XC 43 ND 38 = XC 44 ND 39 = XC 45 ND 3A = XC 46 ND 3B = XC 47 ND 3C = XC 48
# Rewrite B3 - C#4 down octave on same channel
ND 47 = ND 3B ND 48 = ND 3C ND 49 = ND 3D ND 4A = ND 3E ND 4B = ND 3F ND 4C = ND 40 ND 4D = ND 41 ND 4E = ND 42 ND 4F = ND 43 ND 50 = ND 44 ND 51 = ND 45 ND 52 = ND 46 ND 53 = ND 47 ND 54 = ND 48
|
|
nic
Soapbox Supremo  
Troublemaker
Press any key to continue
Posts: 2,011
|
Post by nic on Apr 1, 2014 18:51:54 GMT
Hi Paul, Right now the Stream Byter has a concept of note ranges in the input clause (LHS of =) but not the RHS, so to do surgical transpositions you have to do it note by note I'm afraid. You need to be careful with the ordering of your rules as they are evaluated in order, so your first ruleset will be hunky dory since you are changing channel during the note remap, so a further rule further down won't be triggered by the results of an earlier rule. Take the following from your first set of rules: ND 30 = XC 3C ... ND 3C = XC 48These rules map a note from 30 to 3C and then later on map from 3C to 48. If you didn't have that channel change also your note 30 would end up being 48! The rule of thumb is that if you are transposing a section of notes UP, then list the rules from highest input note down to lowest. Anyway, that is not what you asked of course! (excuse the diversion) In your second set of rules the 'N' (note) convention can only be used on the input clause (LHS), so if you rewrite your rules so: ND 47 = XX 3B ND 48 = XX 3C ND 49 = XX 3D ND 4A = XX 3E ND 4B = XX 3F ND 4C = XX 40 ND 4D = XX 41 ND 4E = XX 42 ND 4F = XX 43 ND 50 = XX 44 ND 51 = XX 45 ND 52 = XX 46 ND 53 = XX 47 ND 54 = XX 48The Stream Byter should not complain so loudly. The 'X' means 'preserve the existing value'. If you haven't found this already there is a Stream Byter Programming Guide which attempts to describe the syntax. Regards, Nic.
|
|
|
Post by pjefferson on Apr 2, 2014 9:13:20 GMT
Got it working Nic ... thanks. Two quick questions and then I am out of your hair for a little bit  1) I need to raise just the volume of the Horns in the patch on channel 14 or lower the volume of the organ on channel 13 - can I do this with midibridge? Here are the rules I have right now for the KMI patch. Everything is coming in from the KMI on channel 14. Output from KMI is mapped to the input of MidiBridge and then the output of midibridge to the input of BS-16i for sounds. BS-16i is set to listen only to midibridge for input. Horns stay on 14 and the organ notes are moved to channel 13 and up an octave. # Enter rewrite rules here # Press 'Install Rules' when done # Rewrite C2 - C3 Channel 14 up an octave and on Channel 13 for organ ND 30 = XC 30 ND 31 = XC 3D ND 32 = XC 3E ND 33 = XC 3F ND 34 = XC 40 ND 35 = XC 41 ND 36 = XC 42 ND 37 = XC 43 ND 38 = XC 44 ND 39 = XC 45 ND 3A = XC 46 ND 3B = XC 47 ND 3C = XC 48 # Rewrite B3 - C#4 down octave on same channel for horns and raise volume ND 47 = XD 3B ND 48 = XD 3C ND 49 = XD 3D ND 4A = XD 3E ND 4B = XD 3F ND 4C = XD 40 ND 4D = XD 41 ND 4E = XD 42 ND 4F = XD 43 ND 50 = XD 44 ND 51 = XD 45 ND 52 = XD 46 ND 53 = XD 47 ND 54 = XD 48 ND 55 = XD 49 ND 56 = XD 4A ND 57 = XD 4B ND 58 = XD 4C ND 59 = XD 4D ND 5A = XD 4E ND 5B = XD 4F ND 5C = XD 50 Thanks again for the super quick responses. This has got to be the best part of midibridge! Paul
|
|
nic
Soapbox Supremo  
Troublemaker
Press any key to continue
Posts: 2,011
|
Post by nic on Apr 2, 2014 9:49:42 GMT
Hi Paul,
Is the easiest way simply to adjust the volume sliders in the bs-16i mixer panel to your preference to set the appropriate levels for the organ and horns?
Or do you want to adjust the levels dynamically from the KMI somehow?
bs-16 definitely responds to the volume CC MIDI message on a per channel basis, so it is possible to control the volume sliders via MIDI.
Or, do you want to alter the velocity curve of the KMI's footswitch velocity?
If you can go into a bit more detail about how you want to control the two volumes I can figure something out - there are lots of options including using MidiBridge scenes to switch between preset volume levels, rewriting the velocity curves or even pinning the velocities.
Where is question 2?
Regards, Nic.
|
|
|
Post by pjefferson on Apr 2, 2014 10:39:48 GMT
Nic-
From what I have learned of the KMI so far it sends volume CC MIDI messages with each key you press so even if you set the fader in bs-16 the KMI changes the volume when it sends the notes. So I guess I'm looking to intercept the notes coming from the KMI--> route them through Stream Byter to set the volume levels of both the organ and the horns --> send it out of MIDIBridge to bs-16 with the new volume levels.
Hopefully I explained this. I figured out the second question as I was writing the last post.
Paul
|
|
nic
Soapbox Supremo  
Troublemaker
Press any key to continue
Posts: 2,011
|
Post by nic on Apr 2, 2014 10:55:21 GMT
Hi Paul,
If the KMI is indeed sending out unwanted volume CC's then we can just block them:
# block KMI Vol CC BX 07 = XX +B
hopefully the KMI sets the velocity parameter of each note based on how hard you hit the switch...
or if you want to auto-pin them to a specific volume value per channel:
# pin horns/organ volume BX 07 = XC 07 40 +C # organ - mid level BX 07 = XD 07 70 # horns - very loud
I'd say simplest is to just try to block them first and see if that does what you want.
Regards, Nic.
|
|
|
Post by pjefferson on Apr 2, 2014 20:51:31 GMT
I went with the #pin horns/organ volume option and it works great! I can use this elsewhere now too for all the channels. This will give the ability to use MidiBridge to set volume levels on the fly if needed which is pretty much impossible with the KMI since there is no iOS app for it  So the following could be used for setting control setting on channel 13 and 14 and should work. I think I am starting to get it. # Set contoll parameters for channel 13 to value 40 BC = XC 07 40 +C # Set volume BC = XC 48 40 +C # Set release BC = XC 49 40 +C # Set attack BC = XC 4B 40 +C # Set decay time BC = XC 5B 40 +C # Set reverb send BC = XC 5D 40 # Set chorus send # Set contoll parameters for channel 14 to value 48 BD = XC 07 48 +C # Set volume BD = XC 48 48 +C # Set release BD = XC 49 48 +C # Set attack BD = XC 4B 48 +C # Set decay time BD = XC 5B 48 +C # Set reverb send BD = XC 5D 48 # Set chorus send
|
|
nic
Soapbox Supremo  
Troublemaker
Press any key to continue
Posts: 2,011
|
Post by nic on Apr 2, 2014 21:14:36 GMT
It will probably work although those rules will increase the controller traffic five-fold and you probably don't want to set everything whenever you move any controller. If you are looking to set parameters on your instruments it might be time to set up a scene and program changes. I guess you can test out the above first and make sure it doesn't cause unnecessary lag with bs-16.
Tomorrow my time I'll update this thread with instructions for setting up scenes that will send out those channel init messages when the scene is selected just as a reference. Getting late here.
Regards, Nic.
|
|
nic
Soapbox Supremo  
Troublemaker
Press any key to continue
Posts: 2,011
|
Post by nic on Apr 3, 2014 9:51:25 GMT
Hi Paul,
As promised, here is a step by step guide to setting up a scene that will automatically initialise bs-16i channel characteristics when it is loaded up:
- In MidiBridge Preferences>Options set Channel Scene to 14 (in case you want to switch scenes via the KMI) - Touch beaker icon of KMI input (left) and choose 'Program Changer' and press 'On' - Adjust the value of channel 16 (at bottom) from 'off' to 0. This will be our trigger - Press Done & Done and the touch beaker icon of MidiBridge output (right) - Select Stream Byter accessory arrow, press On - Paste something like this into the text box and press 'Install Rules'
# set bs-16i params # channel 13 organ CF 00 = BC 07 40 +C # Set volume CF 00 = BC 48 40 +C # Set release CF 00 = BC 49 40 +C # Set attack CF 00 = BC 4B 40 +C # Set decay time CF 00 = BC 5B 40 +C # Set reverb send CF 00 = BC 5D 40 +C # Set chorus send # channel 14 horns CF 00 = BD 07 48 +C # Set volume CF 00 = BD 48 48 +C # Set release CF 00 = BD 49 48 +C # Set attack CF 00 = BD 4B 48 +C # Set decay time CF 00 = BD 5B 48 +C # Set reverb send CF 00 = BD 5D 48 # Set chorus send
- Press Done and Done - Remove those other rules that set volume, release etc. from the KMI input Stream Byter that you had before (remember to press 'Install Rules'!) - Touch the Scenes button and hold down scene 000 and give it a meaningful name
Now, whenever you load in that scene from the MidiBridge UI (or if the KMI sends a program change 0 on channel 14) bs16i will be sent all your setup parameters.
You could go one step smarter and tell bs-16i to switch sounds on initialisation too with something like:
CF 00 = XC 23 +C # switch to organ CF 00 = XD 54 +C # switch to horns
Note you would need to use correct values instead of 23 and 54 that correspond to the actual sound in bs-16i you want - I just made those up!
Regards, Nic.
|
|