|
Post by eccecello on Nov 2, 2013 2:16:36 GMT
hallo from berlin!
i want to use CC1 to loop between CC10 127, CC11 127 and CC12 127. so when i press CC1 first time it sends CC10 127, second time CC11 127 and third time CC12 127. when press again, it goes back to CC10 and so on.
one more question. what's the rule to write CC value 0?
where can i find the basic rules?
thanks a lot!! steam byter is very powerful tool!!
david
|
|
nic
Soapbox Supremo  
Troublemaker
Press any key to continue
Posts: 2,011
|
Post by nic on Nov 2, 2013 10:12:31 GMT
Hi eccecello, I'm sorry to say that the Stream Byter is not (yet?) smart enough to cycle though rules as you describe. Right now, I can't think of a way of doing what you request. Maybe something for the future if enough people ask for it. Maybe you could achieve something similar with the hold flag? I don't know your actual use case, so this is just an idea. Press CC1 127, sends CC10 127 Hold CC1 for 1 second, sends CC11 127 Hold CC1 for 2 seconds, sends CC12 127 # example hold flag use BX 01 = BX 0A 1F +C BX 01 = BX 0B 1F +H1000 BX 01 = BX 0C 1F +H2000 The CC MIDI message is BX nn vv where: - B is the letter B for CC message type - X is MIDI channel 0-F (1-16 decimal) - nn is CC number 00-1F (1-127 decimal) - vv is CC value 00-1F (1-127 decimal) CC numbers and values must be 2 digits, so to specify 0 or 1 you write 00 and 01 The basic rules are outlined in the built-in manual and there is a guide I wrote here
Or, just post questions here. Regards, Nic.
|
|
|
Post by eccecello on Nov 2, 2013 11:01:19 GMT
hi there nic,
thanks a lot for your quick answer. mmmmmm... i am sad to know this is not possible, i didn't thought it would take so much smartness to cycle though a given rules. i hope stream byter goes to school!
anyway. i am using irig blueboard, which can't "hold" as a normal midi controller. but can i use the time spent between sending 127 and 0 for this?
if i press CC1 127, and press CC1 0 two seconds later, it sends CC11. if i press CC1 0 four seconds later, it sends CC12, and so on. is this possible?
thanks a lot.
david
|
|
nic
Soapbox Supremo  
Troublemaker
Press any key to continue
Posts: 2,011
|
Post by nic on Nov 2, 2013 11:09:54 GMT
The hold flag is quite specific. It expects CC ons and offs to set/cancel/trigger the hold events. What you are wanting to do is trigger the hold event when you release the controller, but vary the hold event depending upon how long the controller was held down... Right now, it won't handle that logic. You can of course send different CCs when you press and release, but this only lets you piggyback two CCs on that single blueboard button.
Actually, over a cup of tea, I had a brainwave about your initial request. I think that it can be done in conjunction with scene changes and having 3 different rulesets (1 per scene). I will try and prototype something and see if it will work. I'll report back later on. Have weekend kids chores to do first.
Regards, Nic.
|
|
|
Post by eccecello on Nov 2, 2013 13:14:36 GMT
that's so nice, i thank you a lot. let's see if it works. as i think this "cycling" midi thing is something we all have used in live sets, to cycle on three or four different music loops, or patterns, or presets. as it allows you to make it all with a single button.... instead of 3 or 4 buttons just for that!!
all the best
david
|
|
nic
Soapbox Supremo  
Troublemaker
Press any key to continue
Posts: 2,011
|
Post by nic on Nov 2, 2013 14:19:23 GMT
OK, I got it to work using scenes and the stream byter.
Here are the steps:
1. Make sure that Scene Channel (Preferences>Options) is set to off while we set things up.
2. Select the beaker icon on the port on the left where the blueboard events are coming in. It is important that this is an input port. This trick will not work on the output port.
3. Open the Stream Byter, enable it and enter the following 2 rules:
# eccecello magic - looping commands BX 00 7F = CF 01 +C BX 00 7F = BX 09
4. Press 'Install Rules', Done and Done and now go to the Scenes panel and hold down Scene 000 until you get the dialog. Enter a name for the scene (eccecello1) and press Save.
5. Return to the Stream Byter and adjust those two rules to read:
# eccecello magic - looping commands BX 00 7F = CF 02 +C BX 00 7F = BX 0A
6. Press Install Rules, Done, Done and this time hold down scene 001 and name it eccecello2
7. Return to the Stream Byter (last time) and adjust the rules again:
# eccecello magic - looping commands BX 00 7F = CF 00 +C BX 00 7F = BX 0B
8. Press Install Rules, Done and Done and save this into scene 002 and name it eccecello3
9. Finally, go back to Preferences>Options and change the Scene Channel to 16
Try it out... worked for me.
To explain what the two rules do in detail:
BX 00 7F = CF nn +C
This issues a program change command on channel 16 that gets cloned and sent back into MidiBridge and switches the scene when you press the controller down after the other rules have been processed.
BX 00 7F = BX nn
Just remaps the original controller message to the value you want.
By saving the three slightly different rules into the 3 scenes, the controller event switches scenes in a round-robin style and gets mapped at the same time. You only have to set this up once. MidiBridge will remember the scenes.
You can expand on this of course and season to taste, but that is a way of achieving the controller event looping you are after.
Regards, Nic.
|
|
|
Post by eccecello on Nov 2, 2013 16:02:29 GMT
hahahhaaaaa
you are fantastic! thanks a lot. yes it works. i love these kind of tricks. also i think it is wonderful this communication between developers and users, it makes the technology experience so human.
great!!
just a question, how cpu demanding is midibridge doing things like this?? i mean... i use sometimes like 5 apps in background doing different things, audiobus... etc.
thank you a lot. have a nice weekend. i am having it!!!
david
|
|
nic
Soapbox Supremo  
Troublemaker
Press any key to continue
Posts: 2,011
|
Post by nic on Nov 2, 2013 16:10:02 GMT
MidiBridge hardly uses any cpu compared to any audio application. MIDI messages are 2-3 bytes each while an audio application is pushing (usually) 88200/8 bytes per second around.
The routing / filtering code is hand crafted to be as efficient as possible (if I may say so myself), so even if you had hundreds of rules in the Stream Byter (sometimes this is necessary) it wouldn't break a sweat.
Regards, Nic.
|
|