Hi Dorico developers!
I’m trying to access score data from a Dorico score using the WebSocket Remote Control API. I’ve successfully:
- Connected to the WebSocket (port 4560)
- Completed the handshaking process
- Confirmed I can see Flow 1 exists (via
getstatus
which returns a flowslist
)
- Discovered available event types including
kNoteEvent
(via getlayouts
which returns a propertieslist
)
However, I can’t figure out how to actually get the note data from the score. I’ve tried:
getproperties
(returns status)
getflows
(returns status)
- Various library commands (
getlibraryentities
, getlibrarycollections
)
optionvalues
and getappinfo
The API documentation shows these message types exist, but I’m missing something fundamental about how to access the actual note events in the score.
Can anyone provide guidance on:
- How to access note data from a flow?
- Whether I need to use specific parameters with
getproperties
?
- If there’s a different approach entirely that I should be using?
Thanks for any help!
2 Likes
Hey Richard, welcome to the forum…

I know it’s not your first post, but still…
Just letting you know that the community here is somewhat cautiously excited about your project, me personally I already pre-ordered out of support for a forward-thinking guy… 

Seems you are already in touch with the right people (this not being a huge faceless corporation😌, quite the opposite actually, since John Barron forwarded your email to Daniel Spreadbury, who, as you know, is Dorico’s most senior developer and project manager)
Unfortunately, it seems that the NAMM show is keeping folks from getting back to you at the moment, but you’ll surely hear from some top dog pretty quickly!
Hang in there, a lot of people around here are rooting for ya… 
Cheers,
Benji
Oh, I know. I was really hoping hoping to bring cantai to NAMM this year, but didn’t quite make it. I can’t stop looking for a solution just in case they decide it’s not in their best interest, don’t have the resources, etc. You know?
Cheers!
It sounds like you might possibly be expecting the Remote Control interface to work like a generic scripting API… It isn’t that, it’s primarily there for programmable UI hardware. This means that the information you get from, say getproperties
is based on the current selection just as Dorico’s normal UI is, and if you want to “access note data” you’re going to have to select the note(s) you want by invoking Dorico’s existing selection commands.
Are those existing selection commands not part of the API?
There are two sorts of command you can send via the Remote Control API. There are commands that are specific to Remote Control, e.g. getproperties
, and then there are the “normal” Dorico commands that can also be triggered by key commands, by the jump bar, etc - things like EventEdit.NavigateLeft
.
Thanks for explaining the two types of commands! Is there a way to get a list of all the “normal” Dorico commands that can be triggered via the Remote Control API? I tried using getcommands but I’m not sure if I’m using it correctly.
If I remember correctly getcommands
gives you a list of all the commands that are currently available, so that will exclude commands that are disabled due to your current selection/mode/etc. I’m not sure whether there’s a list anywhere of all the Dorico commands. A good start is to look in the default key commands file (C:\Program Files\Steinberg\Dorico 5\keycommands_en.json
), or to have a look at your application log (%appdata%\Steinberg\Dorico 5\application.log
) after you’ve been using some commands of interest within Dorico itself.
1 Like
In short, you can’t. That information is not exposed at this time. You can make some inferences on what is selected based on status message values, such as if what is selected has a duration. Which might seem odd as you can get the values that appear in the properties pane but not values such as pitch. And to be clear the duration the status is returning is not (I suspect) the duration of the selected item, but the duration selection in the left pane.
Communication through the API is pretty much one directional at this point. You can issue almost any command and query the values of options and properties, but nothing useful from the score itself.
My limited discussions with Daniel suggest there’s a desire to add to the API, but it’s a low priority at this point, which I honestly can’t fault the team for.
(And because I know Daniel will read this, I just want to mention that my current contract as a developer is up at the end of June… just saying
)
[insert clever, driving reply that is sure to motivate Steinberg to have an IBM-deciding-to-sell-their-own-PCs moment here] 
3 Likes