|
Post by crony on Aug 9, 2013 13:35:11 GMT
Hello Nic, I'm trying to setup different actions using the hold new function into the stream byter but actualy fail... For instance, I have the first pedal of my FCB1010 assigned to the program change 0, midi channel 1, and while pressed, it starts recording a loop. I've added this rule into stream byter : NX 00 = CX 00 +H500 NX 00 = CX 00 + H600 So , I was expecting to declare a new control change, that could lead to an other action on the same button from FCB1010. But I can't declare the action into Loopy, it says it's already used (by the previous action already declared...) Sorry for my english (I'm french) Could you help me a bit ? Thanks ! PS : also posted here forum.loopyapp.com/discussion/885/long-press-midi-actions#Item_18
|
|
nic
Soapbox Supremo  
Troublemaker
Press any key to continue
Posts: 2,011
|
Post by nic on Aug 9, 2013 14:00:18 GMT
Hi crony,
I think I understand you. I can read Francais reasonably well if you prefer to post in french.
First of all, as a precaution, turn the scene channel setting in MidiBridge's Preferences>Options to 'off' just to avoid MidiBridge changing scenes on you if you were not expecting that.
You need to program your FCB to send note on/off when you press/release the pedal. I don't know much about the FCB but a quick download of the manual suggests section 2.4.6 is what you will need to do.
When you have configured the FCB to use note 0 for the switch, then change your rules to just this one
NX 00 = XX 00 NX 00 = XX 01 +H500
When you press the switch it will send program change 0 When you hold down the button on the fcb for > 1/2 second then it will send program change 1
This assumes that the FCB will send a note off when you release the switch. I think this is the case, but I am not sure.
To check what the FCB is sending and what MidiBridge sends you might find it useful to use a midi monitor application. There are a few free ones as well as my own MidiVision app (not free).
Regards, Nic.
|
|
nic
Soapbox Supremo  
Troublemaker
Press any key to continue
Posts: 2,011
|
Post by nic on Aug 9, 2013 14:07:39 GMT
I just took a look at the loopy forum post and I think you must already have the fcb configured correctly.
I think the problem could be that you are sending program change 0 at 500 and 600 msec. I think you need to use a different number so they do not conflict with loopy's settings.
eg:
NX 00 = CX 00 +H500 NX 00 = CX 01 +H600
But how will you know to take your foot off the switch in the 500-600msec window if you want the first trigger?
Regards, Nic.
|
|
|
Post by steve842 on Sept 21, 2013 12:50:11 GMT
I was discussing this with the OP over at Loopy and the reason for the extra duplicate message at 600 ms is to activate the confirmation to clear the track. If you only have the message at 500, then the track clear confirmation screen will appear in Loopy but then never clear the track. In this case you would never want to remove your foot between the 500 and 600 ms window, its either both messages or nothing to activate the track clear. I still don't have a handle on the stream byter yet, so by using the code you posted, will this still accomplish this?
One issue I continue to experience with this same programming is that by pressing different buttons too quickly, it will think I am doing a hold and will activate my hold function when I don't want it to. For example, if I were to quickly try to mute multiple tracks by pressing once on each of the pedals that corresponds to the various loops, sometimes one or two will get cleared (which is my hold command) in the process. I wish I could better tailor the coding so that this wouldn't happen but I'm not sure how to do this. I've experimented with the hold time value but it doesn't seem to fix it.
|
|
nic
Soapbox Supremo  
Troublemaker
Press any key to continue
Posts: 2,011
|
Post by nic on Sept 21, 2013 13:23:04 GMT
Each use of the +H flag will queue the output clause to be sent if the input event (note or controller) is not cancelled before the hold time expires, so if you look at crony's original rules where there are two rules with +H, if note 0 is held down for 600msec then controller 0 will issue at 500msec and 600msec. ie. the +H flag implies that the outgoing event is to be cloned. Thus if the aim is to indeed send the same controller twice as you describe, the original code should do that.
I'd need a bit more to go in with respect to holds triggering when you don't want them to. Upping the hold time should definitely increase the length of time that the hold needs to be triggered. However, maybe your rulesets are written in such a way that there are multiple hold rules for the same input clause. Feel free to post your rulesets and I can take a look and see if I can understand what is going on.
Regards, Nic.
|
|
|
Post by steve842 on Sept 21, 2013 13:34:03 GMT
My ruleset is pretty much the same as crony's since I shared mine with him over at Loopy. All 10 buttons have a hold function assigned. Somehow the press time amounts are being added together between the different button presses to occasionally clear out loops when pressing a few of them in rapid sequence. Is it the B0 vs the NX that is causing this?
# Enter rewrite rules here # Press 'Install Rules' when done
B0 0F = B0 33 7F +H500 B0 0F = B0 33 7F +H600
B0 10 = B0 34 7F +H500 B0 10 = B0 34 7F +H600
B0 11 = B0 35 7F +H500 B0 11 = B0 35 7F +H600
B0 12 = B0 36 7F +H500 B0 12 = B0 36 7F +H600
B0 13 = B0 37 7F +H500 B0 13 = B0 37 7F +H600
B0 14 = B0 38 7F +H500 B0 14 = B0 38 7F +H600
B0 15 = B0 39 7F +H500 B0 15 = B0 39 7F +H600
B0 16 = B0 40 7F +H500 B0 16 = B0 40 7F +H600
B0 17 = B0 41 7F +H500 B0 17 = B0 41 7F +H600
B0 18 = B0 42 7F +H500 B0 18 = B0 42 7F +H600
|
|
nic
Soapbox Supremo  
Troublemaker
Press any key to continue
Posts: 2,011
|
Post by nic on Sept 21, 2013 13:46:24 GMT
Rules look OK. I guess it could be a bug and maybe the hold queue isn't quite so well managed as it could be. Are you able to reproduce this behaviour at will by any chance?
|
|
|
Post by steve842 on Sept 21, 2013 17:30:57 GMT
Yes, I can reproduce it. Want me to capture it and send it to you?
Edit: Emailed you midivision info and also a video if that helps.
|
|
nic
Soapbox Supremo  
Troublemaker
Press any key to continue
Posts: 2,011
|
Post by nic on Sept 24, 2013 11:41:30 GMT
With steve842's patience and assistance I have been able to figure out that this is a limitation in the Stream Byter where it does not support multiple hold clauses per input trigger (as per the example above). A fix has been coded and will be in the next bugfix update of MidiBridge.
Apologies to all affected by this.
|
|
lid55
MidiFire Beta
Posts: 68
|
Post by lid55 on Jun 8, 2014 13:50:31 GMT
so... this has been fixed now? If MidiBridge makes long hold messages reliable on LoopyHD, I'm in.
Additionally, for this to work (I'm just trying to get it clear in my head)... is it necessary to send 2 MIDI messages (such as a NoteOn and NoteOFF pair ....or the pair of messages sent using a momentary latch CC)? My assumption is that the first message starts the timer... and any subsequent message cancels the timer... if received before the timer reaches its end. Is this correct?
My goal is to set up advanced hands-free looper control using a SoftStep and LoopyHD.
|
|
nic
Soapbox Supremo  
Troublemaker
Press any key to continue
Posts: 2,011
|
Post by nic on Jun 8, 2014 15:00:22 GMT
Yep, that is fixed in current release..
You are correct in that either a note pair or CC on/off pair are needed to start/cancel the hold.
Regards, Nic.
|
|
lid55
MidiFire Beta
Posts: 68
|
Post by lid55 on Jun 9, 2014 13:09:01 GMT
excellent! ok then, I've bought the app, now I'm working out the programming.
first question I had was (I couldn't find it in the help files): is it possible to get at just NOTE-OFF messages as well? what I think I know is that for NOTE-ON messages I use an "8" whereas NOTE-ON + NOTE-OFF messages I use an "N"... additionally, I tried the "range" "8-9" but couldn't get it to work
|
|
nic
Soapbox Supremo  
Troublemaker
Press any key to continue
Posts: 2,011
|
Post by nic on Jun 9, 2014 15:57:37 GMT
For the +H flag (special case as it operates on note on/off pair) you must use the N character for note on and off hold triggers like so:
NX 30 = BX 07 40 +H2000
When note C2 is held for 2 seconds or more, then a controller message (volume) is generated.
If you are not using the +H flag, then your rules can distinguish between note ons and offs, for example
# block all note ons 9X 01-7F = XX +B
# block all note offs 8X = XX +B 9X 00 = XX +B
Remember that many instruments send (and generators receive) a note on with velocity 0 as a note off, hence the rules above.
Also, the first character of a rule (the type) must be N, X, 8, 9, A, B, C, D, E or F. Ranges are not supported for the type although N is the equivalent of 8-9.
Regards, Nic.
|
|
lid55
MidiFire Beta
Posts: 68
|
Post by lid55 on Jun 9, 2014 17:03:21 GMT
thanks for the info nic...
starting to make more sense.... haven't quite worked it out yet though
I have: NX 40 = BX 40 7F +H1000 NX 40 = BX 40 7F +H1500
so far... this is not canceling the action if the press is short... additionally... it sends out the two control change messages on NoteOff
do I need code to block/cancel the messages if I make a short press, or should this be automatic?
|
|
nic
Soapbox Supremo  
Troublemaker
Press any key to continue
Posts: 2,011
|
Post by nic on Jun 9, 2014 21:35:52 GMT
I just applied your rules as above and I am not seeing that behaviour.
If I press E3 and release immediately only the E3 on/off is sent.
If I hold down E3 then the sequence I see (monitoring via MidiVision) is
93 40 2E B3 40 7F (after 1s) B3 40 7F (after 1.5s) 83 40 00
Are your rules on an input port (on left) or output (on right) in MidiBridge?
If you would like to email me directly I can tell you how to capture development trace which will tell me exactly what is going on.
Regards, Nic.
|
|