robust identification of CursorDevice change

RELATED
PRODUCTS

Post

moss wrote: Tue Sep 06, 2022 7:08 pm Ah, I forgot that part. I did not mean to use RemoteControls but instead use the parameters from the SpecificDevice, which you would also need to lookup in advance.
Right--got it, thanks. When I first sat down with this I actually thought it would be better to use the RemoteControl pages, but I think it's better to leave those alone as they're perfectly suited for knobs-on-keyboards, MCU strips, etc. but clunky and limited if you want something that's closer to control-per-function.

Anyway, I'll keep working on the reliable device selection issue and report back! 90% is good enough to experiment with. Pretty soon I want to move on to the actual mapping, which is the fun part. Those Yaeltex endless encoders with color LCD ring are really wonderful, and you can pack 32 on a board with space to spare. Once they implement a text display (which they've said is in the works) it'll be a whole new world!

Post

Hi Guys,

Has anything changed with a way of getting an "Instance ID" for an instantiated plugin?

I have looked at the api and cannot see anything has been added.

Cheers

Andy
Bitwig, against the constitution.

Post

gc3 wrote: Tue Sep 06, 2022 7:02 am
I'll work up a code example soon and add it below.
Hi there,
I'm working on a script for 3 x MFT's and a touchscreen and have arrived at the point where I need to look into precisely what this thread is about.. instance IDs for devices.
I wonder if you have a code snippet of the reflection code (I tried to work it out from the earlier Scala example, but haven't the required knowledge to successfully do that).
It would be of immense help to me in helping to understand reflection.
Kind regards,
Leigh

Post

leighhunt wrote: Mon May 15, 2023 6:53 pm
gc3 wrote: Tue Sep 06, 2022 7:02 am
I'll work up a code example soon and add it below.
Hi there,
I'm working on a script for 3 x MFT's and a touchscreen and have arrived at the point where I need to look into precisely what this thread is about.. instance IDs for devices.
I wonder if you have a code snippet of the reflection code (I tried to work it out from the earlier Scala example, but haven't the required knowledge to successfully do that).
It would be of immense help to me in helping to understand reflection.
Kind regards,
Leigh
See here: https://www.youtube.com/watch?v=aElg7Fj ... 2&index=19

Post

Hi Jurgen,
Thanks for the swift response.
I have watched this (and all of your excellent videos) and correct if I am wrong, but this only identifies a device by type, and not by instance? This leads back to an earlier part of the thread where using reflection was advised against but seemingly implemented by gc3. I know the pitfalls of using reflection but am keen to prod around in code.
Kind regards,
Leigh

Post

leighhunt wrote: Mon May 15, 2023 7:30 pm Hi Jurgen,
Thanks for the swift response.
I have watched this (and all of your excellent videos) and correct if I am wrong, but this only identifies a device by type, and not by instance? This leads back to an earlier part of the thread where using reflection was advised against but seemingly implemented by gc3. I know the pitfalls of using reflection but am keen to prod around in code.
Kind regards,
Leigh
Ah, sorry, I read to quick. I am afraid that is not possible. Only thing you could do is to store its' position.
What is your use-case for this?

Post

moss wrote: Mon May 15, 2023 7:52 pm What is your use-case for this?
In short, I guess it would facilitate adding arbitrary data to specific instances of devices,.
It's a little convoluted, but I'll try to outline.

3 MFT's sit in a row under a 21" touchscreen (this runs a custom maxmsp gui app with displays for the MFT parameters, and a grid of buttons to select devices and navigate through the device heiracy.. devices, chains, layers, pads etc).
On the Bitwig side of things I use specific tags to be able to control 48 parameters in one remote bank. The more instances of tags, the more banks of parameters there are.
I would like to store bank indices for all devices - so when I return to a device the last used bank is active.
All of this is implementable in a static, non changing project setup, but as soon as the project has tracks or devices added, removed or moved I have no way of tracking the new device position and 'current parameter bank', resulting in returning to default bank indices.
The other reason is for a feature I would like to implement where I can enter a 'parameter play' mode where I can interact with parameters across the project and hit a 'return to original position' for all adjusted parameters, (I think Maschine has a similar feature). Storing, searching and recalling those values would be very difficult using the project heiracy.
Edit - the Machine-esque idea will probably be better done by assigning potential parameters to a project remote bank, hoping that soon access to that with the api will be implemented.

Regards,
Leigh

Post

leighhunt wrote: Mon May 15, 2023 8:12 pm
moss wrote: Mon May 15, 2023 7:52 pm What is your use-case for this?
In short, I guess it would facilitate adding arbitrary data to specific instances of devices,.
It's a little convoluted, but I'll try to outline.

3 MFT's sit in a row under a 21" touchscreen (this runs a custom maxmsp gui app with displays for the MFT parameters, and a grid of buttons to select devices and navigate through the device heiracy.. devices, chains, layers, pads etc).
On the Bitwig side of things I use specific tags to be able to control 48 parameters in one remote bank. The more instances of tags, the more banks of parameters there are.
I would like to store bank indices for all devices - so when I return to a device the last used bank is active.
All of this is implementable in a static, non changing project setup, but as soon as the project has tracks or devices added, removed or moved I have no way of tracking the new device position and 'current parameter bank', resulting in returning to default bank indices.
The other reason is for a feature I would like to implement where I can enter a 'parameter play' mode where I can interact with parameters across the project and hit a 'return to original position' for all adjusted parameters, (I think Maschine has a similar feature). Storing, searching and recalling those values would be very difficult using the project heiracy.
Edit - the Machine-esque idea will probably be better done by assigning potential parameters to a project remote bank, hoping that soon access to that with the api will be implemented.

Regards,
Leigh
1) For the banking question: sounds like remembering it for device type should be sufficient, or not?
2) For the 2nd idea: did you look at the new Project remote controls introduced in Bitwig 5?

