The crux of the single tap latency is that there has to be some latency to figure out if you did a single, double or triple. If you reduce the timeout and only use double taps then that will improve that straight away.
I am thinking maybe I could be smarter about the triple tap and have two timeout intervals; one for single vs double and another for double vs triple. Something like:
- at the end of timeout 1, if it was a double, then set another timeout in case it is a triple. Otherwise it is a single.
I will see if I can do this over the next couple of days also.
(I should probably never have mentioned triple-taps in the first place!!! haha)
1. I have successfully implemented the dual timeout feature so single taps and hold trigger as fast as you like 2. The new module also allows you to detect single tap+hold and double tap+hold events separately
Now the bad news:
I have had to rejig the channel assignments with the new features, so you will need to modify the 'Janosax Custom' module accordingly. I have included a comment block with the attached scene which describes the channel assignments in detail. Essentially the double tap channel has changed from 4 to 5 and the triple tap from 5 to 7. So where you had N3 rules in your custom mod, these should now be N4 and where you had N4 rules for triple taps, these should now be N6. Use N3 rules if you want to detect single tap+hold and N5 rules for detecting double tap+hold.
For your round-robin, make the following change (for double tap):
# button D double tap IF M0 == 93 41
Change underlined '93' to '94'
So, to use the new module (I have called it 'Blue Velvet') use MidiFire's 'Merge' button in the Scenes panel after selecting it in the list and replace 'BlueBoard Ctl' with the 'Blue Velvet' module.
There are now two separate timeout values. K0 is the first timeout and will detect single tap or single holds so these are detected quickly. K1 is the second timeout and is used to check for all the rest.
Hopefully, all will be clear. Any problems, just let me know.
Well I’ve made more extensive tests and really that works pretty well thanks you again so much.
And glad I’ve gived you some inspiration to make the new scene module :-)
I tend to use single tap / hold / double tap / double tap hold only with 05 06 delays to have a responsive setup as I have to use 05 0A delays with triple gestures. But that’s useful to have several options.
I have another work for you :-)
I now wish to have a Streambyter set of rules which I could use to remap several notes to CC’s:
- Map specific note to specific CC - ability to set several note/CC remapping lines - ability to set individually each line to toggle or momentary - ability to set individually each line for separate ramp up/ramp down time values for CC; this will allow for cleaner and more natural audio behavior, for example toggle delay audio effect. - remapped midi notes blocking, I only need CC on output, and all other notes should be allowed
The Streambyter module should be placed after Custom Janosax in the chain.
The goal here is to use BlueBoard with AUM on iOS, to toggle or momentary switch effects sends in the mixer using CC control, and other things... I will also use midi notes triggering with Loopy for live stuff/loop triggering and VoiceRack FX which allow for presets change via midi notes.
That way I will have extended live setups both on Ableton and IOS :-))
Thanks in advance for your nice work, if all of this is possible :-)
This one is easy! Let's say you want to map button A single tap (I'll use this in all my examples). For this we would see this message: 93 3C when the button is pressed and 83 3C when released.
This rule will convert that to CC 50 (hex 32) on channel 1:
8-92 3C = B0 32
When the button is pressed, it will generate CC 50 ON and when released CC 50 OFF
> - ability to set several note/CC remapping lines
Just repeat the above rule for each note/CC remapping you want
> - ability to set individually each line to toggle or momentary
It's already momentary (press = ON and release = OFF), but to do a toggle we have to apply a little bit of logic. Again with my example button and toggling the CC:
# toggle/latch IF LOAD ASS K0 = 92 3C # incoming note ASS K2 = B0 32 # outgoing CC ASS L0 = 7F # toggle flag END # match incoming note (press down) IF M0 == K0 K1 7F SND K2 K3 L0 # send outgoing CC MAT L0 = L0 ^ 7F # flip toggle END XX = XX +B
Make a new module for each toggle/latch and connect to Blue Velvet.
> - ability to set individually each line for separate ramp up/ramp down time values for CC; this will allow for cleaner and more natural audio behavior, for example toggle delay audio effect.
For this, I would recommend you use MidiFire's Robotic Knob module which will smoothly ramp the CC up and down in combination with a Stream Byter beforehand to latch the note event so that the one action makes it rise and fall alternately.
First, use the latch code above, but change this:
ASS K2 = B0 32 # outgoing CC
ASS K2 = 90 32 # outgoing note
So now our button A single press is generating note number 50 alternating between velocity 127 and 0.
Connect this up to a Robotic Knob, and change the following from the default configuration:
output CC : 50 output channel : 1 initial CC value : 0 output smoothing : Fine smoothing speed : Slow (or try Medium or Fast)
The Robotic Knob will then ramp up from 0 to 127 when you single tap button A and back down from 127 to 0 when you tap A again.
> - remapped midi notes blocking, I only need CC on output, and all other notes should be allowed
The Blue Velvet module by default blocks all incoming events. To have it pass on notes (as well as the CCs it generates) modify this (right at the bottom):
# block all incoming events XX = XX +B
# block all incoming events # (except note events which pass) NX = XX +C XX = XX +B
You will probably want to make the same change in the latching module above so that it also allows the notes to pass through.