Hello, I would like to use one of my endless knob on the arturia keylab keyboard to ‘cycle throught’ the program change messages ?
Sometimes I have to cycle through 4 program change messages, sometimes 27.
So I need something that send a ‘go to next program change’ every ‘x increment’
But I guess that’s not possible because how Bome would know how many program change there is on my selected track in my audio workstation
The attached project file will convert CC16 relative type 1 encoder to Program Change.
In rules, I set the max program number to 12 so the way it is setup if you turn right, it will cycle from PC0-PC12 and if you go over, it will go back to PC0. If you turn left, it will cycle from PC12-PC0 and if it goes under it will go back to PC12.
You might need to change the CC number for your liking. Also if the encoder has acceleration, if you turn the encoder too quickly, it will skip PC number.
Here is how I have my aliases set up. You will need to set it up to the physical devices you would like to use.
You can learn more about aliases from this tutorial.
My DAW actually record the keyswitch change during a record playback. But when using the Bome script to send Program Chance messages with my Knob, everything works but the Daw do not record that during record. It receives the correct Program Change message, it respond correctly, but It doesn’t record it, any idea ?
I set the minimum value to 17 and maximum value of 27 in rules.
I changed the rules to include MSB of 1 and LSB of 1
I restricted the incoming values to with min of 63 and max of 65 values
Here are the new rules:
// only look for range 63-65
if qq<63 then exit rules, skip outgoing action
if qq>65 then exit rules, skip outgoing action
// set up max PC here
pp=27
// set up min PC her
rr=17
qq=qq-64
ga=ga+qq
if ga<17 then ga=pp
if ga>pp then ga=rr
// msb in rr lsb in ss
rr=1
ss=1
// set bank msb
rr=ss<<7
// set bank lsb
rr=rr|ss
And you will need to set your endless encoder to a relative type 1 encoder and not an absolute encoder. It looks like in your example that you posted, that you have your encoder set up as an absolute encoder.]
If you want to use as an absolute encoder. I will have to change the rules further.
Here is a version that uses an absolute encoder for input. Only 1 translator required.
I also set the target MSB to 127 as you had in your illustration
Rules:
// set up max PC here
pp=27
// set up min PC her
rr=17
// output range
ss=pp-rr
ss=ss+1
// scale it
// output range
tt=qq*ss
//input range
tt=tt/128
// Add offset
tt=tt+rr
Log "Log Output value = %tt%"
// msb in rr lsb in ss
rr=127
ss=1
Log "Log MSB=%rr% LSB=%ss%"
// set bank msb
rr=ss<<7
// set bank lsb
rr=rr|ss