Use an endless knob to cycle programe controls

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

is it possible ?

Hi,

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.

image

You can learn more about aliases from this tutorial.

Encoder-to-PC.bmtp (1.1 KB)

Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz

Hi, thanks !!
I just copy pasted this preset into my own master preset
Unfortunately, my knob is still transmitting cc 16 and not program changes

Maybe something to do with the routing ?
But the capture midi in the outgoing shows cc16 and no program change

Change the controller input trigger to MIDI channel 2 then.

Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz

Elephant_e2RQKscIjb

success !!!
Here is my script to divide midi cc 17 into 27 Program Changes

KS Expmap - Midi CC17 to PC x27.txt (8.2 KB)

this software is too good

Update 3 : Just one thing …
When I am using directly my Drum Pad to send a midi Program change message as following

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 ?

OK so you also need a bank change.

The following changes have been made

  • Instead of CC16, this example uses CC17
  • Instead of CH1, this example uses CH2
  • 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 the updated project file.

Encoder-to-Bank-PC.bmtp (1.4 KB)

Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz

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


Encoder-to-Bank-PC.bmtp (2.3 KB)

Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz
1 Like