|
Post by eccecello on Jan 5, 2014 21:23:38 GMT
dear nic,
i am wondering if this is possible using steam byter. i do a movement with my cello, which sends a CC and PG (using accelerometer data of idevice attached to it), but if i am not very precise (and you can not be very precise in the middle of a performance), sometimes it sends 2 or 3 CCs. and that ruins all the action. i just need one single CC and PG sent.
first movement sends a CC and a Program Change that changes scene inside midi bridge, it would be perfect if i can block next incoming CC and PG during 2 or 3 seconds in this new scene. in case i do accidentally extra movements they are not sent.
i hope this time you can also find one of those wonderful "workarounds". ;)
happy new year!
david
|
|
nic
Soapbox Supremo
Troublemaker
Press any key to continue
Posts: 2,011
|
Post by nic on Jan 6, 2014 10:20:54 GMT
Oh, you do like to challenge things!
You can do this using the hold function in the Stream Byter with scene changes.
First, in the scene that triggers the scene change when receiving the controller. Let's call it 'Trigger' and assume it is at slot 000. Let's assume that the scene you switch to is in slot 001. You don't say which controller # you are using. For my example I am going to use hex 71, which on my test keyboard sends a 7F on press and a zero on release. To use this trick, your controller must do the same (ie. it should send 7f and 0 only and not continuous values).
First make sure the current scene is 000 (Trigger)
The Stream Byter rules in your trigger scene probably look something like:
# switch to scene 1 when CC 71 pressed BX 71 7F = CF 01 +C
Now, change that rule like so:
# switch to scene 1 after 2 seconds BX 71 = CF 01 +H2000 BX 71 7F = CF 02 +C # switch to scene 2 immediately
Install rules and update that scene, now load scene 1 (the one you normally switch to when you trigger)
Modify the Stream Byter rules to add everything you want blocked using +B rules, for example:
# block cc 71 and all PG changes BX 71 = XX +B CX = XX +B
Press 'Install Rules' and save to scene 2 (new scene!)
What will happen is that when you trigger the controller, it will switch to scene 2 which has all those block commands to suppress any further controller/program changes and 2 seconds later it will switch to scene 1.
Naturally your rules are going to vary because you probably use a different controller, channel and so forth, but the concept is to use the hold flag to switch to your 'normal' scene n seconds after you trigger the change to an intermediate scene with the block rules.
Regards, Nic.
|
|
|
Post by eccecello on Jan 7, 2014 16:37:28 GMT
hi nic, thanks a lot for your reply. i used to work with max/msp, i got used to do whatever i had in my mind. now that i have moved to ios plataform, i want to be as free as i was before!
very nice idea to make the trick, but i don't get it to work.
when i put +H2000, it says ERR. i suppose you meant +D2000.
but it doesn't make a difference, as soon as i take out the +C and substitute it for +D2000 the line stops working, and it doesn't change scene anymore.
for instance:
BX 00 7F = CF 0A +D2000
it should change to scene 10 after 2 seconds, when receive CC0 127. shouldn't it?? ...but it just does nothing.
is there something i am missing?
thanks
david
|
|
|
Post by eccecello on Jan 7, 2014 17:43:52 GMT
sorry sorry
it works! ...of course, how could i doubt it. i just had to take away the "7F" from the delayed PG.
thank you very much again. this has helped me a lot to improve the accuracy and quality of my performance!
david
|
|
nic
Soapbox Supremo
Troublemaker
Press any key to continue
Posts: 2,011
|
Post by nic on Jan 7, 2014 18:04:25 GMT
Yes as you found out the input clause when using the hold flag specifically has to be without the value in the case of a controller.
Glad to hear you have it working. Definitely useful having some MAX/MSP experience! You have some complicated event processing going on there.
Regards, Nic.
|
|
|
Post by eccecello on Jan 7, 2014 20:27:36 GMT
(edited) i just hadn't checked all connections to be the same!
one more question: how can i send the same value x3 times? i have tried
BX 4D 7F = CF 0A +C BX 4D 7F = BX 12 7F BX 4D 7F = BX 46 7F BX 4D 7F = BX 12 7F +D100 BX 4D 7F = BX 12 7F +D200
but the last delayed rules are not received.
thanks
david
|
|
nic
Soapbox Supremo
Troublemaker
Press any key to continue
Posts: 2,011
|
Post by nic on Jan 7, 2014 21:11:51 GMT
I was just about to say to check that the connections are not being broken over scene changes!
Your second rule rewrites the original 4D CC to 12, so the remainder of your rules are not matched.
You probably need to add a +C to all those rules...
I'm not 100% sure (yes, I know I should be), but be careful about switching the scene in the middle of cloning those events. I would suggest moving the first rule to the end, so that all the other events get cloned and queued before the change of scene. Safer, I think.
Regards, Nic.
|
|
|
Post by eccecello on Jan 7, 2014 21:13:11 GMT
mmmm... excuse me nic. but i don't understand... i see that to make a repetition work i need to take away the flag 7F from the event that is received... but in the example of the ramp you made for me, the resulting code of all those CC repetitions has the "7F" flag.
also i have got the problem that if i don't put it, it also will react to the CC 00, and i only want this rule to be performed when the CC is 127.
is there any documentation or examples about this repetition thing and it's logical rules?
many thanks again.
david
|
|
|
Post by eccecello on Jan 7, 2014 21:19:00 GMT
all right!!!!!
so the fantastic +C makes the thing work!
oh my god, all day wasted trying to make this thing work... sometimes i am afraid i will become a control-freak, and i will forget that all this was about making music!!!
you know i am very grateful, not need to say it again (but i said it).
|
|
nic
Soapbox Supremo
Troublemaker
Press any key to continue
Posts: 2,011
|
Post by nic on Jan 7, 2014 21:28:27 GMT
Hi David,
I should have been more specific about what I meant. Here is how I would change your rules so that all the events (not just the first one) get sent
BX 4D 7F = BX 12 7F +C BX 4D 7F = BX 46 7F +C BX 4D 7F = BX 12 7F +D100 +C BX 4D 7F = BX 12 7F +D200 +C BX 4D 7F = CF 0A +C
The reason I added a +C (clone) is because without it the first rule (BX 4D 7F = BX 12 7F) is rewriting that event to Bn 12 7F and because the event has been changed it will no longer match on the next rule since it is now a 12 controller and not a 4D controller. I also moved the rule that triggers the scene change after the others, just to be safe so that those events get sent before the scene change.
BTW, the only time you are forced to remove the (third byte, eg. 7F) is if you are using a +H flag in your rule.
I'm pretty sure I updated the built in doc with the pure detail of the new flags (+H) and posted here somewhere too.
I will come clean and admit that the Stream Byter was developed so I could add 'unusual' features remotely for customers without having to write C code and go through the App Store update process.
I'm really (pleasantly) surprised that quote a lot of people have taken to writing their own rulesets, but I remain here to help where I can as I know it isn't straight forward!
Regards, Nic.
|
|
|
Post by eccecello on Jan 8, 2014 23:29:46 GMT
stream byter is a very powerful tool, and your help is very much appreciated! i would even pay for it. you're always there and solve all our problems (regarding to midi things...). this is so great.
now i have learned the +C thing, i am very happy with a little of work (and your help), i am able to think on an midi idea, and make it possible using stream byter. so... i want to thank the "app store update process" for being a pain in the ass!!!
cheers
david
|
|