I need now please to know how to change midi notes/channels in this code
# 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
As I need to remap for example button 4 Hold, button 3 single tap plus hold. I’ve changed notes code but I suppose midi channel music be set too to allow this to work?
Also, if I place the new latch module after blue velvet I’ve also to connect blue velvet to janosax custom for allow other notes to play. In that case monitoring shows CC message and initial midi note, in this case C3. So what I need is a streambyter code to place after janosax custom to block only midi note(s)/channel(s) I use to control CC.
These two lines change the incoming note event (from Blue Velvet) and the outgoing CC:
ASS K0 = 92 3C # incoming note ASS K2 = B0 32 # outgoing CC
As you know, the 4 buttons generate A=C3/3C, B=D3/3E, C=E3/40, D=F3/41 (from your code).
So change that 3C to 3E/40/41 depending upon whether you want button B, C or D
And each type of event appears on a different channel:
channel action ------------------------------------- 2 hold 3 single tap 4 single tap + hold 5 double tap 6 double tap + hold 7 triple tap
So, change that 92 to 9X for the type, where X is the number from the above table - 1 (eg. hold == 91)
The outgoing CC is similarly adjusted. Replace B0 with BX where X is the channel number less 1 in hex and replace 32 with the CC number in hex.
> Also, if I place the new latch module after blue velvet I’ve also to connect blue velvet to janosax custom for allow other notes to play. In that case monitoring shows CC message and initial midi note, in this case C3. So what I need is a streambyter code to place after janosax custom to block only midi note(s)/channel(s) I use to control CC.
Probably all you need to do in Janosax Custom is to remove the mappings that are being handled in the other module(s). However, if you want to block specific events in Janosax Custom you just pattern match them. For example to block Button A - Hold, add:
N1 3C = XX +B
and add similar lines for other Blue Velvet events you wish to block.
Still have some issues with robotic knobs version as sometimes it send ramp up, most of time only CC 127 and never ramp done. Still with button 4 hold and single tap + hold. I’ve followed your instructions but I may miss something.
I love how MidiFire can extend possibilities and customize everything to user needs. It’s a bit a hard learning curve concerning language, even if I know and understand what I wand/need to do, but you have been really helpful giving rules and explanations.
I love robotic knob speed settings, works so well with delays mix knobs in AUM. Now I can:
Triggers instrumental loops in Loopy HD with button A and B with up to 12 actions including effects if I need for example a bit crusher or delay on drums.
Trigger with button C record/overdub, toggle reverse, toggle fading, mute all, undo, clear all in blue Loopy version live saxes loops with individual pan settings.
Change VoicerackFX presets with round robin rules (I need only 4 on 5 presets bank), trigger on/off with adjustable ramp up/down up to 4 effects in AUM.
And I can do exactly the same thing with Ableton Live on laptop using rtpMIDI with midi over LAN-USB using shared iPhone connection.
So my two setups are unified and much much more powerful than before: very happy customer here, big thanks again :-)
> It’s a bit a hard learning curve concerning language, even if I know and understand what I wand/need to do
Actually, Stream Byter itself is really quite simple. It only has 4 directives (ASS/MAT/IF/SND), pattern matching and variables. There is not much to it.
If you have a good understanding of MIDI messages, then all that Stream Byter stuff makes much much more sense. My goto guide for MIDI messages is somascape - definitely worth getting a bit familiar with.
I use now MidiFire with BlueBoard everyday, it has really improved my live setup capabilities and works flawlessly!
Perhaps you can help me for something else I need with that MidiFire Scene. I use a double Loopy setup (one for backing loops one for audio recordings) which allows me to record audio in various loops slots with individual pan settings. This gives a nice pre-mix with loops placement in stereo field, allowing the solo part to be dominant in the live mix.
What I wish to do now is to use only one Loopy app using only one or two slots for audio, and to do some panning in Ableton Live with looper too.
In the Janosax Custom module, there is that round robin set of rules which can play different notes for effects presets triggering.
Is it possible to add some instructions for those 4 notes which allows for that:
If F4 G4 A4 B4 are played, send also random CC XX value between XX and XX.
Only one CC number is needed.
Random CC value should not be set two consecutive times, with a minimum of perhaps 5% difference (can be randomly more of course too) between them, and one time on first half value range next time on other half (for pan settings one time on the left one time on the right), and with a fixed dead center zone of perhaps 10%.
The desired behavior is that each time one of those 4 notes is played it also send a randomized CC value in a determined range. That way I could change effects presets via round robin notes but also trigger with random values pan setting on mixer channels sent to looper input channel, between for example 30% left 30% right, with the possibility of modifying all those values.
Hope this can be done, I’ve seen randomization is possible with Streambyter, I don’t know how complicated it can be, but I suppose it is.
Right at the bottom of Janosax Custom is this code which rewrites the notes when button D is pressed/double pressed:
IF M1 == 41 ASS M0 = MT KL0 END
To simply send a CC with a random value:
SND B0 23 R7F
Which will send CC 35 on channel 0 with a random value between 0 and 127.
A variable beginning with the letter 'R' will result in a random variable between 0 and the value that follows it.
The extra trick here is we need to send the CC *before* the note, so merging/adjusting both of the snippets above we get:
IF M1 == 41 ASS M0 = MT KL0
# send random CC first SND B0 23 R7F
# send the actual note SND M0 M1 M2
# block original note XX = XX +B END
This is just the basics. If you want to prevent the same random number occurring sequentially, minimum sequential random difference, specify a random range and parameterise the random ranges as you describe, then that requires more rules to massage the value passed to the R variable and afterwards. ;-)
The idea is to give a dead zone space in center to help sax solo part to be dominant: 5% on left 5% on right, for a total of 10% in the pan center where pan knob will never be triggered.
Dead zones are also needed on the extremes, but that can be done in the DAW easily via midi learn settings. This helps to center saxes loops in the stereo field.
Each time a pan value is triggered, that should be one time on left range and one time on right range. Because, with pure randomization, I can record three consecutive loops on the left or right, and it will not sound balanced in the mix. So the rules should allow to trigger alternatively on right and left, within authorized zones.
And each time a value is triggered on left or right it should not be the same value of previous one, this is to avoid phase issues. Two loops exactly on say 10 left will sound bad. So perhaps it’s possible to allow rules to set a minimum value difference between each left or right trigger, for example 3 or 5%. At the end of a cycle that can be a value already triggered, that’s not a problem.
See the Loopy screenshot above, there are 5, 10 , 15 ... up to 30 % alternatively on left and right. I usually record max 6 loops and erase everything and start recording new loops. If it’s more easy, rules could reproduce that, but randomization could be cool :-)
OK, that makes more sense to me now. Thanks for the explanation. Sounds like it would be best to create a separate module for the random panning that only triggers on specific notes (which in itself is probably best as a separate module) and feed this from the janosax custom.
Please leave this with me and I'll come back with a mergable scene to try out over the next few days..