Remote Control API .NET Library

Dorico 4 included a new Remote Control API which allows a client app to communicate with Dorico over a web socket. I have created a library to abstract much of this in C#. The code is available at GitHub or as a NuGet package. Feedback, bug reports, and code contributions are welcome.

Happy hacking!

4 Likes

This is very intriguing. Can you show some use cases? How does it work?

It’s been used at least to program the latest versions of Notation Express— the streamdeck goes really way faster than before and keyboard shortcuts are no longer necessary for it to work.

If you look at Dorico’s application.log file you can see it echos all the internal commands Dorico uses whenever the user does something in the app. For example, opening a score generates a command “File.Open?File=”. Dorico’s API allows you to send most of these commands to be executed. (Some seem to be disabled such as “File.New”.) There are currently 994 commands. You can also query and set option values, of which there are 1,744.

Currently, the obvious use case is for a device like Stream Deck or to create batches of commands. This is not a proper plugin, so any UI will be external.

The big limitation at the moment is there is no way to query for contextual information. You can know what’s currently selected, but there’s no good way to get any info about the bar/staff/whatever that selection is in. Daniel has said there is desire to make the API more capable, but obviously that’s not much of a priority.

My next related project is to play with speech control via this library, but it took nearly 2 years to scrape up enough time to do this much, so it may be a while :slight_smile:

1 Like

Sounds amazing, I never knew so much was going on under the hood.

You might also want to check out @Alexander_Ploetz ConsoleTools: ConsoleTools Lua Framework | Alexander Plötz - Complete Services for Music Engraving and Music Texts

2 Likes

Thanks Scott!

Despite limited C# experience I got it to compile, and successfully manipulated the demo commands. I’m hoping to find the time to convert this library to node/typescript.

1 Like