Post

moss wrote: Mon May 15, 2023 9:39 pm 1) For the banking question: sounds like remembering it for device type should be sufficient, or not?
Admittedly, very few devices (mostly instruments) will actually have more than one bank of 48 parameters, and the chances of two such identical devices in a track is quite low. I think of a case scenario where one would have identical instruments with high parameter counts in nested layers, but probably not an issue anywhere else.
It would be extremely useful to have accessible device instance uuids.
Maybe I've spent too long programming in c++ for Reaper and am expecting a little too much from Bitwig scripting!
moss wrote: Mon May 15, 2023 9:39 pm 2) For the 2nd idea: did you look at the new Project remote controls introduced in Bitwig 5?
I did, it is actually the reason I have moved over to using Bitwig (especially the project modulators). I edited my above post when I realised I was thinking along the wrong branch.

On the subject of project remotes, and also track remotes. I haven't yet figured how to access either of them as of yet. I know you mentioned in another thread here that there will be a way to select them remotely eventually.

Thanks for the interaction Jurgen. It's helped clear a few cloudy thoughts on how to move forward.

Kind regards,
Leigh

Post

leighhunt wrote: Mon May 15, 2023 11:24 pm On the subject of project remotes, and also track remotes. I haven't yet figured how to access either of them as of yet. I know you mentioned in another thread here that there will be a way to select them remotely eventually.
I will do a video about it as soon as the final version 5 is out.

Post

moss wrote: Tue May 16, 2023 6:46 am I will do a video about it as soon as the final version 5 is out.
Top work Jurgen!
I figured out track remotes this morning. I can now switch from track remotes to device remotes using a hardware button.

Post

leighhunt wrote: Tue May 16, 2023 1:29 pm
moss wrote: Tue May 16, 2023 6:46 am I will do a video about it as soon as the final version 5 is out.
Top work Jurgen!
I figured out track remotes this morning. I can now switch from track remotes to device remotes using a hardware button.
thanks for joining the conversation leigh! please also send to bitwig the need for instance ids on both tracks and devices. this is pretty important i think to eliminate bugs where we cant reliably depend on name and cursor position if they happen to be the same.

also nice to see more MFT users using the API!
----------------------------------------------------------------------
http://instagram.com/kirkwoodwest/
http://soundcloud.com/kirkwoodwest

Post

Kirkwood West wrote: Tue May 16, 2023 4:40 pm thanks for joining the conversation leigh! please also send to bitwig the need for instance ids on both tracks and devices. this is pretty important i think to eliminate bugs where we cant reliably depend on name and cursor position if they happen to be the same.
nice to meet you.
I shall send a request... I won't hold my breath though, given past commentary!

also nice to see more MFT users using the API!
Your GitHub repo has helped me along the way. Many thanks for that.
Once I'm a bit further I'll work out how to get my stuff up on GitHub (I'm fairly new to Java, Maven, EclipseIDE and all that. I have a lot more experience in C programming in Maxmsp and C++ for Reaper, both in Xcode).
I'm pretty happy how quickly my script has come together so far, considering I'm conceptualising 'on the go' somewhat!

Post

leighhunt wrote: Tue May 16, 2023 6:36 pm Your GitHub repo has helped me along the way. Many thanks for that.
Once I'm a bit further I'll work out how to get my stuff up on GitHub (I'm fairly new to Java, Maven, EclipseIDE and all that. I have a lot more experience in C programming in Maxmsp and C++ for Reaper, both in Xcode).
I'm pretty happy how quickly my script has come together so far, considering I'm conceptualising 'on the go' somewhat!
awesome! sounds like you are very well on your way to success. I am a newish Java person and don't have a strong engineering background so I'm a bit embarrassed about my code! I will put some more up when I got something fresh! For now waiting for the bits to settle on the bitwig browser api to do a code clean out and comment sesh. :D
----------------------------------------------------------------------
http://instagram.com/kirkwoodwest/
http://soundcloud.com/kirkwoodwest

Post Reply

Return to “Controller Scripting”