Hi everyone. So I would like to be able to control my parameters within my DAW more smoothly with my controller. I have an Icon P1-M and I am using Cubase 12.
We can send out smoothed message but the resolution would not change, they would still be only 128 total values in the end. However if you use an endless relative encoders, we could create as many steps as we want.
Steve Caldwell
Bome Customer Care
Also available for paid consulting services: bome@sniz.biz
It depends on the capabilities of your controller. If you want, you can download the free trial copy of Bome MIDI Translator Pro (MT Pro). It is fully functional but times out every 20 minutes.
Then you can select your controller as input and open the log window. Check MIDI IN and then move your control on your MIDI controller.
Then copy and paste what you see. Turn the knob in one direction until the messages stop or are the same. Then turn it in the other direction.
Now even with that, it depends on how the application handles incoming MIDI messages so it would be helpful to know the application you are using. Also, I might be familiar with your controller so you you could tell me that as well, I might be able to assist better.
Steve Caldwell
Bome Customer Care
Also available for paid consulting services: bome@sniz.biz
OK,
Well I’m not sure if this would work with Cubase but I have attached a file which will convert 7 bit relative encoder (V-POT Type VPOT 1) to a 14 bit absolute encoder.
In the rules I’ve removed all acceleration (values greater than 1 in either direction). I use the global variable ‘ga’ to store the current absolute value of the simulated 14 bit CC.
Here are the rules:
// No accelleration in these rules
if qq>64 then tt=-1
if qq<64 then tt=1
// Add the new incoming value to ga
ga=ga+tt
// Don't let it go out of bounds
if ga<0 then ga=0
if ga>16384 then ga=16384
Before we continue I just want to applaud your service. Compared to other supports I’ve encountered, this is the best. Great, great job
So I think you did it? I have managed to detect it in Cubase and it takes for ever for a plugin to move - but that is because you’ve successfully created more values right?
And since you said you removed the acceleration, this also makes sense to me that it takes forever.
Is there a way to implement some acceleration or will this be impractical? I experimented with lowering the max value, and this is better. However, is there a limit for how low I can go? When entering 1000 as max value nothing happens within Cubase
Is the grey text where I am supposed to change? I am kinda lost here.
I think you are saying that this version is not scaled, but you have implemented a rule which allow me to scale it and how it scales is depending on what I fill in where the grey text is?
Anything starting with ‘//’ is a comment. Then changes need to be in the lines below. In the example I posted I added acceleration of 2x and applied scaling to 0-1000 already.
EDIT: Sorry, my scaling was 12x not 2X. I had a typo in the rule.
Steve Caldwell
Bome Customer Care
Also available for paid consulting services: bome@sniz.biz
Okey. So I have the posibility to change max value inside Cubase - is this something I should or should not do, when you implemented the max value in BOME already?
So currently I do not think It scales. When doing a half rotation very slowly versus very quickly results in no bigger changes, which it should by this time right?
I’ve not done anything to your project file, and in Cubase I have put the max to 1000
I may have read your instructions too quickly. Will re-read
Well it is not really acceleration. It is just multiplying the turn time a given value. If you want to keep acceleration, I can make another change and use the native acceleration of your controller.
This version retains the original acceleration of the incoming encoder. I took the scaling out and then just set the max output value to 1000.
I left the multiplier at 1 (no multiplication of incoming value).
Here are the rules:
// Set the negative value if > 0x40
// Subtract 0x40
if qq>64 then tt=qq-64
// Make it negative
if qq>64 then tt=tt*-1
// Positive
if qq<64 then tt=qq
// Show incoming value in log window
Log "Log incoming value is %tt%"
// Apply a multiplier (optional)
tt=tt*1
// Add the new incoming value to ga
ga=ga+tt
// Don't let it go out of bounds
// Set max value here
ss=1000
// Don't go out of bounds
if ga<0 then ga=0
if ga>ss then ga=ss
// Show message in log window
Log "Log outgoing value is %ga%"
I also added a preset (Init) to set the global value of ga to 0 at project opened or keystroke of ctrl(up). You can use translator 0.2 to handle other housekeeping rules if you would like as well or add translators with incoming Perform ‘Init’ to execute other actions.
Edit: Original upload had an error. Use this one instead: