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 !
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).
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.
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.
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
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.
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.
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