|
Post by lukesleepwalker on Sept 15, 2018 17:20:55 GMT
What is the fastest way to map CC values 0-127 to 128 notes? (Both ons and offs)
|
|
nic
Soapbox Supremo
Troublemaker
Press any key to continue
Posts: 2,011
|
Post by nic on Sept 15, 2018 19:12:27 GMT
Hi lukesleepwalker , Something like this (CC # 7 as example): BX 07 = 9X X3 50 +C BX 07 = 8X X3 00 +C +D500Regards, Nic.
|
|
|
Post by lukesleepwalker on Sept 16, 2018 22:59:44 GMT
Great, thanks for this. In a situation where I'm using an XY pad and converting CC values to notes, is there a way to filter multiple notes that are generated by the width of a finger? That is, is there a smart way to calculate the middle value of incoming CC values and generate a single note that's roughly in the middle? Doesn't have to be precise...
|
|
nic
Soapbox Supremo
Troublemaker
Press any key to continue
Posts: 2,011
|
Post by nic on Sept 17, 2018 7:45:00 GMT
|
|
|
Post by lukesleepwalker on Sept 19, 2018 16:16:50 GMT
Yes, I think so but have to play with it a bit more as there are complexities that Josef was managing that I don't have. Thanks for the link, though.
|
|
|
Post by lukesleepwalker on Nov 11, 2018 19:47:47 GMT
Hi Nic, It has been a while, but I have read through the thread with Josef and it is going way over my head. I have a single axis that I am working on, which is essentially the X axis in Josef’s use case. I am successfully converting CC7 value to notes using this, as you suggested:
BX 07 = 9X X3 50 +C BX 07 = 8X X3 00 +C +D500
But, it sounds terrible because I get several notes at a time, as previously reported. Are you suggesting that I need a sub-array to create a single “averaged” note from the several that result from my fat finger on the X pad?
|
|
nic
Soapbox Supremo
Troublemaker
Press any key to continue
Posts: 2,011
|
Post by nic on Nov 11, 2018 20:27:39 GMT
Hi lukesleepwalker , Hmm, this was from quite some time ago. I'll have to check, but I think we added code to ignore CC values 'close by' to the currently sounding note. Let me get back to you tomorrow and see if I can come up with a cunning plan for this. Regards, Nic.
|
|
nic
Soapbox Supremo
Troublemaker
Press any key to continue
Posts: 2,011
|
Post by nic on Nov 11, 2018 21:48:27 GMT
Actually, try this:
IF LOAD # K0=length, K1=retrigger interval # (500ms, 200ms) ASS K0 = 1F4 C8
# L0 = elapsed time (+ T0 reset) ASS L0 = 0 T0 END
# handle CC IF MT == B0 # update elapsed time MAT L0 = L0 + T0
# if retrigger time has elapsed IF L0 > K1 # retain CC value in I1 ASS I1 = M2
# convert CC to note on MAT I0 = 90 + MC ASS M0 = I0 I1 50
# add delayed note off MAT I0 = 80 + MC SND I0 I1 00 +DK0
# reset elapsed timer ASS L0 = 0 END END BX = XX +B
Regards, Nic.
|
|
|
Post by lukesleepwalker on Nov 11, 2018 23:46:07 GMT
Thanks for the quick reply, Nic. Is that supposed to replace everything I have so far? If so, it does nothing. I just get CC7. If added to the CC to note conversion, I can't detect much difference. Still get multiple adjacent notes. Copy/paste and install rules.
|
|
nic
Soapbox Supremo
Troublemaker
Press any key to continue
Posts: 2,011
|
Post by nic on Nov 12, 2018 10:16:21 GMT
Hi lukesleepwalker, It was meant to replace, but I must have gotten something wrong. I just typed out my ideas rather than proving them and it has come back to bite me! I will test it out properly and fix this morning. Regards, Nic.
|
|
nic
Soapbox Supremo
Troublemaker
Press any key to continue
Posts: 2,011
|
Post by nic on Nov 12, 2018 10:51:52 GMT
Hi lukesleepwalker , OK, I had a couple of errors and also made a little refinement. This now works for me. I have fixed the code above, so replace the original rules with these. It is set to ignore CC messages received within a 200ms time interval from the current. You can adjust this interval (stored in K1). Regards, Nic.
|
|
|
Post by lukesleepwalker on Nov 12, 2018 13:40:59 GMT
The great news is that this works and delivers predictable results! The only downside is that it creates a bit of a gated effect when holding a note and even when playing rapid notes. I'd like to play with the time interval but I'm afraid I don't see the interval stored in K1. Can you point that out to me?
|
|
nic
Soapbox Supremo
Troublemaker
Press any key to continue
Posts: 2,011
|
Post by nic on Nov 12, 2018 13:48:14 GMT
Hi lukesleepwalker , Right at the top: # K0=length, K1=retrigger interval # (500ms, 200ms) ASS K0 = 1F4 C8To change the retrigger interval, modify that 'C8' (which is 200ms in hex) to a different value and press 'Install Rules'. Regards, Nic.
|
|
|
Post by lukesleepwalker on Nov 12, 2018 16:34:43 GMT
Right on, thank you. Playing with the interval allows for different approaches to responsiveness with the pad, which is great! Two further questions:
1. Is there a way to easily constrain the note range? Right now I've got 127 notes so it's hard to get "precise". Is there an easy way to limit it to C1 to C2 (for instance)?
2. Is there a way to not get the arp/gated effect when I hold my finger on a note? It would be better if, when I held my finger down on the surface it sustained the note, rather than getting the arp'd/gated effect I'm getting now.
Thanks for your help. I'm certainly getting better results than I've ever gotten from this pad, so appreciate it greatly!
|
|
nic
Soapbox Supremo
Troublemaker
Press any key to continue
Posts: 2,011
|
Post by nic on Nov 12, 2018 17:11:38 GMT
Hi lukesleepwalker, 1. Yes, we can constrain the notes. We could scale the CC's value to a note range for example. 2. The gate effect is the fixed note length and a retrigger - if we knew when you released your finger that would help solve all of that... Does this pad generate a CC with zero value when you release your finger? Regards, Nic.
|
|